Skip to content

improve github actions #86

improve github actions

improve github actions #86

Workflow file for this run

name: Build test and push
on:
pull_request:
workflow_dispatch:
push:
branches:
- master
permissions:
contents: read
packages: write
jobs:
build:
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 images and load them for testing
run: |
./build
- name: Save Docker images
run: |
mkdir -p docker_images
docker save -o docker_images/images.tar $(docker images --format "{{.Repository}}:{{.Tag}}" --filter "dangling=false")
- name: Upload Docker images
uses: actions/upload-artifact@v2
with:
name: docker-images
path: docker_images/images.tar
prepare-matrix:
runs-on: ubuntu-latest
needs: build
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set test matrix
id: set-matrix
run: |
TEST_FILES=$(ls tests/*.bats | xargs -n 1 basename | jq -R -s -c 'split("\n")[:-1]')
echo "::set-output name=matrix::{\"test_file\": $TEST_FILES}"
test:
needs: [build, prepare-matrix]
runs-on: ubuntu-latest
strategy:
matrix: ${{fromJson(needs.prepare-matrix.outputs.matrix)}}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Download Docker images
uses: actions/download-artifact@v2
with:
name: docker-images
path: docker_images
- name: Load Docker images
run: |
docker load -i docker_images/images.tar
- name: install bats
run: |
git clone https://github.com/bats-core/bats-core.git
cd bats-core
sudo ./install.sh /usr/local
- name: run bats tests
uses: nick-fields/retry@v2
with:
timeout_minutes: 2
max_attempts: 3
command: |
docker image ls -a
sudo bats --tap "tests/${{ matrix.test_file }}" || exit 1
push:
needs: test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/master'
steps:
- name: Checkout
uses: actions/checkout@v3
- name: login to ghcr.io
uses: docker/login-action@v2
with:
registry: ghcr.io
username: minimalcompact
password: ${{ secrets.GH_TOKEN }}
- name: push when master
run: |
./push