.github/workflows/dhis2-release-d2ui.yml

Summary

Maintainability
Test Coverage
name: 'dhis2: release d2-ui'

on: [pull_request, workflow_dispatch]

env:
    GIT_AUTHOR_NAME: '@dhis2-bot'
    GIT_AUTHOR_EMAIL: 'apps@dhis2.org'
    GIT_COMMITTER_NAME: '@dhis2-bot'
    GIT_COMMITTER_EMAIL: 'apps@dhis2.org'
    NPM_TOKEN: ${{secrets.DHIS2_BOT_NPM_TOKEN}}
    GH_TOKEN: ${{secrets.DHIS2_BOT_GITHUB_TOKEN}}
    CI: true

jobs:
    install:
        runs-on: ubuntu-latest
        if: "!contains(github.event.head_commit.message, '[skip ci]')"

        steps:
            - uses: actions/checkout@v2
            - uses: actions/setup-node@v1
              with:
                  node-version: 12.x

            - uses: actions/cache@v2
              id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
              with:
                  path: '**/node_modules'
                  key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}

            - name: Install
              if: steps.yarn-cache.outputs.cache-hit != 'true'
              run: yarn install --frozen-lockfile

    build:
        runs-on: ubuntu-latest
        needs: install
        if: "!contains(github.event.head_commit.message, '[skip ci]')"
        steps:
            - uses: actions/checkout@v2
            - uses: actions/setup-node@v1
              with:
                  node-version: 12.x

            - uses: actions/cache@v2
              id: yarn-cache
              with:
                  path: '**/node_modules'
                  key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}

            - name: Build
              run: yarn build

            - uses: actions/upload-artifact@v2
              with:
                  name: lib-build
                  path: |
                      **/build
                      !**/node_modules
                  retention-days: 1

    lint:
        runs-on: ubuntu-latest
        needs: install
        if: "!contains(github.event.head_commit.message, '[skip ci]')"
        steps:
            - uses: actions/checkout@v2
            - uses: actions/setup-node@v1
              with:
                  node-version: 12.x

            - uses: actions/cache@v2
              id: yarn-cache
              with:
                  path: '**/node_modules'
                  key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}

            - name: Lint
              run: yarn lint

    test:
        runs-on: ubuntu-latest
        needs: [install, build]
        if: "!contains(github.event.head_commit.message, '[skip ci]')"
        steps:
            - uses: actions/checkout@v2
            - uses: actions/setup-node@v1
              with:
                  node-version: 12.x

            - uses: actions/cache@v2
              id: yarn-cache
              with:
                  path: '**/node_modules'
                  key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}

            - uses: actions/download-artifact@v2
              with:
                  name: lib-build

            - name: Test
              run: |
                  yarn packages link
                  yarn test

    publish:
        runs-on: ubuntu-latest
        needs: [build, lint, test]
        if: ${{ github.ref == 'refs/heads/master' && !contains(github.event.head_commit.message, '[skip ci]') }}
        steps:
            - uses: actions/checkout@v2
              with:
                  token: ${{env.GH_TOKEN}}
            - uses: actions/setup-node@v1
              with:
                  node-version: 12.x
                  registry-url: 'https://registry.npmjs.org'

            - uses: actions/download-artifact@v2
              with:
                  name: lib-build

            - name: Publish build
              run: ./scripts/publish-build.sh
              shell: bash
              env:
                  NODE_AUTH_TOKEN: ${{ env.NPM_TOKEN }}