Skip to content

Merge branch 'master' into devrel-18-prepare #4975

Merge branch 'master' into devrel-18-prepare

Merge branch 'master' into devrel-18-prepare #4975

name: 'dhis2: verify (lib)'
on:
push:
pull_request:
types: [labeled]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
env:
GIT_AUTHOR_NAME: '@dhis2-bot'
GIT_AUTHOR_EMAIL: '[email protected]'
GIT_COMMITTER_NAME: '@dhis2-bot'
GIT_COMMITTER_EMAIL: '[email protected]'
NPM_TOKEN: ${{ secrets.DHIS2_BOT_NPM_TOKEN }}
GH_TOKEN: ${{ secrets.DHIS2_BOT_GITHUB_TOKEN }}
D2_VERBOSE: true
jobs:
setup-matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.specs }}
steps:
- uses: actions/checkout@v3
- name: Generate test matrix
id: set-matrix
run: |
node cypress/support/generateTestMatrix.js > matrix.json
echo "::set-output name=specs::$(cat matrix.json)"
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v3
with:
node-version: 20.x
- uses: c-hive/gha-yarn-cache@v1
- run: |
yarn install --frozen-lockfile
yarn setup
- name: Build
run: yarn build
- run: ./scripts/create-artifact.sh
- uses: actions/upload-artifact@v4
with:
name: lib-build
path: lib-build.tar
retention-days: 1
lint:
needs: [build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v3
with:
node-version: 20.x
- uses: actions/download-artifact@v4
with:
name: lib-build
- run: ./scripts/extract-artifact.sh
- uses: c-hive/gha-yarn-cache@v1
- run: yarn install --frozen-lockfile
- name: Lint
run: yarn lint
test:
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v3
with:
node-version: 20.x
- uses: actions/download-artifact@v4
with:
name: lib-build
- run: ./scripts/extract-artifact.sh
- uses: c-hive/gha-yarn-cache@v1
- run: yarn install --frozen-lockfile
- name: Test
run: yarn test
e2e:
runs-on: ubuntu-latest
if: "!github.event.push.repository.fork && github.actor != 'dependabot[bot]'"
needs: [build, setup-matrix]
strategy:
fail-fast: false
matrix:
spec-group: ${{ fromJson(needs.setup-matrix.outputs.matrix) }}
env:
SHOULD_RECORD: ${{ contains(github.event.head_commit.message, '[e2e record]') || contains(join(github.event.pull_request.labels.*.name), 'e2e record') }}
steps:
- name: Checkout
uses: actions/checkout@v2
- uses: actions/setup-node@v3
with:
node-version: 20.x
- uses: actions/download-artifact@v4
with:
name: lib-build
- run: ./scripts/extract-artifact.sh
- name: Increase FS watchers
run: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
- name: Set Cypress Record Environment Variables
if: env.SHOULD_RECORD == 'true'
run: |
echo "CYPRESS_GROUP=e2e-${{ matrix.spec-group.id }}" >> $GITHUB_ENV
echo "CYPRESS_TAG=${{ github.event_name }}" >> $GITHUB_ENV
echo "CYPRESS_CI_BUILD_ID=${{ github.run_id }}" >> $GITHUB_ENV
- name: Debug Environment Variables
run: |
echo "SHOULD_RECORD=${{ env.SHOULD_RECORD }}"
echo "CI Build ID=${{ github.run_id }}"
echo "Group ID=e2e-${{ matrix.spec-group.id }}"
echo "Spec=${{ join(matrix.spec-group.tests, ',') }}"
echo "Record=${{ env.SHOULD_RECORD }}"
echo "Parallel=${{ env.SHOULD_RECORD }}"
echo "Computed Group=${{ env.SHOULD_RECORD == 'true' && env.CYPRESS_GROUP || '' }}"
echo "Computed Tag=${{ env.SHOULD_RECORD == 'true' && env.CYPRESS_TAG || '' }}"
echo "Computed CI Build ID=${{ env.SHOULD_RECORD == 'true' && env.CYPRESS_CI_BUILD_ID || '' }}"
- name: End-to-End tests
uses: cypress-io/github-action@v6
with:
# This should be a command that starts the server to test against.
start: 'yarn cy:start'
wait-on: 'http://localhost:5000'
wait-on-timeout: 300
record: ${{ env.SHOULD_RECORD }}
parallel: ${{ env.SHOULD_RECORD }}
group: ${{ env.SHOULD_RECORD == 'true' && env.CYPRESS_GROUP || '' }}
tag: ${{ env.SHOULD_RECORD == 'true' && env.CYPRESS_TAG || '' }}
ci-build-id: ${{ env.SHOULD_RECORD == 'true' && env.CYPRESS_CI_BUILD_ID || '' }}
spec: ${{ join(matrix.spec-group.tests, ',') }}
env:
BROWSER: none
COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }}
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
STORYBOOK_TESTING: true
publish:
runs-on: ubuntu-latest
needs: [build, lint, test, e2e]
if: "!github.event.push.repository.fork && github.actor != 'dependabot[bot]'"
steps:
- uses: actions/checkout@v2
with:
token: ${{ env.GH_TOKEN }}
- uses: actions/setup-node@v3
with:
node-version: 20.x
- uses: actions/download-artifact@v4
with:
name: lib-build
- run: ./scripts/extract-artifact.sh
# ensure that d2-app-scripts is available
- uses: c-hive/gha-yarn-cache@v1
- run: yarn install --frozen-lockfile
- uses: dhis2/action-semantic-release@node20
with:
publish-npm: true
publish-github: true
github-token: ${{ env.GH_TOKEN }}
npm-token: ${{ env.NPM_TOKEN }}