Skip to content

Commit

Permalink
refactor github action to run sequentially (#121)
Browse files Browse the repository at this point in the history
* using build script
* based on #116
  from @danquack (Thank you!)
* one job runs sequentially
* builds and loads
* runs tests
* pushes if branch is master or thumbor-7 (for now) using the build
  script
  • Loading branch information
gingerlime committed Apr 28, 2023
1 parent d2a44f7 commit 971699d
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 116 deletions.
65 changes: 8 additions & 57 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
permissions:
contents: read
jobs:
thumbor-with-nginx-cache:
build-test-push:
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand All @@ -18,21 +18,9 @@ jobs:
id: thumbor
run: |
echo "VERSION=$(cat thumbor/requirements.txt| grep thumbor== | cut -d= -f 3)" >> $GITHUB_OUTPUT
- name: build thumbor image
## TODO set platform to linux/amd64,linux/arm64 once supported
- name: build images and load them for testing
run: |
docker buildx build --load --platform "linux/amd64" \
-f thumbor/Dockerfile \
--tag minimalcompact/thumbor:${{ steps.thumbor.outputs.VERSION }} \
--tag minimalcompact/thumbor:latest \
thumbor/
- name: build nginx-proxy-cache image
## TODO set platform to linux/amd64,linux/arm64 once supported
run: |
docker buildx build --load --platform=linux/amd64 --pull -f nginx-proxy-cache/Dockerfile \
--tag minimalcompact/thumbor-nginx-proxy-cache:${{ steps.thumbor.outputs.VERSION }} \
--tag minimalcompact/thumbor-nginx-proxy-cache:latest \
nginx-proxy-cache/
./build --extra "--load" --branch "${GITHUB_REF_NAME}"
- name: install bats
run: |
git clone https://github.com/bats-core/bats-core.git
Expand All @@ -41,46 +29,9 @@ jobs:
- name: run bats tests
run: |
for filename in tests/*.bats; do sudo bats --tap "$filename" || exit 1; done
thumbor_simd:
runs-on: ubuntu-latest
strategy:
matrix:
simd_level: ["sse4", "avx2"]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: get thumbor version
id: thumbor
run: |
echo "VERSION=$(cat thumbor/requirements.txt| grep thumbor== | cut -d= -f 3)" >> $GITHUB_OUTPUT
- name: build image
## TODO set platform to linux/amd64,linux/arm64 once supported
run: |
docker buildx build --platform "linux/amd64" --build-arg SIMD_LEVEL=${{ matrix.simd_level }} \
-f thumbor/Dockerfile \
--tag minimalcompact/thumbor:${{ steps.thumbor.outputs.VERSION }}-simd-${{ matrix.simd_level }} \
--tag minimalcompact/thumbor:latest-simd-${{ matrix.simd_level }} \
thumbor/
remote_cv:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: get thumbor version
id: thumbor
run: |
echo "VERSION=$(cat thumbor/requirements.txt| grep thumbor== | cut -d= -f 3)" >> $GITHUB_OUTPUT
- name: build image
- name: push
# TODO: temporarily pushing thumbor-7
if: github.ref == 'refs/heads/thumbor-7' || (github.event.pull_request.merged == true && github.ref == 'refs/heads/master')
# TODO: add registry credentials
run: |
docker buildx build --platform=linux/amd64,linux/arm64 --build-arg THUMBOR_TAG=latest -f remotecv/Dockerfile \
--tag minimalcompact/remotecv:${{ steps.thumbor.outputs.VERSION }} \
--tag minimalcompact/remotecv:latest \
remotecv/
./build --multiarch --push --branch "${GITHUB_REF_NAME}"
95 changes: 66 additions & 29 deletions build
Original file line number Diff line number Diff line change
@@ -1,41 +1,78 @@
#!/bin/bash
set -e

echo "--> BUILDING minimalcompact/thumbor"
docker build --pull -f thumbor/Dockerfile -t minimalcompact/thumbor thumbor/
# introspecting version by running the built image
THUMBOR_VERSION=`docker run --rm minimalcompact/thumbor bash -c "pip freeze |grep ^thumbor== | cut -d= -f 3"`
echo "THUMBOR VERSION: $THUMBOR_VERSION"
PLATFORM="linux/amd64"
EXTRA_ARGUMENTS=""
while true; do
case "$1" in
### Push requires authentication to minimalcompact docker hub
-p | --push)
EXTRA_ARGUMENTS="${EXTRA_ARGUMENTS} --push"
shift
;;
-b | --branch)
BRANCH="$2";
shift 2
;;
### Images have issues building multi arch, so hold behind a feature flag
-m | --multiarch)
PLATFORM="${PLATFORM},linux/arm64"
shift
;;
## Create should be run once, or in ci, if docker buildx ls doesnt contain supported platforms
-c | --create)
docker buildx create --use
shift
;;
-e | --extra )
EXTRA_ARGUMENTS="${EXTRA_ARGUMENTS} $2"
shift 2
;;
* ) break ;;
esac
done

EXTRA_ARGUMENTS="${EXTRA_ARGUMENTS} --platform $PLATFORM"
THUMBOR_VERSION=$(cat thumbor/requirements.txt| grep thumbor== | cut -d= -f 3)

echo "--> TAGGING minimalcompact/thumbor:$THUMBOR_VERSION"
docker tag minimalcompact/thumbor minimalcompact/thumbor:$THUMBOR_VERSION
echo "--> TAGGING minimalcompact/thumbor:latest"
docker tag minimalcompact/thumbor minimalcompact/thumbor:latest
echo "--> BUILDING minimalcompact/thumbor"
[ "$BRANCH" == "master" ] && EXTRA_TAG="--tag minimalcompact/thumbor:latest"
docker buildx build $EXTRA_ARGUMENTS --pull -f thumbor/Dockerfile \
--tag minimalcompact/thumbor \
--tag minimalcompact/thumbor:$THUMBOR_VERSION \
$EXTRA_TAG \
thumbor/

echo "--> BUILDING minimalcompact/thumbor:simd-sse4"
docker build --build-arg SIMD_LEVEL=sse4 -f thumbor/Dockerfile -t minimalcompact/thumbor-simd-sse4 thumbor/
echo "--> TAGGING minimalcompact/thumbor:$THUMBOR_VERSION-simd-sse4"
docker tag minimalcompact/thumbor-simd-sse4 minimalcompact/thumbor:$THUMBOR_VERSION-simd-sse4
echo "--> TAGGING minimalcompact/thumbor:latest-simd-sse4"
docker tag minimalcompact/thumbor-simd-sse4 minimalcompact/thumbor:latest-simd-sse4
[ "$BRANCH" == "master" ] && EXTRA_TAG="--tag minimalcompact/thumbor:latest-simd-sse4t"
docker buildx build $EXTRA_ARGUMENTS --build-arg SIMD_LEVEL=sse4 -f thumbor/Dockerfile \
--tag minimalcompact/thumbor-simd-sse4 \
--tag minimalcompact/thumbor:$THUMBOR_VERSION-simd-sse4 \
$EXTRA_TAG \
thumbor/


echo "--> BUILDING minimalcompact/thumbor:simd-avx2"
docker build --build-arg SIMD_LEVEL=avx2 -f thumbor/Dockerfile -t minimalcompact/thumbor-simd-avx2 thumbor/
echo "--> TAGGING minimalcompact/thumbor:$THUMBOR_VERSION-simd-avx2"
docker tag minimalcompact/thumbor-simd-avx2 minimalcompact/thumbor:$THUMBOR_VERSION-simd-avx2
echo "--> TAGGING minimalcompact/thumbor:latest-simd-avx2"
docker tag minimalcompact/thumbor-simd-avx2 minimalcompact/thumbor:latest-simd-avx2
[ "$BRANCH" == "master" ] && EXTRA_TAG="--tag minimalcompact/thumbor:latest-simd-avx2"
docker buildx build $EXTRA_ARGUMENTS --build-arg SIMD_LEVEL=avx2 -f thumbor/Dockerfile \
--tag minimalcompact/thumbor-simd-avx2 \
--tag minimalcompact/thumbor:$THUMBOR_VERSION-simd-avx2 \
$EXTRA_TAG \
thumbor/

echo "--> BUILDING minimalcompact/thumbor-nginx-proxy-cache"
docker build --pull -f nginx-proxy-cache/Dockerfile -t minimalcompact/thumbor-nginx-proxy-cache nginx-proxy-cache/
echo "--> TAGGING minimalcompact/thumbor-nginx-proxy-cache:$THUMBOR_VERSION"
docker tag minimalcompact/thumbor-nginx-proxy-cache minimalcompact/thumbor-nginx-proxy-cache:$THUMBOR_VERSION
echo "--> TAGGING minimalcompact/thumbor-nginx-proxy-cache:latest"
docker tag minimalcompact/thumbor-nginx-proxy-cache minimalcompact/thumbor-nginx-proxy-cache:latest
[ "$BRANCH" == "master" ] && EXTRA_TAG="--tag minimalcompact/thumbor-nginx-proxy-cache:latest"
docker buildx build $EXTRA_ARGUMENTS --pull -f nginx-proxy-cache/Dockerfile \
--tag minimalcompact/thumbor-nginx-proxy-cache \
--tag minimalcompact/thumbor-nginx-proxy-cache:$THUMBOR_VERSION \
$EXTRA_TAG \
nginx-proxy-cache/


echo "--> BUILDING minimalcompact/remotecv"
docker build --build-arg THUMBOR_TAG=latest -f remotecv/Dockerfile -t minimalcompact/remotecv remotecv/
echo "--> TAGGING minimalcompact/remotecv:$THUMBOR_VERSION"
docker tag minimalcompact/remotecv minimalcompact/remotecv:$THUMBOR_VERSION
echo "--> TAGGING minimalcompact/remotecv:latest"
docker tag minimalcompact/remotecv minimalcompact/remotecv:latest
[ "$BRANCH" == "master" ] && EXTRA_TAG="--tag minimalcompact/remotecv:latest"
docker buildx build --platform=linux/amd64,linux/arm64 --build-arg THUMBOR_TAG=latest -f remotecv/Dockerfile \
--tag minimalcompact/remotecv \
--tag minimalcompact/remotecv:$THUMBOR_VERSION \
$EXTRA_TAG \
remotecv/
30 changes: 0 additions & 30 deletions push

This file was deleted.

0 comments on commit 971699d

Please sign in to comment.