Files
InvoiceShelf/.github/workflows/ci.yaml
2024-01-29 15:15:30 +01:00

89 lines
3.3 KiB
YAML

name: CI
on:
push:
branches:
- master
tags:
- "*"
pull_request:
branches: [ master ]
env:
INVOICESHELF_VERSION: 1.0.0-beta3
jobs:
build-test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php: ['8.1', '8.2']
name: PHP ${{ matrix.php }}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: exif
- name: Install PHP dependencies
run: composer update --ignore-platform-req=php --no-interaction --no-progress
- name: Check coding style
run: ./vendor/bin/pint --test
- name: Unit Tests
run: php ./vendor/bin/pest
docker:
if: ${{ needs.build-test.result == 'success' && github.event_name != 'pull_request'}}
name: Docker build and publish
runs-on: ubuntu-latest
needs:
- build-test
steps:
- name: derive version tag
run: |
if [[ "${{ github.ref }}" =~ ^refs/tags* ]]; then
GITHUB_TAG=${GITHUB_REF#refs/tags/}
echo "running for a release $GITHUB_TAG"
if [ "$GITHUB_TAG" != "${{ env.INVOICESHELF_VERSION }}" ]; then
echo "tag $GITHUB_TAG pushed does not match with INVOICESHELF_VERSION ${{ env.INVOICESHELF_VERSION }} in .github/worlflows/ci. Please push correct release tag"
exit 1
fi
echo "VERSION_TAG=${{ env.INVOICESHELF_VERSION }}" >> $GITHUB_ENV
else
echo "running for a master commit"
if [ $(git tag -l ${{ env.INVOICESHELF_VERSION }}) ]; then
echo "Version ${{ env.INVOICESHELF_VERSION }} already released. Please update your version in .github/worlflows/ci"
exit 1
fi
echo "VERSION_TAG=${{ env.INVOICESHELF_VERSION }}" >> $GITHUB_ENV
fi
- name: Checkout
uses: actions/checkout@v2
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Docker Build and push invoiceshelf-php
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64,linux/arm64
file: docker/Dockerfile
push: true
tags: invoiceshelf/invoiceshelf-php:${{env.VERSION_TAG}},invoiceshelf/invoiceshelf-php:latest
- name: Docker Build and push invoiceshelf-nginx
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64,linux/arm64
file: docker/nginx.Dockerfile
push: true
tags: invoiceshelf/invoiceshelf-nginx:${{env.VERSION_TAG}},invoiceshelf/invoiceshelf-nginx:latest