Use docker/build-push-action to cache docker build #766
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 | |
- 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: Build base image | |
uses: docker/build-push-action@v4 | |
with: | |
context: ./docker | |
file: docker/Dockerfile.base | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
tags: mtgupf/freesound:2023-07 | |
push: false | |
outputs: type=docker | |
load: true | |
- name: Build cached image | |
uses: docker/build-push-action@v4 | |
with: | |
context: . | |
file: docker/Dockerfile.workers_web | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
load: true | |
- name: Pull docker images | |
run: docker-compose -f docker-compose.test.yml pull | |
- 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 }} |