Files
curl-impersonate/.github/workflows/build-and-test.yml
T
lwthiker ce95990620 Split GitHub Action cache to two directories
The GitHub Action workflow uses a cache to speed up the Docker builds.
However, it seems that it only partially works, saving only the Docker
layers for the Firefox build. This is an attempt to solve it by using
two separate cache paths, one for each build.
2022-03-05 13:30:14 +02:00

86 lines
2.6 KiB
YAML

name: Build and test
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build-and-test:
name: Build curl-impersonate and run the tests
runs-on: ubuntu-latest
services:
# A local registry is needed to push the build images to because we use
# the 'docker-container' driver. See
# https://github.com/docker/buildx/issues/301
# and
# See https://github.com/docker/build-push-action/blob/master/docs/advanced/local-registry.md
registry:
image: registry:2
ports:
- 5000:5000
steps:
- name: Check out the repo
uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
with:
driver-opts: network=host
# Set up Docker caching. See
# https://github.com/docker/build-push-action/blob/master/docs/advanced/cache.md
- name: Cache Docker layers
uses: actions/cache@v2
with:
path: |
/tmp/.buildx-cache-ff
/tmp/.buildx-cache-ch
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Build the Chrome version of curl-impersonate
uses: docker/build-push-action@v2
with:
push: true
context: chrome/
tags: localhost:5000/curl-impersonate/chrome
cache-from: type=local,src=/tmp/.buildx-cache-ch
cache-to: type=local,dest=/tmp/.buildx-cache-ch-new,mode=max
- name: Build the Firefox version of curl-impersonate
uses: docker/build-push-action@v2
with:
push: true
context: firefox/
tags: localhost:5000/curl-impersonate/ff
cache-from: type=local,src=/tmp/.buildx-cache-ff
cache-to: type=local,dest=/tmp/.buildx-cache-ff-new,mode=max
- name: Build the tests container
uses: docker/build-push-action@v2
with:
load: true
context: tests/
tags: curl-impersonate-tests:latest
build-args: |
FIREFOX_IMAGE=localhost:5000/curl-impersonate/ff
CHROME_IMAGE=localhost:5000/curl-impersonate/chrome
- name: Run the tests
run: docker run --rm curl-impersonate-tests --log-cli-level DEBUG
# Temp fix
# https://github.com/docker/build-push-action/issues/252
# https://github.com/moby/buildkit/issues/1896
- name: Move cache
run: |
rm -rf /tmp/.buildx-cache-ff
mv /tmp/.buildx-cache-ff-new /tmp/.buildx-cache-ff
rm -rf /tmp/.buildx-cache-ch
mv /tmp/.buildx-cache-ch-new /tmp/.buildx-cache-ch