From 5782fca68108c1d04ce43f20e0640df8341aaaa5 Mon Sep 17 00:00:00 2001 From: regis-leray Date: Thu, 10 Oct 2024 14:44:11 -0400 Subject: [PATCH] 529 - fix ci --- .github/workflows/ci.yml | 331 +++++++++++++++++++++++++++------------ build.sbt | 18 ++- project/plugins.sbt | 4 +- 3 files changed, 252 insertions(+), 101 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 26ff2816..171db17a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,120 +1,257 @@ -name: CI +# This file was autogenerated using `zio-sbt-ci` plugin via `sbt ciGenerateGithubWorkflow` +# task and should be included in the git repository. Please do not edit it manually. +name: CI env: - JDK_JAVA_OPTIONS: -XX:+PrintCommandLineFlags # JDK_JAVA_OPTIONS is _the_ env. variable to use for modern Java - JVM_OPTS: -XX:+PrintCommandLineFlags # for Java 8 only (sadly, it is not modern enough for JDK_JAVA_OPTIONS) - -on: - pull_request: - push: - branches: ['series/2.x'] + JDK_JAVA_OPTIONS: -XX:+PrintCommandLineFlags +'on': + workflow_dispatch: {} release: types: - - published - + - published + push: + branches: + - series/2.x + pull_request: + branches-ignore: + - gh-pages +concurrency: + group: ${{ github.workflow }}-${{ github.ref == format('refs/heads/{0}', github.event.repository.default_branch) && github.run_id || github.ref }} + cancel-in-progress: true jobs: - lint: + build: + name: Build runs-on: ubuntu-22.04 - timeout-minutes: 30 + continue-on-error: true steps: - - name: Checkout current branch - uses: actions/checkout@v3.3.0 - with: - fetch-depth: 0 - - name: Setup Scala and Java - uses: olafurpg/setup-scala@v13 - - name: Cache scala dependencies - uses: coursier/cache-action@v6 - - name: Lint code - run: sbt check - - mdoc: + - name: Git Checkout + uses: actions/checkout@v4 + with: + fetch-depth: '0' + - name: Install libuv + run: sudo apt-get update && sudo apt-get install -y libuv1-dev + - name: Setup Scala + uses: actions/setup-java@v4 + with: + distribution: corretto + java-version: '17' + check-latest: true + - name: Cache Dependencies + uses: coursier/cache-action@v6 + - name: Check all code compiles + run: sbt +Test/compile + - name: Check artifacts build process + run: sbt +publishLocal + - name: Check website build process + run: sbt docs/clean; sbt docs/buildWebsite + lint: + name: Lint runs-on: ubuntu-22.04 - timeout-minutes: 60 + continue-on-error: false steps: - - name: Checkout current branch - uses: actions/checkout@v3.3.0 - - name: Setup Scala and Java - uses: olafurpg/setup-scala@v13 - - name: Cache scala dependencies - uses: coursier/cache-action@v6 - - name: Check Document Generation - run: sbt docs/compileDocs - + - name: Git Checkout + uses: actions/checkout@v4 + with: + fetch-depth: '0' + - name: Install libuv + run: sudo apt-get update && sudo apt-get install -y libuv1-dev + - name: Setup Scala + uses: actions/setup-java@v4 + with: + distribution: corretto + java-version: '17' + check-latest: true + - name: Cache Dependencies + uses: coursier/cache-action@v6 + - name: Check if the site workflow is up to date + run: sbt ciCheckGithubWorkflow + - name: Lint + run: sbt lint test: + name: Test runs-on: ubuntu-22.04 - timeout-minutes: 30 + continue-on-error: false strategy: fail-fast: false matrix: - java: ['amazon-corretto@1.17'] - scala: ['2.12.15', '2.13.14', '3.3.3'] + java: + - '11' + - '17' + - '21' steps: - - name: Checkout current branch - uses: actions/checkout@v3.3.0 - with: - fetch-depth: 0 - - name: Setup Scala and Java - uses: olafurpg/setup-scala@v13 - with: - java-version: ${{ matrix.java }} - - name: Cache scala dependencies - uses: coursier/cache-action@v6 - - name: Start containers - run: | - docker compose -f "docker-compose.yml" up -d --build - - name: Test - run: ./sbt ++${{ matrix.scala }} test - - testJvms: + - name: Install libuv + run: sudo apt-get update && sudo apt-get install -y libuv1-dev + - name: Setup Scala + uses: actions/setup-java@v4 + with: + distribution: corretto + java-version: ${{ matrix.java }} + check-latest: true + - name: Cache Dependencies + uses: coursier/cache-action@v6 + - name: Git Checkout + uses: actions/checkout@v4 + with: + fetch-depth: '0' + - name: Test + run: sbt +test + update-readme: + name: Update README runs-on: ubuntu-22.04 - timeout-minutes: 30 - strategy: - fail-fast: false - matrix: - java: ['17', '21'] + continue-on-error: false + if: ${{ github.event_name == 'push' }} steps: - - name: Checkout current branch - uses: actions/checkout@v3.3.0 - with: - fetch-depth: 0 - - name: Setup Scala and Java - uses: olafurpg/setup-scala@v13 - with: - java-version: ${{ matrix.java }} - - name: Cache scala dependencies - uses: coursier/cache-action@v6 - - name: Start containers - run: | - docker compose -f "docker-compose.yml" up -d --build - - name: Test - run: ./sbt test + - name: Git Checkout + uses: actions/checkout@v4 + with: + fetch-depth: '0' + - name: Install libuv + run: sudo apt-get update && sudo apt-get install -y libuv1-dev + - name: Setup Scala + uses: actions/setup-java@v4 + with: + distribution: corretto + 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@v6 + 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: + name: ci + runs-on: ubuntu-latest + continue-on-error: false + needs: + - lint + - test + - build + steps: + - name: Report Successful CI + run: echo "ci passed" + release: + name: Release runs-on: ubuntu-22.04 - needs: [lint, mdoc, test, testJvms] + continue-on-error: false + needs: + - ci + if: ${{ github.event_name != 'pull_request' }} steps: - - name: Report successful build - run: echo "ci passed" - - publish: + - name: Git Checkout + uses: actions/checkout@v4 + with: + fetch-depth: '0' + - name: Install libuv + run: sudo apt-get update && sudo apt-get install -y libuv1-dev + - name: Setup Scala + uses: actions/setup-java@v4 + with: + distribution: corretto + java-version: '17' + check-latest: true + - name: Cache Dependencies + uses: coursier/cache-action@v6 + - name: Release + 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-22.04 + continue-on-error: false + needs: + - release + if: ${{ ((github.event_name == 'release') && (github.event.action == 'published')) || (github.event_name == 'workflow_dispatch') }} + steps: + - name: Git Checkout + uses: actions/checkout@v4 + with: + fetch-depth: '0' + - name: Install libuv + run: sudo apt-get update && sudo apt-get install -y libuv1-dev + - name: Setup Scala + uses: actions/setup-java@v4 + with: + distribution: corretto + java-version: '17' + check-latest: true + - name: Cache Dependencies + uses: coursier/cache-action@v6 + - name: Setup NodeJs + uses: actions/setup-node@v4 + with: + node-version: 16.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-22.04 - timeout-minutes: 30 - needs: [ci] - if: github.event_name != 'pull_request' + continue-on-error: false + needs: + - release-docs + if: ${{ (github.event_name == 'release') && (github.event.action == 'published') }} steps: - - name: Checkout current branch - uses: actions/checkout@v3.3.0 - with: - fetch-depth: 0 - - name: Setup Scala and Java - uses: olafurpg/setup-scala@v13 - - name: Cache scala dependencies - uses: coursier/cache-action@v6 - - 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 }} + - name: Git Checkout + uses: actions/checkout@v4 + 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}"'" + } + }' diff --git a/build.sbt b/build.sbt index 4698323f..03436ab9 100644 --- a/build.sbt +++ b/build.sbt @@ -1,4 +1,7 @@ -import BuildHelper._ +import BuildHelper.* +import zio.sbt.githubactions.Job + +def ciJobWithSetup(job: Job) = job.copy(runsOn = "ubuntu-22.04") inThisBuild( List( @@ -15,7 +18,14 @@ inThisBuild( pgpSecretRing := file("/tmp/secret.asc"), scmInfo := Some( ScmInfo(url("https://github.com/zio/zio-s3/"), "scm:git:git@github.com:zio/zio-s3.git") - ) + ), + ciEnabledBranches := Seq("series/2.x"), + ciTestJobs := ciTestJobs.value.map(ciJobWithSetup), + ciLintJobs := ciLintJobs.value.map(ciJobWithSetup), + ciBuildJobs := ciBuildJobs.value.map(ciJobWithSetup), + ciReleaseJobs := ciReleaseJobs.value.map(ciJobWithSetup), + ciUpdateReadmeJobs := ciUpdateReadmeJobs.value.map(ciJobWithSetup), + ciPostReleaseJobs := ciPostReleaseJobs.value.map(ciJobWithSetup), ) ) @@ -25,6 +35,9 @@ addCommandAlias("check", "all scalafmtSbtCheck scalafmtCheck test:scalafmtCheck" val zioVersion = "2.0.21" val awsVersion = "2.25.70" + + + lazy val root = project.in(file(".")).settings(publish / skip := true).aggregate(`zio-s3`, docs) @@ -58,7 +71,6 @@ lazy val docs = project projectName := "ZIO S3", mainModuleName := (`zio-s3` / moduleName).value, projectStage := ProjectStage.ProductionReady, - docsPublishBranch := "series/2.x", ScalaUnidoc / unidoc / unidocProjectFilter := inProjects(`zio-s3`), //conflict with the dependency zio-nio & sbt-mdoc excludeDependencies += "org.scala-lang.modules" % "scala-collection-compat_3" diff --git a/project/plugins.sbt b/project/plugins.sbt index afd779de..7953eb08 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -8,6 +8,8 @@ addSbtPlugin("org.portable-scala" % "sbt-crossproject" % "1.3.2") addSbtPlugin("de.heikoseeberger" % "sbt-header" % "5.6.5") addSbtPlugin("org.scalameta" % "sbt-mdoc" % "2.5.4") addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2") -addSbtPlugin("dev.zio" % "zio-sbt-website" % "0.3.4") +addSbtPlugin("dev.zio" % "zio-sbt-website" % "0.4.0-alpha.28") +addSbtPlugin("dev.zio" % "zio-sbt-ci" % "0.4.0-alpha.28") addDependencyTreePlugin +resolvers ++= Resolver.sonatypeOssRepos("public") \ No newline at end of file