aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/ci.yml
diff options
context:
space:
mode:
authorAmir Saeid <amir@glgdgt.com>2026-02-08 22:52:14 +0000
committerAmir Saeid <amir@glgdgt.com>2026-02-08 22:52:14 +0000
commit21cd15d7a259e3ada2401e2585455587a56bdfbd (patch)
treea99117c5eb8f86c21132f5541b65c7cf393b0354 /.github/workflows/ci.yml
first commit
Diffstat (limited to '.github/workflows/ci.yml')
-rw-r--r--.github/workflows/ci.yml281
1 files changed, 281 insertions, 0 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..e29033a
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,281 @@
+# This file was automatically generated by sbt-github-actions using the
+# githubWorkflowGenerate task. You should add and commit this file to
+# your git repository. It goes without saying that you shouldn't edit
+# this file by hand! Instead, if you wish to make changes, you should
+# change your sbt build configuration to revise the workflow description
+# to meet your needs, then regenerate this file.
+
+name: Continuous Integration
+
+on:
+ pull_request:
+ branches: ['**', '!update/**', '!pr/**']
+ push:
+ branches: ['**', '!update/**', '!pr/**']
+ tags: [v*]
+
+env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+
+concurrency:
+ group: ${{ github.workflow }} @ ${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ build:
+ name: Test
+ strategy:
+ matrix:
+ os: [ubuntu-22.04]
+ scala: [2.13, 3]
+ java: [temurin@8]
+ project: [rootJS, rootJVM]
+ runs-on: ${{ matrix.os }}
+ timeout-minutes: 60
+ steps:
+ - name: Checkout current branch (full)
+ uses: actions/checkout@v6
+ with:
+ fetch-depth: 0
+
+ - name: Setup sbt
+ uses: sbt/setup-sbt@v1
+
+ - name: Setup Java (temurin@8)
+ id: setup-java-temurin-8
+ if: matrix.java == 'temurin@8'
+ uses: actions/setup-java@v5
+ with:
+ distribution: temurin
+ java-version: 8
+ cache: sbt
+
+ - name: sbt update
+ if: matrix.java == 'temurin@8' && steps.setup-java-temurin-8.outputs.cache-hit == 'false'
+ run: sbt +update
+
+ - name: Check that workflows are up to date
+ run: sbt githubWorkflowCheck
+
+ - name: Check headers and formatting
+ if: matrix.java == 'temurin@8' && matrix.os == 'ubuntu-22.04'
+ run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' headerCheckAll scalafmtCheckAll 'project /' scalafmtSbtCheck
+
+ - name: Check scalafix lints
+ if: matrix.java == 'temurin@8' && matrix.os == 'ubuntu-22.04'
+ run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' 'scalafixAll --check'
+
+ - name: scalaJSLink
+ if: matrix.project == 'rootJS'
+ run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' Test/scalaJSLinkerResult
+
+ - name: Test
+ run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' test
+
+ - name: Check binary compatibility
+ if: matrix.java == 'temurin@8' && matrix.os == 'ubuntu-22.04'
+ run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' mimaReportBinaryIssues
+
+ - name: Generate API documentation
+ if: matrix.java == 'temurin@8' && matrix.os == 'ubuntu-22.04'
+ run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' doc
+
+ - name: Make target directories
+ if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main')
+ run: mkdir -p core/.js/target core/.jvm/target project/target
+
+ - name: Compress target directories
+ if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main')
+ run: tar cf targets.tar core/.js/target core/.jvm/target project/target
+
+ - name: Upload target directories
+ if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main')
+ uses: actions/upload-artifact@v5
+ with:
+ name: target-${{ matrix.os }}-${{ matrix.java }}-${{ matrix.scala }}-${{ matrix.project }}
+ path: targets.tar
+
+ publish:
+ name: Publish Artifacts
+ needs: [build]
+ if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main')
+ strategy:
+ matrix:
+ os: [ubuntu-22.04]
+ java: [temurin@8]
+ runs-on: ${{ matrix.os }}
+ steps:
+ - name: Checkout current branch (full)
+ uses: actions/checkout@v6
+ with:
+ fetch-depth: 0
+
+ - name: Setup sbt
+ uses: sbt/setup-sbt@v1
+
+ - name: Setup Java (temurin@8)
+ id: setup-java-temurin-8
+ if: matrix.java == 'temurin@8'
+ uses: actions/setup-java@v5
+ with:
+ distribution: temurin
+ java-version: 8
+ cache: sbt
+
+ - name: sbt update
+ if: matrix.java == 'temurin@8' && steps.setup-java-temurin-8.outputs.cache-hit == 'false'
+ run: sbt +update
+
+ - name: Download target directories (2.13, rootJS)
+ uses: actions/download-artifact@v6
+ with:
+ name: target-${{ matrix.os }}-${{ matrix.java }}-2.13-rootJS
+
+ - name: Inflate target directories (2.13, rootJS)
+ run: |
+ tar xf targets.tar
+ rm targets.tar
+
+ - name: Download target directories (2.13, rootJVM)
+ uses: actions/download-artifact@v6
+ with:
+ name: target-${{ matrix.os }}-${{ matrix.java }}-2.13-rootJVM
+
+ - name: Inflate target directories (2.13, rootJVM)
+ run: |
+ tar xf targets.tar
+ rm targets.tar
+
+ - name: Download target directories (3, rootJS)
+ uses: actions/download-artifact@v6
+ with:
+ name: target-${{ matrix.os }}-${{ matrix.java }}-3-rootJS
+
+ - name: Inflate target directories (3, rootJS)
+ run: |
+ tar xf targets.tar
+ rm targets.tar
+
+ - name: Download target directories (3, rootJVM)
+ uses: actions/download-artifact@v6
+ with:
+ name: target-${{ matrix.os }}-${{ matrix.java }}-3-rootJVM
+
+ - name: Inflate target directories (3, rootJVM)
+ run: |
+ tar xf targets.tar
+ rm targets.tar
+
+ - name: Import signing key
+ if: env.PGP_SECRET != '' && env.PGP_PASSPHRASE == ''
+ env:
+ PGP_SECRET: ${{ secrets.PGP_SECRET }}
+ PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
+ run: echo $PGP_SECRET | base64 -d -i - | gpg --import
+
+ - name: Import signing key and strip passphrase
+ if: env.PGP_SECRET != '' && env.PGP_PASSPHRASE != ''
+ env:
+ PGP_SECRET: ${{ secrets.PGP_SECRET }}
+ PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
+ run: |
+ echo "$PGP_SECRET" | base64 -d -i - > /tmp/signing-key.gpg
+ echo "$PGP_PASSPHRASE" | gpg --pinentry-mode loopback --passphrase-fd 0 --import /tmp/signing-key.gpg
+ (echo "$PGP_PASSPHRASE"; echo; echo) | gpg --command-fd 0 --pinentry-mode loopback --change-passphrase $(gpg --list-secret-keys --with-colons 2> /dev/null | grep '^sec:' | cut --delimiter ':' --fields 5 | tail -n 1)
+
+ - name: Publish
+ env:
+ SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
+ SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
+ SONATYPE_CREDENTIAL_HOST: ${{ secrets.SONATYPE_CREDENTIAL_HOST }}
+ run: sbt tlCiRelease
+
+ dependency-submission:
+ name: Submit Dependencies
+ if: github.event.repository.fork == false && github.event_name != 'pull_request'
+ strategy:
+ matrix:
+ os: [ubuntu-22.04]
+ java: [temurin@8]
+ runs-on: ${{ matrix.os }}
+ steps:
+ - name: Checkout current branch (full)
+ uses: actions/checkout@v6
+ with:
+ fetch-depth: 0
+
+ - name: Setup sbt
+ uses: sbt/setup-sbt@v1
+
+ - name: Setup Java (temurin@8)
+ id: setup-java-temurin-8
+ if: matrix.java == 'temurin@8'
+ uses: actions/setup-java@v5
+ with:
+ distribution: temurin
+ java-version: 8
+ cache: sbt
+
+ - name: sbt update
+ if: matrix.java == 'temurin@8' && steps.setup-java-temurin-8.outputs.cache-hit == 'false'
+ run: sbt +update
+
+ - name: Submit Dependencies
+ uses: scalacenter/sbt-dependency-submission@v2
+ with:
+ modules-ignore: rootjs_2.13 rootjs_3 docs_2.13 docs_3 rootjvm_2.13 rootjvm_3 rootnative_2.13 rootnative_3
+ configs-ignore: test scala-tool scala-doc-tool test-internal
+
+ site:
+ name: Generate Site
+ strategy:
+ matrix:
+ os: [ubuntu-22.04]
+ java: [temurin@11]
+ runs-on: ${{ matrix.os }}
+ steps:
+ - name: Checkout current branch (full)
+ uses: actions/checkout@v6
+ with:
+ fetch-depth: 0
+
+ - name: Setup sbt
+ uses: sbt/setup-sbt@v1
+
+ - name: Setup Java (temurin@8)
+ id: setup-java-temurin-8
+ if: matrix.java == 'temurin@8'
+ uses: actions/setup-java@v5
+ with:
+ distribution: temurin
+ java-version: 8
+ cache: sbt
+
+ - name: sbt update
+ if: matrix.java == 'temurin@8' && steps.setup-java-temurin-8.outputs.cache-hit == 'false'
+ run: sbt +update
+
+ - name: Setup Java (temurin@11)
+ id: setup-java-temurin-11
+ if: matrix.java == 'temurin@11'
+ uses: actions/setup-java@v5
+ with:
+ distribution: temurin
+ java-version: 11
+ cache: sbt
+
+ - name: sbt update
+ if: matrix.java == 'temurin@11' && steps.setup-java-temurin-11.outputs.cache-hit == 'false'
+ run: sbt +update
+
+ - name: Generate site
+ run: sbt docs/tlSite
+
+ - name: Publish site
+ if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
+ uses: peaceiris/actions-gh-pages@v4.0.0
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ publish_dir: site/target/docs/site
+ keep_files: true