Use docker/build-push-action to cache docker build #735
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: Freesound Tests | |
on: | |
push: | |
branches: [ master ] | |
pull_request: | |
branches: [ '*' ] | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
with: | |
install: true | |
driver: docker | |
- name: Notify workflow starting | |
uses: voxmedia/github-action-slack-notify-build@v1 | |
continue-on-error: true | |
if: success() | |
id: slack | |
with: | |
channel_id: ${{ secrets.SLACK_NOTIFICATIONS_CHANNEL_ID }} | |
status: STARTING | |
color: warning | |
env: | |
SLACK_BOT_TOKEN: ${{ secrets.SLACK_NOTIFICATIONS_BOT_TOKEN }} | |
- name: Setup | |
run: bash -c 'mkdir -p ./freesound-data/{packs,uploads,avatars} && echo FS_USER_ID_FROM_ENV=$(id -u) > .env && cp freesound/local_settings.example.py freesound/local_settings.py' | |
- name: update settings file | |
run: sed -i 's#^DISPLAY_DEBUG_TOOLBAR.*#DISPLAY_DEBUG_TOOLBAR = False#' freesound/local_settings.py | |
- name: Login to Docker Hub | |
run: echo ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin | |
continue-on-error: true | |
- name: Log in to GitHub registry | |
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin | |
- name: Pull docker images | |
run: docker-compose -f docker-compose.test.yml pull | |
- name: Build base image | |
uses: docker/build-push-action@v4 | |
with: | |
context: docker | |
file: Dockerfile.base | |
cache-from: ghcr.io/mtg/freesound-base-cache:latest | |
# use mode=max to cache intermediate layers as well | |
cache-to: type=registry,mode=max,oci-mediatypes=true,compression=zstd,compression-level=7,ref=ghcr.io/mtg/freesound-base-cache:latest | |
tags: freesound:2023-07 | |
- name: Build cached image | |
uses: docker/build-push-action@v4 | |
with: | |
context: . | |
file: docker/Dockerfile.workers_web | |
cache-from: ghcr.io/mtg/freesound-test-cache:latest | |
# use mode=max to cache intermediate layers as well | |
cache-to: type=registry,mode=max,oci-mediatypes=true,compression=zstd,compression-level=7,ref=ghcr.io/mtg/freesound-test-cache:latest | |
- name: Build images | |
run: docker-compose -f docker-compose.test.yml build test_runner | |
- name: Run tests | |
run: docker-compose -f docker-compose.test.yml run --rm test_runner python manage.py test --noinput --settings=freesound.test_settings | |
- name: Notify success | |
uses: voxmedia/github-action-slack-notify-build@v1 | |
continue-on-error: true | |
if: success() | |
with: | |
message_id: ${{ steps.slack.outputs.message_id }} | |
channel_id: ${{ secrets.SLACK_NOTIFICATIONS_CHANNEL_ID }} | |
status: SUCCESS | |
color: good | |
env: | |
SLACK_BOT_TOKEN: ${{ secrets.SLACK_NOTIFICATIONS_BOT_TOKEN }} | |
- name: Notify failure | |
uses: voxmedia/github-action-slack-notify-build@v1 | |
if: failure() | |
with: | |
message_id: ${{ steps.slack.outputs.message_id }} | |
channel_id: ${{ secrets.SLACK_NOTIFICATIONS_CHANNEL_ID }} | |
status: FAILED | |
color: danger | |
env: | |
SLACK_BOT_TOKEN: ${{ secrets.SLACK_NOTIFICATIONS_BOT_TOKEN }} |