Update workflows

This commit is contained in:
Darko Gjorgjijoski
2024-01-30 07:38:00 +02:00
parent 548f5fa431
commit a85c682bcb
3 changed files with 199 additions and 88 deletions

128
.github/workflows/check.yaml vendored Normal file
View File

@@ -0,0 +1,128 @@
name: Check
# Run this workflow every time a new commit pushed to your repository
on:
push:
paths-ignore:
- '**/*.md'
- 'public/build/*.js'
- 'public/build/**/*.js'
pull_request:
paths-ignore:
- '**/*.md'
- 'public/build/*.js'
- 'public/build/**/*.js'
# Allow manually triggering the workflow.
workflow_dispatch:
jobs:
kill_previous:
name: 0⃣ Kill previous runs
runs-on: ubuntu-latest
# We want to run on external PRs, but not on our own internal PRs as they'll be run by the push to the branch.
if: (github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository)
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.12.1
with:
access_token: ${{ github.token }}
php_syntax_errors:
name: 1⃣ PHP Code Style errors
runs-on: ubuntu-latest
needs:
- kill_previous
steps:
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.2
- name: Checkout code
uses: actions/checkout@v4
- name: Install dependencies
uses: ramsey/composer-install@v2
- name: Check source code for syntax errors
run: ./vendor/bin/pint --test
tests:
name: 2⃣ PHP ${{ matrix.php-version }} Tests
needs:
- php_syntax_errors
runs-on: ubuntu-latest
strategy:
matrix:
php-version:
- 8.2
- 8.3
env:
extensions: bcmath, curl, dom, gd, imagick, json, libxml, mbstring, pcntl, pdo, pdo_mysql, zip
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup PHP Action
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
extensions: ${{ env.extensions }}
coverage: xdebug
tools: pecl, composer
- name: Install Composer dependencies
uses: ramsey/composer-install@v2
- name: Apply tests ${{ matrix.php-version }}
run: php artisan test
createReleaseFile:
name: 3⃣ Build / Upload - Release File
if: github.ref_type == 'tag'
needs:
- tests
runs-on: ubuntu-latest
env:
extensions: bcmath, curl, dom, gd, imagick, json, libxml, mbstring, pcntl, pdo, pdo_mysql, zip
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.2
extensions: ${{ env.extensions }}
coverage: none
- name: Install Composer dependencies
uses: ramsey/composer-install@v2
with:
composer-options: --no-dev
- name: Use Node.js 20
uses: actions/setup-node@v3
with:
node-version: 20
- name: Install
run: npm install
- name: Compile Front-end
run: npm run build
- name: Build Dist
run: |
make clean dist
- name: Upload package
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ github.token }}
file: InvoiceShelf.zip
asset_name: InvoiceShelf.zip
tag: ${{ github.ref }}
overwrite: true

View File

@@ -1,88 +0,0 @@
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