ula-aca/aries-cloudagent-interface-javascript

View on GitHub
.github/workflows/continuous_integration.yml

Summary

Maintainability
Test Coverage
name: Continuous Integration

on: [push]

jobs:
  style:
    name: Style
    runs-on: ubuntu-18.04
    steps:
      - name: Checkout
        uses: actions/checkout@v1

      - name: Setup Node.js
        uses: actions/setup-node@v1
        with:
          node-version: 12

      - name: Get yarn cache
        id: yarn-cache
        run: echo "::set-output name=dir::$(yarn cache dir)"

      - uses: actions/cache@v1
        with:
          path: ${{ steps.yarn-cache.outputs.dir }}
          key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-yarn-

      - name: Install dependencies
        run: yarn install

      - name: Build
        run: yarn build

      - name: Lint commit messages
        run: yarn commitlint

      - name: Lint files with eslint
        run: yarn lint

      - name: Check formatting with prettier
        run: yarn prettier

  test:
    name: Test
    runs-on: ubuntu-18.04
    strategy:
      matrix:
        node: [10, 12]
    steps:
      - name: Checkout
        uses: actions/checkout@v1

      - name: Setup Node.js
        uses: actions/setup-node@v1
        with:
          node-version: ${{matrix.node}}

      - name: Get yarn cache
        id: yarn-cache
        run: echo "::set-output name=dir::$(yarn cache dir)"

      - uses: actions/cache@v1
        with:
          path: ${{ steps.yarn-cache.outputs.dir }}
          key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-yarn-

      - name: Install dependencies
        run: yarn install

      - name: Build
        run: yarn build

      - name: Run tests
        run: yarn test

      - name: Publish code coverage
        uses: paambaati/codeclimate-action@v2.3.0
        env:
          CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}

  release:
    name: Release
    runs-on: ubuntu-18.04
    # Only release on master
    if: github.ref == 'refs/heads/master'
    needs: [style, test]
    steps:
      - name: Checkout
        uses: actions/checkout@v1

      - name: Setup Node.js
        uses: actions/setup-node@v1
        with:
          node-version: 12

      - name: Get yarn cache
        id: yarn-cache
        run: echo "::set-output name=dir::$(yarn cache dir)"

      - uses: actions/cache@v1
        with:
          path: ${{ steps.yarn-cache.outputs.dir }}
          key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-yarn-

      - name: Install dependencies
        run: yarn install

      - name: Build
        run: yarn build

      - name: Release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
          NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
          NPM_CONFIG_REGISTRY: https://registry.npmjs.org/
          GIT_AUTHOR_NAME: '@github-actions[bot]'
          GIT_AUTHOR_EMAIL: 'github-actions[bot]@users.noreply.github.com'
          GIT_COMMITTER_NAME: '@github-actions[bot]'
          GIT_COMMITTER_EMAIL: 'github-actions[bot]@users.noreply.github.com'
        run: yarn release