Skip to content

Fix scala steward CI #2376

Fix scala steward CI

Fix scala steward CI #2376

Workflow file for this run

name: CI
env:
JDK_JAVA_OPTIONS: -XX:+PrintCommandLineFlags -Xms6G -Xmx6G # JDK_JAVA_OPTIONS is _the_ env. variable to use for modern Java
SBT_OPTS: -XX:+PrintCommandLineFlags -Xms6G -Xmx6G # Needed for sbt
NODE_OPTIONS: --max_old_space_size=6144
on:
pull_request:
push:
branches: ['series/2.x']
release:
types:
- published
jobs:
lint:
runs-on: ubuntu-22.04
timeout-minutes: 60
steps:
- name: Checkout current branch
uses: actions/checkout@v4.2.2
with:
fetch-depth: 0
- name: Setup Java
uses: actions/setup-java@v4.5.0
with:
distribution: temurin
java-version: 17
check-latest: true
- name: Cache scala dependencies
uses: coursier/cache-action@v6
- name: Set Swap Space
uses: pierotofy/set-swap-space@master
with:
swap-size-gb: 7
- name: Lint code
run: ./sbt check
compile:
runs-on: ubuntu-22.04
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
java: ['17']
platform: ['JVM', 'JS', 'Native']
steps:
- name: Checkout current branch
uses: actions/checkout@v4.2.2
- name: Setup Java
uses: actions/setup-java@v4.5.0
with:
distribution: temurin
java-version: 17
check-latest: true
- name: Cache scala dependencies
uses: coursier/cache-action@v6
- name: Set Swap Space
uses: pierotofy/set-swap-space@master
with:
swap-size-gb: 7
- name: Check all code compiles
run: free --si -tmws 10 & ./sbt +root${{ matrix.platform }}/Test/compile
publishLocal:
runs-on: ubuntu-22.04
timeout-minutes: 60
steps:
- name: Checkout current branch
uses: actions/checkout@v4.2.2
- name: Setup Java
uses: actions/setup-java@v4.5.0
with:
distribution: temurin
java-version: 11 # ensure it works on 11 because we publish for 11
check-latest: true
- name: Setup NodeJs
uses: actions/setup-node@v4
with:
node-version: 20.x
registry-url: https://registry.npmjs.org
- name: Cache scala dependencies
uses: coursier/cache-action@v6
- name: Set Swap Space
uses: pierotofy/set-swap-space@master
with:
swap-size-gb: 7
- name: Check that building packages works
run: ./sbt +publishLocal
- name: Check website build process
run: sbt docs/clean; sbt docs/buildWebsite
test:
runs-on: ubuntu-22.04
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
scala: ['2.12.*', '2.13.*', '3.*']
java: ['17']
platform: ['JVM']
steps:
- name: Checkout current branch
uses: actions/checkout@v4.2.2
with:
fetch-depth: 0
- name: Setup Java
uses: actions/setup-java@v4.5.0
with:
distribution: temurin
java-version: ${{ matrix.java }}
check-latest: true
- name: Cache scala dependencies
uses: coursier/cache-action@v6
- name: Set Swap Space
uses: pierotofy/set-swap-space@master
with:
swap-size-gb: 7
- name: tests 2.12
if: ${{ startsWith(matrix.scala, '2.12.') }}
run: free --si -tmws 10 & ./sbt ++${{ matrix.scala }} root212/test
- name: tests 2.13
if: ${{ startsWith(matrix.scala, '2.13.') }}
run: free --si -tmws 10 & ./sbt ++${{ matrix.scala }} root213/test
- name: tests 3
if: ${{ startsWith(matrix.scala, '3.') }}
run: free --si -tmws 10 & ./sbt ++${{ matrix.scala }} root3/test
testJvms:
runs-on: ubuntu-22.04
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
java: ['11', '17', '21']
platform: ['JVM']
steps:
- name: Checkout current branch
uses: actions/checkout@v4.2.2
- name: Setup Java
uses: actions/setup-java@v4.5.0
with:
distribution: temurin
java-version: ${{ matrix.java }}
check-latest: true
- name: Cache scala dependencies
uses: coursier/cache-action@v6
- name: Set Swap Space
uses: pierotofy/set-swap-space@master
with:
swap-size-gb: 7
- name: Test on different JVM versions
run: ./sbt root${{ matrix.platform }}/test
testPlatforms:
runs-on: ubuntu-22.04
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
java: ['17']
platform: ['JS', 'Native']
steps:
- name: Checkout current branch
uses: actions/checkout@v4.2.2
- name: Setup Java
uses: actions/setup-java@v4.5.0
with:
distribution: temurin
java-version: ${{ matrix.java }}
check-latest: true
- name: Cache scala dependencies
uses: coursier/cache-action@v6
- name: Set Swap Space
uses: pierotofy/set-swap-space@master
with:
swap-size-gb: 7
- name: Test on different Scala target platforms
run: ./sbt test${{ matrix.platform }}
update-readme:
name: Update README
runs-on: ubuntu-latest
continue-on-error: false
if: ${{ github.event_name == 'push' }}
steps:
- name: Git Checkout
uses: actions/checkout@v4.2.2
with:
fetch-depth: '0'
- name: Setup Scala
uses: actions/setup-java@v4.5.0
with:
distribution: temurin
java-version: '17'
check-latest: true
- name: Cache Dependencies
uses: coursier/cache-action@v6
- name: Generate Readme
run: sbt docs/generateReadme
- name: Commit Changes
run: |
git config --local user.email "zio-assistant[bot]@users.noreply.github.com"
git config --local user.name "ZIO Assistant"
git add README.md
git commit -m "Update README.md" || echo "No changes to commit"
- name: Generate Token
id: generate-token
uses: zio/generate-github-app-token@v1.0.0
with:
app_id: ${{ secrets.APP_ID }}
app_private_key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@v7.0.5
with:
body: |-
Autogenerated changes after running the `sbt docs/generateReadme` command of the [zio-sbt-website](https://zio.dev/zio-sbt) plugin.
I will automatically update the README.md file whenever there is new change for README.md, e.g.
- After each release, I will update the version in the installation section.
- After any changes to the "docs/index.md" file, I will update the README.md file accordingly.
branch: zio-sbt-website/update-readme
commit-message: Update README.md
token: ${{ steps.generate-token.outputs.token }}
delete-branch: true
title: Update README.md
- name: Approve PR
if: ${{ steps.cpr.outputs.pull-request-number }}
run: gh pr review "$PR_URL" --approve
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_URL: ${{ steps.cpr.outputs.pull-request-url }}
- name: Enable Auto-Merge
if: ${{ steps.cpr.outputs.pull-request-number }}
run: gh pr merge --auto --squash "$PR_URL" || gh pr merge --squash "$PR_URL"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_URL: ${{ steps.cpr.outputs.pull-request-url }}
ci:
if: always()
runs-on: ubuntu-22.04
needs: [lint, compile, publishLocal, test, testJvms, testPlatforms]
steps:
- uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
publish:
runs-on: ubuntu-22.04
timeout-minutes: 60
needs: [ci]
if: github.event_name != 'pull_request'
steps:
- name: Checkout current branch
uses: actions/checkout@v4.2.2
with:
fetch-depth: 0
- name: Setup Java
uses: actions/setup-java@v4.5.0
with:
distribution: temurin
java-version: 11 # publish for 11
check-latest: true
- name: Cache scala dependencies
uses: coursier/cache-action@v6
- name: Set Swap Space
uses: pierotofy/set-swap-space@master
with:
swap-size-gb: 7
- name: Release artifacts
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 }}
release-docs:
name: Release Docs
runs-on: ubuntu-latest
continue-on-error: false
needs:
- publish
if: ${{ ((github.event_name == 'release') && (github.event.action == 'published')) || (github.event_name == 'workflow_dispatch') }}
steps:
- name: Git Checkout
uses: actions/checkout@v4.2.2
with:
fetch-depth: '0'
- name: Setup Scala
uses: actions/setup-java@v4.5.0
with:
distribution: temurin
java-version: '11'
check-latest: true
- name: Cache Dependencies
uses: coursier/cache-action@v6
- name: Setup NodeJs
uses: actions/setup-node@v4
with:
node-version: 20.x
registry-url: https://registry.npmjs.org
- name: Publish Docs to NPM Registry
run: sbt docs/publishToNpm
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
notify-docs-release:
name: Notify Docs Release
runs-on: ubuntu-latest
continue-on-error: false
needs:
- release-docs
if: ${{ (github.event_name == 'release') && (github.event.action == 'published') }}
steps:
- name: Git Checkout
uses: actions/checkout@v4.2.2
with:
fetch-depth: '0'
- name: notify the main repo about the new release of docs package
run: |
PACKAGE_NAME=$(cat docs/package.json | grep '"name"' | awk -F'"' '{print $4}')
PACKAGE_VERSION=$(npm view $PACKAGE_NAME version)
curl -L \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token ${{ secrets.PAT_TOKEN }}"\
https://api.github.com/repos/zio/zio/dispatches \
-d '{
"event_type":"update-docs",
"client_payload":{
"package_name":"'"${PACKAGE_NAME}"'",
"package_version": "'"${PACKAGE_VERSION}"'"
}
}'