Akaunting/.github/workflows/docker-hub.yml

98 lines
4.0 KiB
YAML

name: Publish Docker images
on:
schedule:
- cron: '0 10 * * *' # everyday at 10am
push:
branches:
- '**'
pull_request:
jobs:
docker:
runs-on: ubuntu-20.04
strategy:
matrix:
image: ['', fpm, fpm-alpine, fpm-alpine-nginx, fpm-alpine-nginx-composer, fpm-alpine-nginx-composer-supervisor]
include:
- image: ''
file: Dockerfile
- image: fpm
file: fpm.Dockerfile
- image: fpm-alpine
file: fpm-alpine.Dockerfile
- image: fpm-alpine-nginx
file: fpm-alpine-nginx.Dockerfile
- image: fpm-alpine-nginx-composer
file: fpm-alpine-nginx-composer.Dockerfile
- image: fpm-alpine-nginx-composer-supervisor
file: fpm-alpine-nginx-composer-supervisor.Dockerfile
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Define tag name
id: tag-name
run: |
if [ "${GITHUB_REF}" == "refs/heads/master" -a "${GITHUB_EVENT_NAME}" != "pull_request" ]; then
curl -s https://api.github.com/repos/akaunting/akaunting/releases/latest \
| jq -r .tag_name | sed \
-e 's/^/::set-output name=tag::/'
else
echo -n "::set-output name=tag::"
echo "$GITHUB_REF" | cut -d/ -f3- | tr '/' '_'
fi
- name: Define images tags
id: image-tags
run: |
if [ "${GITHUB_REF}" == "refs/heads/master" -a "${GITHUB_EVENT_NAME}" != "pull_request" ]; then
if [ -z ${{ matrix.image }} ]; then
echo ${{ steps.tag-name.outputs.tag }} | sed \
-e 's/\(\(\([0-9]\+\)\.[0-9]\+\)\.[0-9]\+\)/\1,\2,\3,/' \
-e 's/\([^,]\+\),/akaunting\/akaunting:\1,/g' \
-e 's/^/::set-output name=tags::/' \
-e 's/$/akaunting\/akaunting:latest/'
else
echo ${{ steps.tag-name.outputs.tag }} | sed \
-e 's/\(\(\([0-9]\+\)\.[0-9]\+\)\.[0-9]\+\)/\1-${{ matrix.image }},\2-${{ matrix.image }},\3-${{ matrix.image }},/' \
-e 's/\([^,]\+\),/akaunting\/akaunting:\1,/g' \
-e 's/^/::set-output name=tags::/'
fi
else
if [ -z ${{ matrix.image }} ]; then
echo -n "::set-output name=tags::akaunting/akaunting:"
echo "$GITHUB_REF" | cut -d/ -f3- | tr '/' '_'
else
echo -n "::set-output name=tags::akaunting/akaunting:"
echo "$(echo "$GITHUB_REF" | cut -d/ -f3- | tr '/' '_')-${{ matrix.image }}"
fi
fi
- name: Set up QEMU
if: matrix.image == '' || matrix.image == 'fpm' || matrix.image == 'fpm-alpine' || matrix.image == 'fpm-alpine-nginx'
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
if: matrix.image == '' || matrix.image == 'fpm' || matrix.image == 'fpm-alpine' || matrix.image == 'fpm-alpine-nginx'
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
if: github.event_name != 'pull_request'
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push images
if: matrix.image == '' || matrix.image == 'fpm' || matrix.image == 'fpm-alpine' || matrix.image == 'fpm-alpine-nginx'
uses: docker/build-push-action@v2
with:
context: .
file: ./${{ matrix.file }}
platforms: linux/amd64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.image-tags.outputs.tags }}
- name: Build and push images
if: matrix.image == 'fpm-alpine-nginx-composer' || matrix.image == 'fpm-alpine-nginx-composer-supervisor'
uses: docker/build-push-action@v2
with:
context: .
file: ./${{ matrix.file }}
platforms: linux/amd64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.image-tags.outputs.tags }}