Skip to content

Merge branch 'master' into otel-instrumentation-8.3-alpine #417

Merge branch 'master' into otel-instrumentation-8.3-alpine

Merge branch 'master' into otel-instrumentation-8.3-alpine #417

Workflow file for this run

name: CI/CD
on: push
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
## Alpine
### Alpine 3.18
- image: "alpine/3.18/8.1/Dockerfile"
tags: [ "spryker/php:8.1-alpine3.18" ]
platforms: [ "linux/amd64", "linux/arm64" ]
- image: "alpine/3.18/8.2/Dockerfile"
tags: [ "spryker/php:8.2-alpine3.18" ]
platforms: [ "linux/amd64", "linux/arm64" ]
- image: "alpine/3.18/8.3/Dockerfile"
tags: [ "spryker/php:8.3-alpine3.18" ]
platforms: [ "linux/amd64", "linux/arm64" ]
### Alpine 3.19
- image: "alpine/3.19/8.1/Dockerfile"
tags: [ "spryker/php:8.1-alpine3.19" ]
platforms: [ "linux/amd64", "linux/arm64" ]
- image: "alpine/3.19/8.2/Dockerfile"
tags: [ "spryker/php:8.2-alpine3.19" ]
platforms: [ "linux/amd64", "linux/arm64" ]
- image: "alpine/3.19/8.3/Dockerfile"
tags: [ "spryker/php:8.3-alpine3.19" ]
platforms: [ "linux/amd64", "linux/arm64" ]
### Alpine 3.20
- image: "alpine/3.20/8.1/Dockerfile"
tags: [ "spryker/php:8.1", "spryker/php:8.1-alpine3.20" ]
platforms: [ "linux/amd64", "linux/arm64" ]
- image: "alpine/3.20/8.2/Dockerfile"
tags: [ "spryker/php:latest", "spryker/php:8.2", "spryker/php:8.2-alpine3.20" ]
platforms: [ "linux/amd64", "linux/arm64" ]
- image: "alpine/3.20/8.3/Dockerfile"
tags: [ "spryker/php:8.3", "spryker/php:8.3-alpine3.20" ]
platforms: [ "linux/amd64", "linux/arm64" ]
## Debian
### Debian bullseye
- image: "debian/bullseye/8.0/Dockerfile"
tags: [ "spryker/php:8.0-debian" ]
platforms: [ "linux/amd64", "linux/arm64" ]
- image: "debian/bullseye/8.1/Dockerfile"
tags: [ "spryker/php:8.1-debian" ]
platforms: [ "linux/amd64", "linux/arm64" ]
- image: "debian/bullseye/8.2/Dockerfile"
tags: [ "spryker/php:8.2-debian" ]
platforms: [ "linux/amd64", "linux/arm64" ]
- image: "debian/bullseye/8.3/Dockerfile"
tags: [ "spryker/php:8.3-debian" ]
platforms: [ "linux/amd64", "linux/arm64" ]
steps:
- name: Check out repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get the previous commit hash
id: previous_commit
run: |
if [ "${{ github.ref }}" == "refs/heads/master" ]; then
PREV_COMMIT_HASH=$(git rev-parse HEAD^1)
else
PREV_COMMIT_HASH=$(git rev-parse origin/master)
IMAGE_TAG="${{ matrix.tags[0] }}"
echo "Pulling image $IMAGE_TAG"
docker pull "$IMAGE_TAG"
NEW_TAG="${IMAGE_TAG}-${PREV_COMMIT_HASH}"
echo "Re-tagging image to $NEW_TAG"
docker tag "$IMAGE_TAG" "$NEW_TAG"
echo "Removing the pulled image $IMAGE_TAG"
docker rmi "$IMAGE_TAG" || true
fi
echo "PREV_COMMIT_HASH=$PREV_COMMIT_HASH" >> $GITHUB_ENV
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Re-tag images with previous commit hash
if: ${{ github.ref == 'refs/heads/master' }}
run: |
PREV_HASH=${{ env.PREV_COMMIT_HASH }}
IMAGE_TAGS="${{ join(matrix.tags, ' ') }}"
for IMAGE_TAG in $IMAGE_TAGS; do
docker pull "$IMAGE_TAG"
NEW_TAG="${IMAGE_TAG}-${PREV_HASH}"
docker tag "$IMAGE_TAG" "$NEW_TAG"
echo "Re-tagged image: $NEW_TAG"
docker push $NEW_TAG
done
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
push: ${{ github.ref == 'refs/heads/master' }}
load: ${{ github.ref != 'refs/heads/master' }}
file: ${{ matrix.image }}
tags: ${{ join(matrix.tags) }}
platforms: ${{ github.ref == 'refs/heads/master' && join(matrix.platforms) || 'linux/amd64' }}
- name: Pull image for master branch
if: github.ref == 'refs/heads/master'
run: |
echo "Pulling image for master branch"
docker pull ${{ matrix.tags[0] }}
- name: Current image report
id: manifest
run: |
CURRENT_TAG=${{ matrix.tags[0] }}
bash .github/compare-images.sh $CURRENT_TAG > current-image-report.txt || true
cat current-image-report.txt
- name: Previous image report
run: |
PREVIOUS_TAG="${{ matrix.tags[0] }}-${{ env.PREV_COMMIT_HASH }}"
bash .github/compare-images.sh $PREVIOUS_TAG > previous-image-report.txt || true
cat previous-image-report.txt
- name: Run the diff and format output
id: diff
run: bash .github/format-output.sh
- name: Fetch Job ID
id: fetch_job_id
if: ${{ github.ref == 'refs/heads/master' && env.DIFF_OUTPUT != '' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
JOBS_JSON=$(curl -s -H "Authorization: Bearer $GITHUB_TOKEN" \
"https://api.github.com/repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/jobs")
echo "$JOBS_JSON" > jobs-response.json
cat jobs-response.json
JOB_ID=$(echo "$JOBS_JSON" | jq -r '.jobs[0].id')
echo "Extracted Job ID: $JOB_ID"
echo "::set-output name=job_id::$JOB_ID"
- name: Send Slack Notification
if: ${{ github.ref == 'refs/heads/master' && env.DIFF_OUTPUT != '' }}
uses: slackapi/[email protected]
with:
payload: |
{
"attachments": [
{
"color": "good",
"fields": [
{
"title": "New version of ${{ matrix.tags[0] }} has been published",
"value": "You can check the:\n- *Manifest*: <https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/job/${{ steps.fetch_job_id.outputs.job_id }}#step:9:1|View Manifest>\n- *Diff*: <https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}/job/${{ steps.fetch_job_id.outputs.job_id }}#step:11:7|View Diff>\n\nThis version was built out of <https://github.com/${{ github.repository }}/commit/${{ github.sha }}|${{ github.sha }}>.",
"short": false
}
]
}
]
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_CE_RELEASE_WEBHOOK }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK