name: Build Laravel Container permissions: contents: read packages: write on: workflow_call: workflow_dispatch: env: should_push: ${{ github.ref == 'refs/heads/main' }} jobs: laravel-build: name: "Build: Laravel Container" runs-on: ubuntu-latest strategy: fail-fast: false matrix: version: - "8.0" - "8.1" - "8.2" - "8.3" steps: - uses: actions/checkout@v4 with: sparse-checkout: laravel - uses: docker/setup-qemu-action@v2 - uses: docker/setup-buildx-action@v2 - uses: docker/login-action@v3 name: Login to Docker Hub with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_PASSWORD }} - uses: docker/build-push-action@v3 name: Build & Push with: context: laravel platforms: ${{ !env.ACT && 'linux/amd64,linux/arm64' || 'linux/amd64' }} pull: true push: ${{ env.should_push && !env.ACT }} build-args: | PHP_VERSION=${{ matrix.version }} tags: | ghcr.io/benzine-framework/laravel:php-${{ matrix.version }} benzine/laravel:php-${{ matrix.version }} matthewbaggett/laravel:${{ matrix.version }} cache-from: ${{ !env.ACT && 'type=gha' || 'type=local,src=/tmp' }} cache-to: ${{ !env.ACT && 'type=gha,mode=max' || 'type=local,dest=/tmp' }} build-contexts: | php:nginx=docker-image://ghcr.io/benzine-framework/php:nginx-8.2 laravel-tag-latest: name: "Tag: Laravel Container" runs-on: ubuntu-latest needs: [laravel-build] steps: - uses: docker/login-action@v3 name: Login to Docker Hub with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_PASSWORD }} - name: "Retag matthewbaggett/laravel:8.3 to matthewbaggett/laravel:latest" if: ${{ !env.ACT }} run: | docker pull matthewbaggett/laravel:8.3 docker tag matthewbaggett/laravel:8.3 matthewbaggett/laravel:latest docker push matthewbaggett/laravel:latest