Skip to content

Update sbt-ci-release to 1.8.0 #3642

Update sbt-ci-release to 1.8.0

Update sbt-ci-release to 1.8.0 #3642

Workflow file for this run

name: Main
on:
push:
branches: [main]
tags: [v*]
pull_request: {}
workflow_dispatch: {}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-22.04
timeout-minutes: 5
name: Scala Build
outputs:
version: ${{ steps.save-version.outputs.version }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: coursier/setup-action@v1
with:
jvm: adoptium:1.21.0.2
apps: sbt
- name: Cache SBT
uses: actions/cache@v4
with:
path: |
~/.ivy2/cache
~/.cache/coursier
~/.sbt
key: ${{ runner.os }}-sbt-${{ hashFiles('**/*.sbt') }}
- name: Cache Build Files
uses: actions/cache@v4
with:
path: |
**/target
key: ${{ runner.os }}-build-${{ github.sha }}
- name: Build
run: sbt compile js/fullLinkJS cli/assembly
- id: save-version
name: Save Version
run: |
version="$(sbt --error "print coreJVM/releaseVersion" | head -n1)"
echo -n "version=$version"
echo -n "version=$version" >> $GITHUB_OUTPUT
- uses: actions/upload-artifact@v4
with:
path: modules/recheck-js/target/scala-2.13/recheck-js-opt/recheck.js
name: recheck.js
- uses: actions/upload-artifact@v4
with:
path: modules/recheck-cli/target/scala-2.13/recheck.jar
name: recheck.jar
scala-lint:
needs: [build]
runs-on: ubuntu-22.04
timeout-minutes: 5
name: Scala Lint
steps:
- uses: actions/checkout@v4
- uses: coursier/setup-action@v1
with:
jvm: adoptium:1.21.0.2
apps: sbt
- name: Cache SBT
uses: actions/cache@v4
with:
path: |
~/.ivy2/cache
~/.cache/coursier
~/.sbt
key: ${{ runner.os }}-sbt-${{ hashFiles('**/*.sbt') }}
- name: Cache Build Files
uses: actions/cache@v4
with:
path: |
**/target
key: ${{ runner.os }}-build-${{ github.sha }}
- name: Lint
run: sbt scalafmtCheckAll scalafmtSbtCheck 'scalafixAll --check'
node-lint:
runs-on: ubuntu-22.04
timeout-minutes: 5
name: Node Lint
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'yarn'
- name: Install
run: yarn install --frozen-lockfile
- name: Lint
run: |
yarn lerna run lint
- name: Type Check
run: |
yarn lerna run typecheck
scala-test:
runs-on: ubuntu-22.04
timeout-minutes: 5
name: Scala Test
steps:
- uses: actions/checkout@v4
- uses: coursier/setup-action@v1
with:
jvm: adoptium:1.21.0.2
apps: sbt
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'yarn'
- name: Cache SBT
uses: actions/cache@v4
with:
path: |
~/.ivy2/cache
~/.cache/coursier
~/.sbt
key: ${{ runner.os }}-sbt-${{ hashFiles('**/*.sbt') }}
- name: Test
run: sbt coverage test coverageAggregate
- uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
node-test:
needs: [build, node-lint]
runs-on: ubuntu-22.04
timeout-minutes: 5
strategy:
matrix:
node: [ 18, 20, 21 ]
name: Node v${{ matrix.node }} Test
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: 'yarn'
- name: Install
run: yarn install --frozen-lockfile
- uses: actions/download-artifact@v4
with:
name: recheck.js
path: modules/recheck-js/target/scala-2.13/recheck-js-opt/
- uses: actions/download-artifact@v4
with:
name: recheck.jar
path: modules/recheck-cli/target/scala-2.13/
- name: Build
run: yarn lerna run build
- name: Test
# It needs two `--` actually: one is for Yarn and the latter is for Lerna.
run: yarn lerna run test -- -- --coverage
- uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
native-build:
needs: [build]
if: github.ref_name == 'main' || startsWith(github.ref, 'refs/tags/')
strategy:
fail-fast: false
matrix:
os: [macos-12, macos-14, ubuntu-22.04, windows-2022]
include:
- os: macos-12
artifact_filename: recheck-darwin-x64
local_path: modules/recheck-cli/target/native-image/recheck
- os: macos-14
artifact_filename: recheck-darwin-arm64
local_path: modules/recheck-cli/target/native-image/recheck
- os: ubuntu-22.04
artifact_filename: recheck-linux-x64
local_path: modules/recheck-cli/target/native-image/recheck
- os: windows-2022
artifact_filename: recheck-win32-x64.exe
local_path: modules/recheck-cli/target/native-image/recheck.exe
runs-on: ${{ matrix.os }}
timeout-minutes: 5
name: Scala Build (Native Binary)
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: coursier/setup-action@v1
with:
jvm: adoptium:1.21.0.2
apps: sbt
- name: Cache SBT
uses: actions/cache@v4
with:
path: |
~/.ivy2/cache
~/.cache/coursier
~/.sbt
key: ${{ runner.os }}-sbt-${{ hashFiles('**/*.sbt') }}
- name: Cache Build Files
uses: actions/cache@v4
with:
path: |
**/target
key: ${{ runner.os }}-build-${{ github.sha }}
- if: matrix.os != 'windows-2022'
run: sbt cli/nativeImage
- if: matrix.os == 'windows-2022'
name: Run sbt cli/nativeImage
shell: cmd
run: >-
"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" && sbt cli/nativeImage
- uses: actions/upload-artifact@v4
with:
path: ${{ matrix.local_path }}
name: ${{ matrix.artifact_filename }}
maven-release:
needs: [build, scala-test]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-22.04
timeout-minutes: 5
name: Publish to Maven Central
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: coursier/setup-action@v1
with:
jvm: adoptium:1.21.0.2
apps: sbt
- name: Cache SBT
uses: actions/cache@v4
with:
path: |
~/.ivy2/cache
~/.cache/coursier
~/.sbt
key: ${{ runner.os }}-sbt-${{ hashFiles('**/*.sbt') }}
- name: Cache Build Files
uses: actions/cache@v4
with:
path: |
**/target
key: ${{ runner.os }}-build-${{ github.sha }}
- name: Publish
run: sbt ci-release
env:
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
PGP_SECRET: ${{ secrets.PGP_SECRET }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
npm-release:
needs: [build, native-build, node-test]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-22.04
timeout-minutes: 5
name: Publish to NPM
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: coursier/setup-action@v1
with:
jvm: adoptium:1.21.0.2
apps: sbt
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'yarn'
registry-url: 'https://registry.npmjs.org'
- name: Cache SBT
uses: actions/cache@v4
with:
path: |
~/.ivy2/cache
~/.cache/coursier
~/.sbt
key: ${{ runner.os }}-sbt-${{ hashFiles('**/*.sbt') }}
- name: Cache Build Files
uses: actions/cache@v4
with:
path: |
**/target
key: ${{ runner.os }}-build-${{ github.sha }}
- name: Install
run: yarn install --frozen-lockfile
- uses: actions/download-artifact@v4
with:
name: recheck.js
path: modules/recheck-js/target/scala-2.13/recheck-js-opt/
- uses: actions/download-artifact@v4
with:
name: recheck.jar
path: packages/recheck-jar/
- uses: actions/download-artifact@v4
with:
name: recheck-darwin-x64
path: packages/recheck-macos-x64/
- uses: actions/download-artifact@v4
with:
name: recheck-darwin-arm64
path: packages/recheck-macos-arm64/
- uses: actions/download-artifact@v4
with:
name: recheck-linux-x64
path: packages/recheck-linux-x64/
- uses: actions/download-artifact@v4
with:
name: recheck-win32-x64.exe
path: packages/recheck-windows-x64/
- name: Build
run: NODE_ENV=production yarn lerna run build
- name: Publish (beta)
if: contains(github.ref, '-beta')
run: yarn lerna publish --dist-tag next ${{ needs.build.outputs.version }} --yes
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Publish
if: "!contains(github.ref, '-beta')"
run: yarn lerna publish ${{ needs.build.outputs.version }} --yes
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
release:
needs: [maven-release, npm-release]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-22.04
timeout-minutes: 5
name: Publish GitHub Release
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: recheck.jar
path: packages/recheck-jar/
- uses: actions/download-artifact@v4
with:
name: recheck-darwin-x64
path: packages/recheck-macos-x64/
- uses: actions/download-artifact@v4
with:
name: recheck-darwin-arm64
path: packages/recheck-macos-arm64/
- uses: actions/download-artifact@v4
with:
name: recheck-linux-x64
path: packages/recheck-linux-x64/
- uses: actions/download-artifact@v4
with:
name: recheck-win32-x64.exe
path: packages/recheck-windows-x64/
- name: Rename files
run: |
mv packages/recheck-jar/recheck.jar recheck.jar
mv packages/recheck-macos-x64/recheck recheck-macos-x64
mv packages/recheck-macos-arm64/recheck recheck-macos-arm64
mv packages/recheck-linux-x64/recheck recheck-linux-x64
mv packages/recheck-windows-x64/recheck.exe recheck-windows-x64.exe
- name: Release
uses: softprops/action-gh-release@v2
with:
files: |
recheck.jar
recheck-macos-x64
recheck-macos-arm64
recheck-linux-x64
recheck-windows-x64.exe
gh-pages-build:
needs: [build]
if: github.ref_name == 'main'
runs-on: ubuntu-22.04
timeout-minutes: 5
name: Build website
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'yarn'
- uses: actions/download-artifact@v4
with:
name: recheck.js
path: modules/recheck-js/target/scala-2.13/recheck-js-opt/
- name: Install
run: yarn install --frozen-lockfile
- name: Build
run: |
NODE_ENV=production yarn workspace recheck build
RECHECK_VERSION=${{ needs.build.outputs.version }} yarn workspace website doc
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v3
with:
path: website/build
gh-pages-deploy:
needs: [gh-pages-build]
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
timeout-minutes: 5
name: Deploy to GitHub Pages
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4