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