From 326e315e48412b14faa5e2e3a644f085f147dbc1 Mon Sep 17 00:00:00 2001 From: Richard Lynch Date: Fri, 26 Apr 2024 13:13:55 +0100 Subject: [PATCH] WIP --- .github/workflows/ci.yaml | 51 ++++------------- .../setup_application_environment.yaml | 56 +++++++++++++++++++ 2 files changed, 68 insertions(+), 39 deletions(-) create mode 100644 .github/workflows/setup_application_environment.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ae1d746fa3..39142237ed 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -2,53 +2,26 @@ name: CI on: push jobs: - test_and_lint: - strategy: - fail-fast: false - matrix: - ci_node_total: [8] - ci_node_index: [0, 1, 2, 3, 4, 5, 6, 7] - runs-on: ubuntu-latest - services: - postgres: - image: postgres:11-alpine - ports: - - '5432:5432' - env: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: password - POSTGRES_DB: dfe-teachers-payment-service_test - env: - RAILS_ENV: test - DFE_TEACHERS_PAYMENT_SERVICE_DATABASE_USERNAME: postgres - DFE_TEACHERS_PAYMENT_SERVICE_DATABASE_PASSWORD: password - DFE_TEACHERS_PAYMENT_SERVICE_DATABASE_HOST: localhost - CI_NODE_TOTAL: ${{ matrix.ci_node_total }} - CI_NODE_INDEX: ${{ matrix.ci_node_index }} + lint: + uses: "./.github/workflows/setup_application_environment.yaml" steps: - - name: Checkout code - uses: actions/checkout@v4 - - name: Setup Node - uses: actions/setup-node@v4 - - name: Setup yarn - run: npm install -g yarn - - name: Install Node packages - run: yarn install - - name: Install Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: 3.2.0 - bundler-cache: true - - name: Precompile assets - run: bundle exec rails assets:precompile - name: Linting - ShellCheck run: bin/rake shellcheck - name: Linting - Brakeman run: bundle exec brakeman -c config/brakeman.ignore - name: Linting - Standardrb run: bin/rails standard + + test: + uses: "./.github/workflows/setup_application_environment.yaml" + strategy: + fail-fast: false + matrix: + ci_node_total: [8] + ci_node_index: [0, 1, 2, 3, 4, 5, 6, 7] + steps: - name: Prepare DB - run: bin/rails db:schema:load + run: bin/rails db:prepare - name: Run unit tests env: SPEC_TYPE: unit diff --git a/.github/workflows/setup_application_environment.yaml b/.github/workflows/setup_application_environment.yaml new file mode 100644 index 0000000000..6edcf759e7 --- /dev/null +++ b/.github/workflows/setup_application_environment.yaml @@ -0,0 +1,56 @@ +name: Setup application environment + +jobs: + setup_application_environment: + runs-on: ubuntu-latest + services: + postgres: + image: postgres:11-alpine + ports: + - '5432:5432' + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: password + POSTGRES_DB: dfe-teachers-payment-service_test + env: + RAILS_ENV: test + DFE_TEACHERS_PAYMENT_SERVICE_DATABASE_USERNAME: postgres + DFE_TEACHERS_PAYMENT_SERVICE_DATABASE_PASSWORD: password + DFE_TEACHERS_PAYMENT_SERVICE_DATABASE_HOST: localhost + CI_NODE_TOTAL: ${{ matrix.ci_node_total }} + CI_NODE_INDEX: ${{ matrix.ci_node_index }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Setup Node + uses: actions/setup-node@v4 + with: + cache: yarn + - name: Setup yarn + run: npm install -g yarn + - name: Install Node packages + run: yarn install + - name: Install Ruby + uses: ruby/setup-ruby@v1 + with: + bundler-cache: true + - name: Restore assets cache + id: assets-cache + uses: actions/cache/restore@v4 + with: + path: | + public/assets + key: assets-${{ hashFiles('**/app/assets/**/*', '**/app/javascript/**/*') }} + restore-keys: | + ${{ runner.os }}-assets- + - name: Prepare assets + if: ${{ steps.assets-cache.outputs.cache-hit != 'true' }} + run: bin/rails assets:precompile + - name: Save assets cache + if: ${{ steps.assets-cache.outputs.cache-hit != 'true' }} + uses: actions/cache/save@v4 + with: + path: | + public/assets + public/packs-test + key: ${{ steps.assets-cache.outputs.cache-primary-key }}