Skip to content

Commit

Permalink
Rename run_cypress_tests to test & use buildx
Browse files Browse the repository at this point in the history
buildx is used for faster builds
we also set up ghcr to use docker layer caching for hopefully even
faster build times
  • Loading branch information
Splines committed Jan 10, 2024
1 parent 103789d commit 68c0122
Show file tree
Hide file tree
Showing 7 changed files with 145 additions and 6 deletions.
70 changes: 70 additions & 0 deletions .github/workflows/docker-compose-cache.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
{
"target": {
"redis": {
"cache-from": [
"type=registry,ref=ghcr.io/MaMpf-HD/redis:cache"
],
"cache-to": [
"type=registry,ref=ghcr.io/MaMpf-HD/redis:cache"
],
"output": [
"type=docker"
]
},
"solr": {
"cache-from": [
"type=registry,ref=ghcr.io/MaMpf-HD/solr:cache"
],
"cache-to": [
"type=registry,ref=ghcr.io/MaMpf-HD/solr:cache"
],
"output": [
"type=docker"
]
},
"db": {
"cache-from": [
"type=registry,ref=ghcr.io/MaMpf-HD/db:cache"
],
"cache-to": [
"type=registry,ref=ghcr.io/MaMpf-HD/db:cache"
],
"output": [
"type=docker"
]
},
"mailcatcher": {
"cache-from": [
"type=registry,ref=ghcr.io/MaMpf-HD/mailcatcher:cache"
],
"cache-to": [
"type=registry,ref=ghcr.io/MaMpf-HD/mailcatcher:cache"
],
"output": [
"type=docker"
]
},
"mampf": {
"cache-from": [
"type=registry,ref=ghcr.io/MaMpf-HD/mampf:cache"
],
"cache-to": [
"type=registry,ref=ghcr.io/MaMpf-HD/mampf:cache"
],
"output": [
"type=docker"
]
},
"cypress_runner": {
"cache-from": [
"type=registry,ref=ghcr.io/MaMpf-HD/cypress_runner:cache"
],
"cache-to": [
"type=registry,ref=ghcr.io/MaMpf-HD/cypress_runner:cache"
],
"output": [
"type=docker"
]
}
}
}
69 changes: 69 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Tests

on:
push:
branches:
- main
- dev
- experimental
pull_request:
types: [opened, reopened, synchronize, ready_for_review]

jobs:
unit-test-job:
name: Unit tests
runs-on: ubuntu-latest
steps:
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive

- name: Build docker images
run: docker buildx bake --file docker/test/docker-compose.yml --file .github/workflows/docker-compose-cache.json

# For docker layer caching also see this article [1]
# - name: Build docker images
# uses: docker/build-push-action@v5
# with:
# push: false # only build
# context: .
# cache-from: type=gha
# cache-to: type=gha,mode=max

- name: Create and migrate DB
run: docker compose run --entrypoint "" mampf sh -c "rake db:create db:migrate db:test:prepare"
working-directory: docker/test

- name: Reindex sunspot
working-directory: docker/test
run: |
docker compose run --entrypoint="" mampf sh -c "RAILS_ENV=test rake sunspot:reindex"
- name: Run unit tests
working-directory: docker/test
run: docker compose run --entrypoint="" mampf sh -c "RAILS_ENV=test rails spec"

- name: Send test coverage report to Codecov
uses: codecov/codecov-action@v3
with:
files: ./coverage/coverage.xml
fail_ci_if_error: true
verbose: true

# [1] https://depot.dev/blog/docker-layer-caching-in-github-actions#docker-layer-caching-in-github-actions
# https://stackoverflow.com/questions/61491484/how-to-cache-docker-compose-build-inside-github-action
# https://docs.docker.com/build/ci/github-actions/cache/
# https://github.com/docker/build-push-action/issues/493#issuecomment-961559685
# https://github.com/orgs/community/discussions/25728
# https://www.deploysentinel.com/blog/docker-buildx-cache-with-github-actions
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,12 @@ services:
mampf:
build:
context: ./../..
dockerfile: docker/run_cypress_tests/Dockerfile
dockerfile: docker/test/Dockerfile
image: mampf:tests
ports:
- "127.0.0.1:3000:3000"
# TODO: Use this
# entrypoint: /usr/src/app/docker/run_cypress_tests/run_tests.sh
# entrypoint: /usr/src/app/docker/test/run_tests.sh
entrypoint: ./entrypoint.sh
environment:
RAILS_ENV: test
Expand Down Expand Up @@ -75,7 +75,7 @@ services:
image: mampf-cypress
build:
context: ./../..
dockerfile: docker/run_cypress_tests/Dockerfile_cypress
dockerfile: docker/test/Dockerfile_cypress
environment:
CYPRESS_baseUrl: http://mampf:3000
entrypoint: bash -c "while ! curl -s $$CYPRESS_baseUrl > /dev/null; do echo waiting for MaMpf to come online at $$CYPRESS_baseUrl; sleep 1; done; npx cypress run $$@"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ services:
mampf:
build:
context: ./../..
dockerfile: docker/run_cypress_tests/Dockerfile
dockerfile: docker/test/Dockerfile
image: mampf:tests
# TODO: Use this
# entrypoint: /usr/src/app/docker/run_cypress_tests/run_tests.sh
# entrypoint: /usr/src/app/docker/test/run_tests.sh
entrypoint: /usr/src/app/entrypoint.sh
environment:
RAILS_ENV: test
Expand Down Expand Up @@ -83,7 +83,7 @@ services:
image: mampf-cypress
build:
context: ./../..
dockerfile: docker/run_cypress_tests/Dockerfile_cypress
dockerfile: docker/test/Dockerfile_cypress
environment:
CYPRESS_baseUrl: http://mampf:3000
volumes:
Expand Down
File renamed without changes.

0 comments on commit 68c0122

Please sign in to comment.