Refactor: LaTeX processing in external Docker container #699
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Unit Tests | |
on: | |
push: | |
paths-ignore: | |
- "*.md" | |
- "docs/**" | |
pull_request: | |
paths-ignore: | |
- "*.md" | |
- "docs/**" | |
env: | |
RAILS_ENV: "test" | |
DF_STUDENT_WORK_DIR: "/student-work" | |
DF_INSTITUTION_HOST: "http://localhost:3000" | |
DF_INSTITUTION_PRODUCT_NAME: "OnTrack" | |
DF_SECRET_KEY_BASE: "test-secret-key-test-secret-key!" | |
DF_SECRET_KEY_ATTR: "test-secret-key-test-secret-key!" | |
DF_SECRET_KEY_DEVISE: "test-secret-key-test-secret-key!" | |
DF_TEST_DB_ADAPTER: "mysql2" | |
DF_TEST_DB_HOST: "mariadb" | |
DF_TEST_DB_DATABASE: "doubtfire-test" | |
DF_TEST_DB_USERNAME: "dfire" | |
DF_TEST_DB_PASSWORD: "pwd" | |
OVERSEER_ENABLED: "0" | |
DF_ENCRYPTION_PRIMARY_KEY: "AMLOMYA5GV8B4fTK3VKMhVGn8WdvUW8g" | |
DF_ENCRYPTION_DETERMINISTIC_KEY: "anlmuJ6cB3bN3biXRbYvmPsC5ALPFqGG" | |
DF_ENCRYPTION_KEY_DERIVATION_SALT: "hzPR8D4qpOnAg7VeAhkhWw6JmmzKJB10" | |
DF_REDIS_SIDEKIQ_URL: "redis://redis:6379/0" | |
LATEX_CONTAINER_NAME: doubtfire-texlive | |
LATEX_BUILD_PATH: /texlive/shell/latex_build.sh | |
jobs: | |
unit-tests: | |
runs-on: ubuntu-latest | |
services: | |
mariadb: | |
image: mariadb | |
env: | |
MARIADB_USER: ${{ env.DF_TEST_DB_USERNAME }} | |
MARIADB_PASSWORD: ${{ env.DF_TEST_DB_PASSWORD }} | |
MARIADB_DATABASE: ${{ env.DF_TEST_DB_DATABASE }} | |
MARIADB_ALLOW_EMPTY_ROOT_PASSWORD: yes # This is required or the healthcheck script can't connect to the db | |
options: --health-cmd "/usr/local/bin/healthcheck.sh --connect --innodb_initialized" --health-interval 10s --health-timeout 5s --health-retries 5 | |
redis: | |
image: redis:7.0 | |
options: --health-cmd "redis-cli ping | grep PONG" --health-interval 1s --health-timeout 5s --health-retries 5 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up docker buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Build TexLive image | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: texlive.Dockerfile | |
push: false | |
load: true | |
tags: doubtfire-texlive-development:local | |
cache-from: type=gha,scope=texlive | |
cache-to: type=gha,mode=max,scope=texlive | |
- name: Build base doubtfire-api development image | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
push: false | |
load: true | |
tags: doubtfire-api-development:local | |
cache-from: type=gha,scope=doubtfire-api | |
cache-to: type=gha,mode=max,scope=doubtfire-api | |
- name: Start TexLive service | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: doubtfire-texlive-development:local | |
options: > | |
--name ${{ env.LATEX_CONTAINER_NAME }} | |
-v ${{ github.workspace }}/student-work:/student-work | |
-v ${{ github.workspace }}/public/assets/images:/doubtfire/public/assets/images | |
-v ${{ github.workspace }}/test_files:/doubtfire/test_files | |
-v ${{ github.workspace }}/tmp/rails-latex:/workdir/texlive-latex | |
--detach | |
run: /bin/sh -c "while sleep 5000; do :; done" | |
- name: Test TexLive container | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: doubtfire-api-development:local | |
options: > | |
-v ${{ github.workspace }}:/doubtfire | |
-v /var/run/docker.sock:/var/run/docker.sock | |
run: docker exec -t ${{ env.LATEX_CONTAINER_NAME }} lualatex -v | |
- name: Populate database | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: doubtfire-api-development:local | |
options: > | |
-v ${{ github.workspace }}:/doubtfire | |
-v ${{ github.workspace }}/student-work:/student-work | |
-v /var/run/docker.sock:/var/run/docker.sock | |
-e RAILS_ENV | |
-e DF_STUDENT_WORK_DIR | |
-e DF_INSTITUTION_HOST | |
-e DF_INSTITUTION_PRODUCT_NAME | |
-e DF_SECRET_KEY_BASE | |
-e DF_SECRET_KEY_ATTR | |
-e DF_SECRET_KEY_DEVISE | |
-e DF_TEST_DB_ADAPTER | |
-e DF_TEST_DB_HOST | |
-e DF_TEST_DB_DATABASE | |
-e DF_TEST_DB_USERNAME | |
-e DF_TEST_DB_PASSWORD | |
-e OVERSEER_ENABLED | |
-e DF_ENCRYPTION_PRIMARY_KEY | |
-e DF_ENCRYPTION_DETERMINISTIC_KEY | |
-e DF_ENCRYPTION_KEY_DERIVATION_SALT | |
-e DF_REDIS_SIDEKIQ_URL | |
-e LATEX_CONTAINER_NAME | |
-e LATEX_BUILD_PATH | |
run: bundle exec rake db:populate | |
- name: Run unit tests | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: doubtfire-api-development:local | |
options: > | |
-v ${{ github.workspace }}:/doubtfire | |
-v ${{ github.workspace }}/student-work:/student-work | |
-v /var/run/docker.sock:/var/run/docker.sock | |
-e RAILS_ENV | |
-e DF_STUDENT_WORK_DIR | |
-e DF_INSTITUTION_HOST | |
-e DF_INSTITUTION_PRODUCT_NAME | |
-e DF_SECRET_KEY_BASE | |
-e DF_SECRET_KEY_ATTR | |
-e DF_SECRET_KEY_DEVISE | |
-e DF_TEST_DB_ADAPTER | |
-e DF_TEST_DB_HOST | |
-e DF_TEST_DB_DATABASE | |
-e DF_TEST_DB_USERNAME | |
-e DF_TEST_DB_PASSWORD | |
-e OVERSEER_ENABLED | |
-e DF_ENCRYPTION_PRIMARY_KEY | |
-e DF_ENCRYPTION_DETERMINISTIC_KEY | |
-e DF_ENCRYPTION_KEY_DERIVATION_SALT | |
-e DF_REDIS_SIDEKIQ_URL | |
-e LATEX_CONTAINER_NAME | |
-e LATEX_BUILD_PATH | |
run: TERM=xterm bundle exec rails test | |
- name: Stop TexLive service | |
run: docker rm -f ${{ env.LATEX_CONTAINER_NAME }} |