From 85795734e5bf49bbc13c798a7857a39d99ee444f Mon Sep 17 00:00:00 2001 From: meyric Date: Tue, 12 Nov 2024 09:38:25 +0000 Subject: [PATCH] WIP: Attempt at building and caching the Docker image --- .github/workflows/continuous-integration.yml | 129 +++++++++++++++++-- 1 file changed, 121 insertions(+), 8 deletions(-) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 3e5a0a40..f758e11a 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -1,5 +1,7 @@ # TODO: Enable GitHub Actions on the repository to test all pull requests # https://github.com///actions +name: CI Checks + on: pull_request: push: @@ -8,18 +10,129 @@ on: - develop jobs: - test: + build-and-cache: + name: Build and cache image runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - + name: Build and cache image + uses: docker/build-push-action@v6 + with: + context: . + file: ./Dockerfile + build-args: RAILS_ENV=test + push: false + tags: app_test:latest + cache-from: type=gha + cache-to: type=gha,mode=min - env: - RAILS_ENV: test + lint-and-format: + name: Linting and formatting + runs-on: ubuntu-latest + needs: build-and-cache + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - + name: Build and cache + uses: docker/build-push-action@v6 + with: + context: . + file: ./Dockerfile + build-args: | + RAILS_ENV=test + push: false + load: true + tags: app_test:latest + cache-from: type=gha + - + name: Run linters and formatters + run: | + docker run --rm app_test:latest /bin/bash -c "bundle exec standardrb -f simple && \ + yarn run lint:js && \ + yarn run lint:css && \ + yarn run lint:format" + static-analysis: + name: Static analysis + runs-on: ubuntu-latest + needs: build-and-cache steps: - - name: Check out code + - + name: Checkout uses: actions/checkout@v4 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - + name: Build and cache + uses: docker/build-push-action@v6 + with: + context: . + file: ./Dockerfile + build-args: | + RAILS_ENV=test + push: false + load: true + tags: app_test:latest + cache-from: type=gha + - + name: Run Brakeman + run: | + docker run --rm app_test:latest /bin/bash -c "bundle exec brakeman -o /dev/stdout" - - name: Build - run: script/ci/cibuild + specs: + name: Specs and coverage + runs-on: ubuntu-latest + needs: build-and-cache + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - + name: Build and cache + uses: docker/build-push-action@v6 + with: + context: . + file: ./Dockerfile + build-args: | + RAILS_ENV=test + push: false + load: true + tags: app_test:latest + cache-from: type=gha + - + name: Run RSpec and Simplecov + run: | + docker compose -p complete-app -f docker-compose.ci.yml \ + run --name app_test test /bin/bash -c "bin/rails spec" + - + name: Shutdown containers + run: docker compose -p app_test down && docker compose -p app_test rm - - name: Test - run: script/ci/test + shellcheck: + name: Linting scripts + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Run Shellceck + run: | + for file in $(git ls-files script/*) + do shellcheck -x "$file" + done