Skip to content

Merge pull request #2500 from tgodzik/release-2.0.5 #3342

Merge pull request #2500 from tgodzik/release-2.0.5

Merge pull request #2500 from tgodzik/release-2.0.5 #3342

Workflow file for this run

name: Continuous Integration
on:
push:
tags:
- v1.*
- v2.*
branches:
- main
pull_request:
jobs:
scalafmt:
name: Formatting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: graalvm/setup-graalvm@v1
with:
version: '22.3.0'
java-version: '17'
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Check formatting
run: ./bin/scalafmt --test
integrations:
name: Build integrations tests
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macOS-13]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: graalvm/setup-graalvm@v1
with:
version: '22.3.0'
java-version: '17'
github-token: ${{ secrets.GITHUB_TOKEN }}
- uses: sbt/setup-sbt@v1
- uses: coursier/cache-action@v6
- name: Tests
run: sbt "sbtBloop/publishLocal; sbtBloop/scripted"
shell: bash
bridges:
name: Test platform bridges
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macOS-13, macOS-14]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: sbt/setup-sbt@v1
- uses: coursier/cache-action@v6
- uses: graalvm/setup-graalvm@v1
with:
version: '22.3.0'
java-version: '17'
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Tests
run: |
sbt \
"jsBridge06/publishLocal; \
jsBridge1/publishLocal; \
nativeBridge04/publishLocal; \
nativeBridge05/publishLocal"
sbt jsBridge1/test
sbt jsBridge06/test
sbt nativeBridge05/test
sbt nativeBridge04/test
shell: bash
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macOS-13, macOS-14]
jdk: ["22.3.0", "17"]
name: Test ${{ matrix.os }} -- ${{ matrix.jdk }}
env:
HYDRA_LICENSE: ${{ secrets.HYDRA_LICENSE }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- uses: coursier/setup-action@v1
with:
jvm: 'temurin:17'
if: matrix.jdk == '17'
- uses: graalvm/setup-graalvm@v1
with:
version: ${{ matrix.jdk }}
java-version: '17'
if: matrix.jdk == '22.3.0'
- uses: coursier/cache-action@v6
- uses: sbt/setup-sbt@v1
- uses: actions/setup-node@v4
with:
node-version: "16"
- name: Set up environment
run: |
curl -Lo coursier https://git.io/coursier-cli && chmod +x coursier && ./coursier --help
yarn --help
java -version
[[ $HYDRA_LICENSE == floating-key=* ]] && mkdir -p $HOME/.triplequote && echo "$HYDRA_LICENSE" > "$HOME/.triplequote/hydra.license" || echo "Hydra license file was not created"
shell: bash
- name: Compile and test main projects
run: |
sbt \
"frontend/test:compile; \
backend/test; \
docs/compile; \
bloopRifle/test; \
frontend/testOnly bloop.ScalaVersionsSpec; \
frontend/testOnly -bloop.ScalaVersionsSpec; \
frontend/runMain bloop.util.CommandsDocGenerator --test; \
frontend/runMain bloop.util.CommandsDocGenerator --out ../docs/cli/reference.md"
shell: bash
publish-binaries:
name: Publish binaries for ${{ matrix.os }}
runs-on: ${{ matrix.os }}
if: github.event_name == 'push'
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, macOS-13, macOS-14, windows-latest]
include:
- os: ubuntu-20.04
artifact: bloop-linux
- os: macOS-13
artifact: bloop-macos
- os: macos-14
artifact: bloop-macos-m1
- os: windows-latest
artifact: bloop-windows
env:
CI: true
SKIP_TEST_RESOURCES_GENERATION: true
GITHUB_DEPLOY_KEY: ${{ secrets.GITHUB_DEPLOY_KEY }}
BLOOPOID_GITHUB_TOKEN: ${{ secrets.BLOOPOID_GITHUB_TOKEN }}
ARTIFACT_NAME: ${{ matrix.artifact }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- uses: graalvm/setup-graalvm@v1
with:
version: '22.3.0'
java-version: '17'
components: 'native-image'
native-image-job-reports: 'true'
github-token: ${{ secrets.GITHUB_TOKEN }}
- uses: sbt/setup-sbt@v1
- name: Publish GraalVM Native artifacts
run: sbt "cli/graalvm-native-image:packageBin"
- name: Copy artifacts (windows)
if: matrix.os == 'windows-latest'
run: |
echo $ARTIFACT_NAME
ls cli/target/graalvm-native-image/bloop-cli.exe
mkdir -p bloop-artifacts
cp cli/target/graalvm-native-image/bloop-cli.exe bloop-artifacts/$ARTIFACT_NAME
shell: bash
- name: Copy artifacts (not windows)
if: matrix.os != 'windows-latest'
run: |
ls cli/target/graalvm-native-image/bloop-cli
echo $ARTIFACT_NAME
mkdir -p bloop-artifacts
cp cli/target/graalvm-native-image/bloop-cli bloop-artifacts/$ARTIFACT_NAME
- uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact }}
path: bloop-artifacts/${{ matrix.artifact }}
release:
name: Release version on ${{ matrix.os }}
needs:
- publish-binaries
runs-on: ${{ matrix.os }}
if: github.event_name == 'push'
strategy:
fail-fast: true
matrix:
os: [ubuntu-20.04]
env:
CI: true
SKIP_TEST_RESOURCES_GENERATION: true
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
PGP_SECRET: ${{ secrets.PGP_SECRET }}
GITHUB_DEPLOY_KEY: ${{ secrets.GITHUB_DEPLOY_KEY }}
BLOOPOID_GITHUB_TOKEN: ${{ secrets.BLOOPOID_GITHUB_TOKEN }}
BLOOPOID_SSH_PUBLIC_KEY: ${{ secrets.BLOOPOID_SSH_PUBLIC_KEY }}
BLOOPOID_SSH_PRIVATE_KEY: ${{ secrets.BLOOPOID_SSH_PRIVATE_KEY }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- uses: coursier/setup-action@v1
with:
jvm: 'temurin:17'
- uses: sbt/setup-sbt@v1
- uses: actions/setup-node@v4
with:
node-version: "16"
- name: Download built GraalVM binaries
uses: actions/download-artifact@v4
with:
path: bloop-artifacts
- name: Set up environment
run: |
curl -Lo coursier https://git.io/coursier-cli && chmod +x coursier && ./coursier --help
yarn --help
shell: bash
- name: Publish docs and binaries to Maven Central
run: |
yarn install
touch ~/.profile
git config --global user.name "Bloopoid"
git config --global user.email "[email protected]"
git config --global push.default simple
ls -al bloop-artifacts
readlink -f bloop-artifacts
sbt ci-release
shell: bash
- name: Cut GitHub release and update installers on ${{ matrix.os }}
run: |
if [[ $GITHUB_REF == "refs/tags"* ]]; then
. bin/ci-setup-bloopoid-keys.sh
export GITHUB_TOKEN="$BLOOPOID_GITHUB_TOKEN"
sbt "frontend/updateHomebrewFormula; frontend/updateScoopFormula; frontend/githubRelease"
else
echo "skipping release since this is a merge and no new tag is detected"
fi