diff --git a/.github/workflows/perl.yml b/.github/workflows/perl.yml new file mode 100644 index 0000000..de15f1e --- /dev/null +++ b/.github/workflows/perl.yml @@ -0,0 +1,98 @@ +name: Build Perl + +on: + workflow_call: + workflow_dispatch: + push: + branches: + - main + paths: + - "perl/**" + - ".github/workflows/perl.yml" + +permissions: + contents: read + packages: write + +env: + should_push: ${{ github.ref == 'refs/heads/main' }} + +jobs: + perl-build: + name: "Build Perl" + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + ubuntu: + - focal + - jammy + - lunar + - mantic + #- noble + #- devel + - rolling + - latest + steps: + - uses: docker/setup-qemu-action@v2 + + - uses: docker/setup-buildx-action@v2 + + - name: "Setup: Login to Docker Hub" + if: ${{ env.should_push }} + uses: docker/login-action@v3 + with: + username: matthewbaggett + password: ${{ secrets.DOCKER_HUB_PASSWORD }} + + - name: "Setup: Login to GHCR" + if: ${{ env.should_push }} + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: matthewbaggett + password: ${{ secrets.GHCR_PASSWORD }} + + - uses: actions/checkout@v4 + with: + sparse-checkout: perl + + - uses: docker/build-push-action@v5 + name: "Build: Build & Push" + with: + context: perl + target: release + platforms: ${{ !env.ACT && 'linux/amd64,linux/arm64' || 'linux/amd64' }} + pull: true + push: true + tags: | + ghcr.io/benzine-framework/perl:${{ matrix.ubuntu }} + matthewbaggett/perl:${{ matrix.ubuntu }} + benzine/perl:${{ matrix.ubuntu }} + build-args: | + ${{ steps.build_args.outputs.result }} + cache-from: ${{ !env.ACT && 'type=gha' || '' }} + cache-to: ${{ !env.ACT && 'type=gha,mode=max' || '' }} + build-contexts: | + marshall:build=docker-image://ghcr.io/benzine-framework/marshall:${{ matrix.ubuntu }} + + - name: "Get perl binary version" + id: perl_version + run: | + echo "perl_version=$(docker run --rm ghcr.io/benzine-framework/perl:${{ matrix.ubuntu }} perl -v | grep "This is perl" | cut -d'(' -f2 | cut -d')' -f1 | sed 's/[^0-9.]*//g')" >> $GITHUB_OUTPUT + + - name: "Retag build with perl version" + run: | + docker tag ghcr.io/benzine-framework/perl:${{ matrix.ubuntu }} ghcr.io/benzine-framework/perl:${{ steps.perl_version.outputs.perl_version }} + docker tag ghcr.io/benzine-framework/perl:${{ matrix.ubuntu }} matthewbaggett/perl:${{ steps.perl_version.outputs.perl_version }} + docker tag ghcr.io/benzine-framework/perl:${{ matrix.ubuntu }} benzine/perl:${{ steps.perl_version.outputs.perl_version }} + docker push ghcr.io/benzine-framework/perl:${{ steps.perl_version.outputs.perl_version }} + docker push matthewbaggett/perl:${{ steps.perl_version.outputs.perl_version }} + docker push benzine/perl:${{ steps.perl_version.outputs.perl_version }} + + docker tag ghcr.io/benzine-framework/perl:${{ matrix.ubuntu }} ghcr.io/benzine-framework/perl:${{ steps.perl_version.outputs.perl_version }}-${{ matrix.ubuntu }} + docker tag ghcr.io/benzine-framework/perl:${{ matrix.ubuntu }} matthewbaggett/perl:${{ steps.perl_version.outputs.perl_version }}-${{ matrix.ubuntu }} + docker tag ghcr.io/benzine-framework/perl:${{ matrix.ubuntu }} benzine/perl:${{ steps.perl_version.outputs.perl_version }}-${{ matrix.ubuntu }} + docker push ghcr.io/benzine-framework/perl:${{ steps.perl_version.outputs.perl_version }}-${{ matrix.ubuntu }} + docker push matthewbaggett/perl:${{ steps.perl_version.outputs.perl_version }}-${{ matrix.ubuntu }} + docker push benzine/perl:${{ steps.perl_version.outputs.perl_version }}-${{ matrix.ubuntu }} diff --git a/perl/Dockerfile b/perl/Dockerfile new file mode 100644 index 0000000..bd4579b --- /dev/null +++ b/perl/Dockerfile @@ -0,0 +1,8 @@ +FROM marshall:build AS release + +RUN apt-get -qq update && \ + apt-get -yqq install perl && \ + apt-get -yqq autoremove && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/lib/dpkg/status.old /var/cache/debconf/templates.dat /var/log/dpkg.log /var/log/lastlog /var/log/apt/*.log && \ + perl -v