18F/analytics.usa.gov

View on GitHub
.github/workflows/ci.yml

Summary

Maintainability
Test Coverage
on:
  push:
  pull_request:

jobs:
  lint-js:
    runs-on: ubuntu-latest
    steps:
      - name: Code Checkout
        uses: actions/checkout@v4
      - name: Install Node
        uses: actions/setup-node@v4
        with:
          node-version: "lts/*"
          cache: 'npm'
      - name: Install node dependencies
        # Fix for installing puppeteer which is a pa11y dependency.
        # Remove when this GitHub issue is resolved: https://github.com/puppeteer/puppeteer/issues/12094
        env:
          PUPPETEER_DOWNLOAD_BASE_URL: https://storage.googleapis.com/chrome-for-testing-public
        run: npm ci --timing
      - name: Lint javascript
        run: npm run lint:js
  lint-styles:
    runs-on: ubuntu-latest
    steps:
      - name: Code Checkout
        uses: actions/checkout@v4
      - name: Install Node
        uses: actions/setup-node@v4
        with:
          node-version: "lts/*"
          cache: 'npm'
      - name: Install node dependencies
        # Fix for installing puppeteer which is a pa11y dependency.
        # Remove when this GitHub issue is resolved: https://github.com/puppeteer/puppeteer/issues/12094
        env:
          PUPPETEER_DOWNLOAD_BASE_URL: https://storage.googleapis.com/chrome-for-testing-public
        run: npm ci --verbose --timing
      - name: Lint SCSS
        run: npm run lint:styles
  test:
    needs:
      - lint-js
      - lint-styles
    runs-on: ubuntu-latest
    steps:
      - name: Code Checkout
        uses: actions/checkout@v4
      - name: Install Node
        uses: actions/setup-node@v4
        with:
          node-version: "lts/*"
          cache: 'npm'
      - name: Install node dependencies
        # Fix for installing puppeteer which is a pa11y dependency.
        # Remove when this GitHub issue is resolved: https://github.com/puppeteer/puppeteer/issues/12094
        env:
          PUPPETEER_DOWNLOAD_BASE_URL: https://storage.googleapis.com/chrome-for-testing-public
        run: npm ci --timing
      - name: Run tests
        run: npm test
  deploy_dev:
    needs:
      - lint-js
      - lint-styles
      - test
    if: github.ref == 'refs/heads/develop'
    uses: 18F/analytics.usa.gov/.github/workflows/deploy.yml@develop
    with:
      API_DOMAIN: ${{ vars.API_DOMAIN }}
      API_PATH: ${{ vars.API_PATH_DEV }}
      APP_NAME: ${{ vars.APP_NAME_DEV }}
      APP_URL: ${{ vars.APP_URL_DEV }}
      CF_ORGANIZATION_NAME: ${{ vars.CF_ORGANIZATION_NAME }}
      CF_SPACE_NAME: ${{ vars.CF_SPACE_NAME_DEV }}
      NEW_RELIC_APP_NAME: ${{ vars.NEW_RELIC_APP_NAME_DEV }}
      S3_BUCKET_URL: ${{ vars.S3_BUCKET_URL_DEV }}
      S3_SERVICE_NAME: ${{ vars.S3_SERVICE_NAME_DEV }}
    secrets:
      API_KEY: ${{ secrets.API_KEY_DEV }}
      CF_USERNAME: ${{ secrets.CF_USERNAME_DEV }}
      CF_PASSWORD: ${{ secrets.CF_PASSWORD_DEV }}
      NEW_RELIC_LICENSE_KEY: ${{ secrets.NEW_RELIC_LICENSE_KEY_DEV }}
  deploy_stg:
    needs:
      - lint-js
      - lint-styles
      - test
    if: github.ref == 'refs/heads/staging'
    uses: 18F/analytics.usa.gov/.github/workflows/deploy.yml@develop
    with:
      API_DOMAIN: ${{ vars.API_DOMAIN }}
      API_PATH: ${{ vars.API_PATH_STG }}
      APP_NAME: ${{ vars.APP_NAME_STG }}
      APP_URL: ${{ vars.APP_URL_STG }}
      CF_ORGANIZATION_NAME: ${{ vars.CF_ORGANIZATION_NAME }}
      CF_SPACE_NAME: ${{ vars.CF_SPACE_NAME_STG }}
      NEW_RELIC_APP_NAME: ${{ vars.NEW_RELIC_APP_NAME_STG }}
      S3_BUCKET_URL: ${{ vars.S3_BUCKET_URL_STG }}
      S3_SERVICE_NAME: ${{ vars.S3_SERVICE_NAME_STG }}
    secrets:
      API_KEY: ${{ secrets.API_KEY_STG }}
      CF_USERNAME: ${{ secrets.CF_USERNAME_STG }}
      CF_PASSWORD: ${{ secrets.CF_PASSWORD_STG }}
      NEW_RELIC_LICENSE_KEY: ${{ secrets.NEW_RELIC_LICENSE_KEY_STG }}
  deploy_prd:
    needs:
      - lint-js
      - lint-styles
      - test
    if: github.ref == 'refs/heads/master'
    uses: 18F/analytics.usa.gov/.github/workflows/deploy.yml@develop
    with:
      API_DOMAIN: ${{ vars.API_DOMAIN }}
      API_PATH: ${{ vars.API_PATH_PRD }}
      APP_NAME: ${{ vars.APP_NAME_PRD }}
      APP_URL: ${{ vars.APP_URL_PRD }}
      CF_ORGANIZATION_NAME: ${{ vars.CF_ORGANIZATION_NAME }}
      CF_SPACE_NAME: ${{ vars.CF_SPACE_NAME_PRD }}
      NEW_RELIC_APP_NAME: ${{ vars.NEW_RELIC_APP_NAME_PRD }}
      S3_BUCKET_URL: ${{ vars.S3_BUCKET_URL_PRD }}
      S3_SERVICE_NAME: ${{ vars.S3_SERVICE_NAME_PRD }}
    secrets:
      API_KEY: ${{ secrets.API_KEY_PRD }}
      CF_USERNAME: ${{ secrets.CF_USERNAME_PRD }}
      CF_PASSWORD: ${{ secrets.CF_PASSWORD_PRD }}
      NEW_RELIC_LICENSE_KEY: ${{ secrets.NEW_RELIC_LICENSE_KEY_PRD }}