Update Job-Image-Base Dockerfile with latest Docker and Buildx versions #23
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Job-Image-Base Dockerfile Version Bump | |
run-name: Update Job-Image-Base Dockerfile with latest Docker and Buildx versions | |
on: | |
schedule: | |
- cron: '0 0 * * *' # daily | |
workflow_dispatch: | |
jobs: | |
update-dockerfile: | |
runs-on: ubuntu-latest | |
env: | |
BRANCH: update-dockerfile | |
permissions: | |
contents: write | |
pull-requests: write | |
outputs: | |
docker_version: ${{ steps.get_docker_version.outputs.docker_version }} | |
buildx_version: ${{ steps.get_buildx_version.outputs.buildx_version }} | |
changes_detected: ${{ steps.check_changes.outputs.changes_detected }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Git Identity | |
uses: ./.github/actions/setup-git-identity | |
- name: Get latest Docker version | |
id: get_docker_version | |
run: | | |
greatest_version=$(curl -sL https://download.docker.com/linux/static/stable/x86_64/ \ | |
| cut -d\" -f2 \ | |
| grep "docker-[[:digit:]]" \ | |
| cut -d- -f2 \ | |
| cut -d. -f1,2,3 \ | |
| sort -Vr \ | |
| head -1) | |
echo "docker_version=$greatest_version" >> $GITHUB_OUTPUT | |
- name: Get latest Buildx version | |
id: get_buildx_version | |
run: | | |
greatest_version=$(curl -sL https://api.github.com/repos/docker/buildx/releases \ | |
-H 'Accept: application/json' \ | |
| jq -r '.[] | select(.draft == false and .prerelease == false) | .tag_name' \ | |
| sort -Vr \ | |
| head -1) | |
echo "buildx_version=$greatest_version" >> $GITHUB_OUTPUT | |
- name: Update Dockerfile with latest Versions | |
run: | | |
sed -i "s/DOCKER_VERSION=.*/DOCKER_VERSION=\ | |
${{ steps.get_docker_version.outputs.docker_version }}/" Dockerfile.job-image-base | |
sed -i "s/DOCKER_BUILDX_VERSION=.*/DOCKER_BUILDX_VERSION=\ | |
${{ steps.get_buildx_version.outputs.buildx_version }}/" \ | |
Dockerfile.job-image-base | |
- name: Check for Changes | |
id: check_changes | |
run: | | |
if git diff --quiet Dockerfile.job-image-base; then | |
echo "No changes detected. Exiting workflow." | |
echo "changes_detected=false" >> $GITHUB_OUTPUT | |
else | |
echo "Changes detected, proceeding with commit." | |
echo "changes_detected=true" >> $GITHUB_OUTPUT | |
fi | |
- name: Commit and Push Changes | |
if: steps.check_changes.outputs.changes_detected == 'true' | |
run: | | |
git add Dockerfile.job-image-base | |
git commit -m "Update Dockerfile to use Docker \ | |
${{ steps.get_docker_version.outputs.docker_version }} and Buildx \ | |
${{ steps.get_buildx_version.outputs.buildx_version }}" | |
git checkout -B $BRANCH | |
git push origin $BRANCH --force | |
- name: Create or Update Pull Request | |
if: steps.check_changes.outputs.changes_detected == 'true' | |
run: | | |
# Check if a pull request for the branch already exists | |
pr_number=$(gh pr list --head $BRANCH --state open --json number --jq '.[].number') | |
if [ -n "$pr_number" ]; then | |
echo "Pull Request #$pr_number already exists, updating title and description..." | |
gh pr edit "$pr_number" \ | |
--title "Update Dockerfile with latest Docker and Buildx versions" \ | |
--body "Updates the Dockerfile to use the latest versions: | |
- Docker: ${{ steps.get_docker_version.outputs.docker_version }} | |
- Buildx: ${{ steps.get_buildx_version.outputs.buildx_version }}" | |
else | |
echo "No existing Pull Request found, creating a new one..." | |
gh pr create \ | |
-B master \ | |
-H $BRANCH \ | |
--title "Update Dockerfile with latest Docker and Buildx versions" \ | |
--body "Updates the Dockerfile to use the latest versions: | |
- Docker: ${{ steps.get_docker_version.outputs.docker_version }} | |
- Buildx: ${{ steps.get_buildx_version.outputs.buildx_version }}" | |
fi | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |