This expands on the current testing suite a bit by introducing a new workflow for testing functionality within the docker container. It runs the same test suite as the regular "test" workflow, but also performs a health check after running the app for 10 seconds to ensure functionality. The buildx workflow now waits for the docker test script to finish successfully, rather than the regular test workflow. This will hopefully avoid situations where new images are pushed with issues that aren't detected in regular testing of the app.
44 lines
1.4 KiB
YAML
44 lines
1.4 KiB
YAML
name: buildx
|
|
|
|
on:
|
|
workflow_run:
|
|
workflows: ["docker_tests"]
|
|
branches: [main]
|
|
types:
|
|
- completed
|
|
|
|
jobs:
|
|
on-success:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Wait for tests to succeed
|
|
if: ${{ github.event.workflow_run.conclusion != 'success' }}
|
|
run: exit 1
|
|
- name: checkout code
|
|
uses: actions/checkout@v2
|
|
- name: install buildx
|
|
id: buildx
|
|
uses: crazy-max/ghaction-docker-buildx@v1
|
|
with:
|
|
version: latest
|
|
- name: log in to docker hub
|
|
run: |
|
|
echo "${{ secrets.DOCKER_PASSWORD }}" | \
|
|
docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
|
|
- name: build and push the image
|
|
if: startsWith(github.ref, 'refs/heads/main') && github.actor == 'benbusby'
|
|
run: |
|
|
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
|
docker buildx ls
|
|
docker buildx build --push \
|
|
--tag benbusby/whoogle-search:latest \
|
|
--platform linux/amd64,linux/arm/v7,linux/arm64 .
|
|
- name: build and push tag
|
|
if: startsWith(github.ref, 'refs/tags')
|
|
run: |
|
|
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
|
docker buildx ls
|
|
docker buildx build --push \
|
|
--tag benbusby/whoogle-search:${GITHUB_REF#refs/*/v}\
|
|
--platform linux/amd64,linux/arm/v7,linux/arm64 .
|