.github/workflows/dhis2-verify-lib.yml

Summary

Maintainability
Test Coverage
name: 'dhis2: verify (lib)'

on:
    push:
        branches:

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: |
                      **/*
                      !**/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') }}

            - name: Test
              run: yarn test

    publish:
        runs-on: ubuntu-latest
        needs: [build, lint, test]
        if: "!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

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

            - name: Publish to NPM
              run: npx @dhis2/cli-utils release --publish npm