Skip to content

Commit

Permalink
Enhancement: Determine composer version once
Browse files Browse the repository at this point in the history
Co-authored-by: Rob <rob.bast@gmail.com>
  • Loading branch information
localheinz and alcohol committed Feb 19, 2024
1 parent 8c3b7a3 commit 48fc074
Show file tree
Hide file tree
Showing 5 changed files with 121 additions and 80 deletions.
25 changes: 25 additions & 0 deletions .github/actions/determine-composer-version/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# https://docs.github.com/en/actions/creating-actions/creating-a-composite-action
# https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#inputs
# https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-composite-run-steps-actions

name: "Determine composer version from Dockerfile"

description: "Determines the composer version from a Dockerfile and exports it as COMPOSER_VERSION_MAJOR, COMPOSER_VERSION_MAJOR_MINOR, and COMPOSER_VERSION_MAJOR_MINOR_PATCH environment variables."

inputs:
working-directory:
default: "."
description: "Which directory to use as working directory"
required: true

runs:
using: "composite"

steps:
- name: "Determine composer version from Dockerfile"
run: |
echo "COMPOSER_VERSION_MAJOR=$(grep -oP 'COMPOSER_VERSION \K\d+\.\d+\.\d+' Dockerfile | cut -d '.' -f 1)" >> $GITHUB_ENV
echo "COMPOSER_VERSION_MAJOR_MINOR=$(grep -oP 'COMPOSER_VERSION \K\d+\.\d+\.\d+' Dockerfile | cut -d '.' -f 1,2)" >> $GITHUB_ENV
echo "COMPOSER_VERSION_MAJOR_MINOR_PATCH=$(grep -oP 'COMPOSER_VERSION \K\d+\.\d+\.\d+' Dockerfile)" >> $GITHUB_ENV
shell: "bash"
working-directory: "${{ inputs.working-directory }}"
52 changes: 28 additions & 24 deletions .github/workflows/v1.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ jobs:
- "1.10"
steps:
- uses: actions/checkout@v4
- name: "Determine composer version from Dockerfile"
uses: "./.github/actions/determine-composer-version"
with:
working-directory: "${{ matrix.version }}"
# Build full image: binary with runtime
- name: Build full image
working-directory: ${{ matrix.version }}
Expand All @@ -30,9 +34,9 @@ jobs:
--pull \
--no-cache \
--target binary-with-runtime \
--tag composer/composer:1 \
--tag composer/composer:${{ matrix.version }} \
--tag composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+') \
--tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR }} \
--tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }} \
--tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }} \
.
# Build low-size image with binary only
- name: Build binary-only image
Expand All @@ -42,9 +46,9 @@ jobs:
--pull \
--no-cache \
--target standalone-binary \
--tag composer/composer:1-bin \
--tag composer/composer:${{ matrix.version }}-bin \
--tag composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')-bin \
--tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR }}-bin \
--tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}-bin \
--tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}-bin \
.
- name: Login to Docker Hub
if: github.ref == 'refs/heads/main'
Expand All @@ -56,12 +60,12 @@ jobs:
if: github.ref == 'refs/heads/main'
working-directory: ${{ matrix.version }}
run: |
docker push composer/composer:1
docker push composer/composer:1-bin
docker push composer/composer:${{ matrix.version }}
docker push composer/composer:${{ matrix.version }}-bin
docker push composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')
docker push composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')-bin
docker push composer/composer:${{ env.COMPOSER_VERSION_MAJOR }}
docker push composer/composer:${{ env.COMPOSER_VERSION_MAJOR }}-bin
docker push composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}
docker push composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}-bin
docker push composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}
docker push composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}-bin
- name: Login to Amazon Public ECR
if: github.ref == 'refs/heads/main'
uses: docker/login-action@v3
Expand All @@ -73,15 +77,15 @@ jobs:
if: github.ref == 'refs/heads/main'
working-directory: ${{ matrix.version }}
run: |
docker tag composer/composer:1 ${{ env.ECR_REPO }}:1
docker tag composer/composer:1-bin ${{ env.ECR_REPO }}:1-bin
docker tag composer/composer:${{ matrix.version }} ${{ env.ECR_REPO }}:${{ matrix.version }}
docker tag composer/composer:${{ matrix.version }}-bin ${{ env.ECR_REPO }}:${{ matrix.version }}-bin
docker tag composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+') ${{ env.ECR_REPO }}:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')
docker tag composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')-bin ${{ env.ECR_REPO }}:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')-bin
docker push ${{ env.ECR_REPO }}:1
docker push ${{ env.ECR_REPO }}:1-bin
docker push ${{ env.ECR_REPO }}:${{ matrix.version }}
docker push ${{ env.ECR_REPO }}:${{ matrix.version }}-bin
docker push ${{ env.ECR_REPO }}:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')
docker push ${{ env.ECR_REPO }}:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')-bin
docker tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR }} ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR }}
docker tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR }}-bin ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR }}-bin
docker tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }} ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}
docker tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}-bin ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}-bin
docker tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }} ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}
docker tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}-bin ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}-bin
docker push ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR }}
docker push ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR }}-bin
docker push ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}
docker push ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}-bin
docker push ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}
docker push ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}-bin
52 changes: 28 additions & 24 deletions .github/workflows/v2-current.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ jobs:
- "2.7"
steps:
- uses: actions/checkout@v4
- name: "Determine composer version from Dockerfile"
uses: "./.github/actions/determine-composer-version"
with:
working-directory: "${{ matrix.version }}"
# Build full image: binary with runtime
- name: Build full image
working-directory: ${{ matrix.version }}
Expand All @@ -31,9 +35,9 @@ jobs:
--no-cache \
--target binary-with-runtime \
--tag composer/composer:latest \
--tag composer/composer:2 \
--tag composer/composer:${{ matrix.version }} \
--tag composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+') \
--tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR }} \
--tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }} \
--tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }} \
.
# Build low-size image with binary only
- name: Build binary-only image
Expand All @@ -44,9 +48,9 @@ jobs:
--no-cache \
--target standalone-binary \
--tag composer/composer:latest-bin \
--tag composer/composer:2-bin \
--tag composer/composer:${{ matrix.version }}-bin \
--tag composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')-bin \
--tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR }}-bin \
--tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}-bin \
--tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}-bin \
.
- name: Login to Docker Hub
if: github.ref == 'refs/heads/main'
Expand All @@ -60,12 +64,12 @@ jobs:
run: |
docker push composer/composer:latest
docker push composer/composer:latest-bin
docker push composer/composer:2
docker push composer/composer:2-bin
docker push composer/composer:${{ matrix.version }}
docker push composer/composer:${{ matrix.version }}-bin
docker push composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')
docker push composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')-bin
docker push composer/composer:${{ env.COMPOSER_VERSION_MAJOR }}
docker push composer/composer:${{ env.COMPOSER_VERSION_MAJOR }}-bin
docker push composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}
docker push composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}-bin
docker push composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}
docker push composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}-bin
- name: Login to Amazon Public ECR
if: github.ref == 'refs/heads/main'
uses: docker/login-action@v3
Expand All @@ -79,17 +83,17 @@ jobs:
run: |
docker tag composer/composer:latest ${{ env.ECR_REPO }}:latest
docker tag composer/composer:latest-bin ${{ env.ECR_REPO }}:latest-bin
docker tag composer/composer:2 ${{ env.ECR_REPO }}:2
docker tag composer/composer:2-bin ${{ env.ECR_REPO }}:2-bin
docker tag composer/composer:${{ matrix.version }} ${{ env.ECR_REPO }}:${{ matrix.version }}
docker tag composer/composer:${{ matrix.version }}-bin ${{ env.ECR_REPO }}:${{ matrix.version }}-bin
docker tag composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+') ${{ env.ECR_REPO }}:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')
docker tag composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+') ${{ env.ECR_REPO }}:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')-bin
docker tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR }} ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR }}
docker tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR }}-bin ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR }}-bin
docker tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }} ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}
docker tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}-bin ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}-bin
docker tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }} ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}
docker tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}-bin ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}-bin
docker push ${{ env.ECR_REPO }}:latest
docker push ${{ env.ECR_REPO }}:latest-bin
docker push ${{ env.ECR_REPO }}:2
docker push ${{ env.ECR_REPO }}:2-bin
docker push ${{ env.ECR_REPO }}:${{ matrix.version }}
docker push ${{ env.ECR_REPO }}:${{ matrix.version }}-bin
docker push ${{ env.ECR_REPO }}:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')
docker push ${{ env.ECR_REPO }}:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')-bin
docker push ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR }}
docker push ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR }}-bin
docker push ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}
docker push ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}-bin
docker push ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}
docker push ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}-bin
36 changes: 20 additions & 16 deletions .github/workflows/v2-lts.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ jobs:
- "2.2"
steps:
- uses: actions/checkout@v4
- name: "Determine composer version from Dockerfile"
uses: "./.github/actions/determine-composer-version"
with:
working-directory: "${{ matrix.version }}"
# Build full image: binary with runtime
- name: Build full image
working-directory: ${{ matrix.version }}
Expand All @@ -31,8 +35,8 @@ jobs:
--no-cache \
--target binary-with-runtime \
--tag composer/composer:lts \
--tag composer/composer:${{ matrix.version }} \
--tag composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+') \
--tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }} \
--tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }} \
.
# Build low-size image with binary only
- name: Build binary-only image
Expand All @@ -43,8 +47,8 @@ jobs:
--no-cache \
--target standalone-binary \
--tag composer/composer:lts-bin \
--tag composer/composer:${{ matrix.version }}-bin \
--tag composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')-bin \
--tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}-bin \
--tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}-bin \
.
- name: Login to Docker Hub
if: github.ref == 'refs/heads/main'
Expand All @@ -58,10 +62,10 @@ jobs:
run: |
docker push composer/composer:lts
docker push composer/composer:lts-bin
docker push composer/composer:${{ matrix.version }}
docker push composer/composer:${{ matrix.version }}-bin
docker push composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')
docker push composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')-bin
docker push composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}
docker push composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}-bin
docker push composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}
docker push composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}-bin
- name: Login to Amazon Public ECR
if: github.ref == 'refs/heads/main'
uses: docker/login-action@v3
Expand All @@ -75,13 +79,13 @@ jobs:
run: |
docker tag composer/composer:lts ${{ env.ECR_REPO }}:lts
docker tag composer/composer:lts-bin ${{ env.ECR_REPO }}:lts-bin
docker tag composer/composer:${{ matrix.version }} ${{ env.ECR_REPO }}:${{ matrix.version }}
docker tag composer/composer:${{ matrix.version }}-bin ${{ env.ECR_REPO }}:${{ matrix.version }}-bin
docker tag composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+') ${{ env.ECR_REPO }}:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')
docker tag composer/composer:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')-bin ${{ env.ECR_REPO }}:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')-bin
docker tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }} ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}
docker tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}-bin ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}-bin
docker tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }} ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}
docker tag composer/composer:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}-bin ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}-bin
docker push ${{ env.ECR_REPO }}:lts
docker push ${{ env.ECR_REPO }}:lts-bin
docker push ${{ env.ECR_REPO }}:${{ matrix.version }}
docker push ${{ env.ECR_REPO }}:${{ matrix.version }}-bin
docker push ${{ env.ECR_REPO }}:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')
docker push ${{ env.ECR_REPO }}:$(grep -oP 'COMPOSER_VERSION ${{ matrix.version }}.\d+' Dockerfile | grep -oP '${{ matrix.version }}.\d+')-bin
docker push ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}
docker push ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR }}-bin
docker push ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}
docker push ${{ env.ECR_REPO }}:${{ env.COMPOSER_VERSION_MAJOR_MINOR_PATCH }}-bin

0 comments on commit 48fc074

Please sign in to comment.