From 784516e062bcf2f54a336efa69d6218325c08a32 Mon Sep 17 00:00:00 2001 From: ismay Date: Tue, 27 Aug 2024 12:40:26 +0200 Subject: [PATCH] ci: update to shared workflows --- .github/workflows/comment-and-close.yml | 12 ++ .github/workflows/deploy-pr.yml | 14 ++ .github/workflows/deploy-production.yml | 17 ++ .github/workflows/dhis2-netlify-deploy-pr.yml | 54 ------- .../dhis2-netlify-deploy-production.yml | 56 ------- .github/workflows/dhis2-verify-app.yml | 153 ------------------ .github/workflows/dhis2-verify-commits.yml | 32 ---- .github/workflows/lint-pr-title.yml | 13 ++ .github/workflows/test-and-release.yml | 29 ++++ 9 files changed, 85 insertions(+), 295 deletions(-) create mode 100644 .github/workflows/comment-and-close.yml create mode 100644 .github/workflows/deploy-pr.yml create mode 100644 .github/workflows/deploy-production.yml delete mode 100644 .github/workflows/dhis2-netlify-deploy-pr.yml delete mode 100644 .github/workflows/dhis2-netlify-deploy-production.yml delete mode 100644 .github/workflows/dhis2-verify-app.yml delete mode 100644 .github/workflows/dhis2-verify-commits.yml create mode 100644 .github/workflows/lint-pr-title.yml create mode 100644 .github/workflows/test-and-release.yml diff --git a/.github/workflows/comment-and-close.yml b/.github/workflows/comment-and-close.yml new file mode 100644 index 0000000..6edcddd --- /dev/null +++ b/.github/workflows/comment-and-close.yml @@ -0,0 +1,12 @@ +name: comment-and-close + +on: + issues: + types: [opened] + +jobs: + comment-and-close: + uses: dhis2/workflows-platform/.github/workflows/comment-and-close.yml@v1 + if: '!contains(github.event.issue.sender.login , fromJson(''["dhis2-bot", "kodiakhq", "dependabot"]''))' + with: + issue_number: ${{ github.event.issue.number }} diff --git a/.github/workflows/deploy-pr.yml b/.github/workflows/deploy-pr.yml new file mode 100644 index 0000000..fc915d1 --- /dev/null +++ b/.github/workflows/deploy-pr.yml @@ -0,0 +1,14 @@ +name: deploy-pr + +on: + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref }} + cancel-in-progress: true + +jobs: + deploy: + uses: dhis2/workflows-platform/.github/workflows/deploy-pr.yml@v1 + if: '!github.event.pull_request.head.repo.fork' + secrets: inherit diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml new file mode 100644 index 0000000..9575c2e --- /dev/null +++ b/.github/workflows/deploy-production.yml @@ -0,0 +1,17 @@ +name: deploy-production + +on: + push: + branches: + - master + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + deploy: + uses: dhis2/workflows-platform/.github/workflows/deploy-production.yml@v1 + secrets: inherit + with: + branch: master diff --git a/.github/workflows/dhis2-netlify-deploy-pr.yml b/.github/workflows/dhis2-netlify-deploy-pr.yml deleted file mode 100644 index 9ac1d87..0000000 --- a/.github/workflows/dhis2-netlify-deploy-pr.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: 'dhis2: netlify deploy pr' - -# Requirements: -# -# - Org secrets: -# DHIS2_BOT_NETLIFY_TOKEN -# DHIS2_BOT_GITHUB_TOKEN -# - Repo secrets: -# NETLIFY_SITE_ID -# - Customize the 'jobs.build.steps.netlify-deploy.publish-dir' property - -on: - pull_request: - -concurrency: - group: ${{ github.workflow}}-${{ github.ref }} - cancel-in-progress: true - -jobs: - deploy: - runs-on: ubuntu-latest - if: "!github.event.push.repository.fork && github.actor != 'dependabot[bot]'" - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: 18.x - - - uses: c-hive/gha-yarn-cache@v1 - - run: yarn install --frozen-lockfile - - - name: Build - run: yarn d2-app-scripts build --standalone - - - name: Deploy - id: netlify-deploy - uses: nwtgck/actions-netlify@v1.2.2 - timeout-minutes: 1 - with: - github-token: ${{ secrets.DHIS2_BOT_GITHUB_TOKEN }} - github-deployment-environment: 'netlify' - github-deployment-description: 'PR Preview on Netlify' - deploy-message: ${{ github.event.pull_request.title }} - enable-pull-request-comment: true - enable-commit-comment: true - enable-commit-status: true - alias: pr-${{ github.event.number }} - # customize according to project needs - publish-dir: 'build/app' - env: - # org secret - NETLIFY_AUTH_TOKEN: ${{ secrets.DHIS2_BOT_NETLIFY_TOKEN }} - # repo secret - NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} diff --git a/.github/workflows/dhis2-netlify-deploy-production.yml b/.github/workflows/dhis2-netlify-deploy-production.yml deleted file mode 100644 index 2fe4779..0000000 --- a/.github/workflows/dhis2-netlify-deploy-production.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: 'dhis2: netlify deploy production' - -# Requirements: -# -# - Org secrets: -# DHIS2_BOT_NETLIFY_TOKEN -# DHIS2_BOT_GITHUB_TOKEN -# - Repo secrets: -# NETLIFY_SITE_ID -# - Customize the 'jobs.build.steps.netlify-deploy.publish-dir' property - -on: - push: - branches: - - development - -concurrency: - group: ${{ github.workflow}}-${{ github.ref }} - cancel-in-progress: true - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: 18.x - - - uses: c-hive/gha-yarn-cache@v1 - - run: yarn install --frozen-lockfile - - - name: Build - run: yarn d2-app-scripts build --standalone - - - name: Deploy - id: netlify-deploy - uses: nwtgck/actions-netlify@v1.2.2 - timeout-minutes: 1 - with: - github-token: ${{ secrets.DHIS2_BOT_GITHUB_TOKEN }} - github-deployment-environment: 'netlify' - github-deployment-description: 'Production Deploy on Netlify' - deploy-message: Github actions production deploy - enable-pull-request-comment: false - enable-commit-comment: true - enable-commit-status: true - production-branch: development - production-deploy: true - # customize according to project needs - publish-dir: 'build/app' - env: - # org secret - NETLIFY_AUTH_TOKEN: ${{ secrets.DHIS2_BOT_NETLIFY_TOKEN }} - # repo secret - NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} diff --git a/.github/workflows/dhis2-verify-app.yml b/.github/workflows/dhis2-verify-app.yml deleted file mode 100644 index 82acfb9..0000000 --- a/.github/workflows/dhis2-verify-app.yml +++ /dev/null @@ -1,153 +0,0 @@ -name: 'dhis2: verify (app)' - -# Requirements: -# -# - Org secrets: -# DHIS2_BOT_GITHUB_TOKEN -# DHIS2_BOT_APPHUB_TOKEN -# - Enable the 'jobs.e2e' section if applicable -# - Customize the properties if needed: -# 'jobs.release.steps.*.cwd' -# 'jobs.release.steps.*.build-dir' - -on: push - -concurrency: - group: ${{ github.workflow}}-${{ github.ref }} - -env: - GIT_AUTHOR_NAME: '@dhis2-bot' - GIT_AUTHOR_EMAIL: 'apps@dhis2.org' - GIT_COMMITTER_NAME: '@dhis2-bot' - GIT_COMMITTER_EMAIL: 'apps@dhis2.org' - D2_VERBOSE: true - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: 18.x - - - uses: c-hive/gha-yarn-cache@v1 - - run: yarn install --frozen-lockfile - - - name: Build - run: yarn d2-app-scripts build - - - uses: actions/upload-artifact@v2 - with: - name: app-build - path: | - **/build - !**/node_modules - retention-days: 1 - - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: 18.x - - - uses: c-hive/gha-yarn-cache@v1 - - run: yarn install --frozen-lockfile - - # Can be removed if translations aren't required for tests, - # or if not using the App Platform - - name: Generate translations - run: yarn d2-app-scripts i18n generate - - - name: Lint - run: yarn d2-style check - - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: 18.x - - - uses: c-hive/gha-yarn-cache@v1 - - run: yarn install --frozen-lockfile - - # Can be removed if translations aren't required for tests, - # or if not using the App Platform - - name: Generate translations - run: yarn d2-app-scripts i18n generate - - - name: Test - run: yarn d2-app-scripts test - - e2e: - runs-on: ubuntu-latest - if: "!github.event.push.repository.fork && github.actor != 'dependabot[bot]'" - - strategy: - fail-fast: false - matrix: - containers: [1, 2, 3, 4] - - steps: - - name: Checkout - uses: actions/checkout@v2 - - - uses: actions/setup-node@v1 - with: - node-version: 18.x - - - name: End-to-End tests - uses: cypress-io/github-action@v5 - with: - # This should be a command that serves the app. - start: yarn d2-app-scripts start - wait-on: 'http://localhost:3000' - wait-on-timeout: 300 - record: true - parallel: true - env: - BROWSER: none - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} - CYPRESS_dhis2BaseUrl: http://localhost:8080 - CYPRESS_dhis2ApiVersion: 42 - CYPRESS_networkMode: stub - - release: - runs-on: ubuntu-latest - needs: [build, lint, test] # add e2e if you use it - if: "!github.event.push.repository.fork && github.actor != 'dependabot[bot]'" - steps: - - uses: actions/checkout@v2 - with: - token: ${{ secrets.DHIS2_BOT_GITHUB_TOKEN }} - - - uses: actions/setup-node@v1 - with: - node-version: 18.x - - - uses: actions/download-artifact@v2 - with: - name: app-build - - # ensure that d2-app-scripts is available - - uses: c-hive/gha-yarn-cache@v1 - - run: yarn install --frozen-lockfile - - - uses: dhis2/action-semantic-release@master - with: - publish-apphub: true - publish-github: true - github-token: ${{ secrets.DHIS2_BOT_GITHUB_TOKEN }} - apphub-token: ${{ secrets.DHIS2_BOT_APPHUB_TOKEN }} - - - uses: dhis2/deploy-build@master - with: - # uncomment following line for monorepo apps: - #cwd: ./packages/app - build-dir: build/app - github-token: ${{ secrets.DHIS2_BOT_GITHUB_TOKEN }} diff --git a/.github/workflows/dhis2-verify-commits.yml b/.github/workflows/dhis2-verify-commits.yml deleted file mode 100644 index ae7831b..0000000 --- a/.github/workflows/dhis2-verify-commits.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: 'dhis2: verify (commits)' - -on: - pull_request: - types: ['opened', 'edited', 'reopened', 'synchronize'] - -jobs: - lint-pr-title: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: c-hive/gha-yarn-cache@v1 - - run: yarn install --frozen-lockfile - - id: commitlint - run: echo ::set-output name=config_path::$(node -e "process.stdout.write(require('@dhis2/cli-style').config.commitlint)") - - uses: JulienKode/pull-request-name-linter-action@v0.5.0 - with: - configuration-path: ${{ steps.commitlint.outputs.config_path }} - - lint-commits: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - uses: c-hive/gha-yarn-cache@v1 - - run: yarn install --frozen-lockfile - - id: commitlint - run: echo ::set-output name=config_path::$(node -e "process.stdout.write(require('@dhis2/cli-style').config.commitlint)") - - uses: wagoid/commitlint-github-action@v4 - with: - configFile: ${{ steps.commitlint.outputs.config_path }} diff --git a/.github/workflows/lint-pr-title.yml b/.github/workflows/lint-pr-title.yml new file mode 100644 index 0000000..eb59072 --- /dev/null +++ b/.github/workflows/lint-pr-title.yml @@ -0,0 +1,13 @@ +name: lint-pr-title + +on: + pull_request: + types: ['opened', 'edited', 'reopened', 'synchronize'] + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref }} + cancel-in-progress: true + +jobs: + lint-pr-title: + uses: dhis2/workflows-platform/.github/workflows/lint-pr-title.yml@v1 diff --git a/.github/workflows/test-and-release.yml b/.github/workflows/test-and-release.yml new file mode 100644 index 0000000..4039677 --- /dev/null +++ b/.github/workflows/test-and-release.yml @@ -0,0 +1,29 @@ +name: test-and-release + +on: push + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + # Cancel previous runs if not on a release branch + cancel-in-progress: ${{ !contains(fromJSON('["refs/heads/master", "ref/heads/main"]'), github.ref) }} + +jobs: + lint-commits: + uses: dhis2/workflows-platform/.github/workflows/lint-commits.yml@v1 + lint: + uses: dhis2/workflows-platform/.github/workflows/lint.yml@v1 + test: + uses: dhis2/workflows-platform/.github/workflows/test.yml@v1 + e2e: + uses: dhis2/workflows-platform/.github/workflows/legacy-e2e.yml@v1 + # Skips forks and dependabot PRs + if: '!github.event.push.repository.fork' + secrets: inherit + with: + api_version: 42 + release: + needs: [lint-commits, lint, test, e2e] + uses: dhis2/workflows-platform/.github/workflows/release.yml@v1 + # Skips forks and dependabot PRs + if: '!github.event.push.repository.fork' + secrets: inherit