Skip to content
This repository has been archived by the owner on Sep 18, 2024. It is now read-only.

Check for newer base-legacy image every night #292

Check for newer base-legacy image every night

Check for newer base-legacy image every night #292

name: Check for newer base-legacy image every night
on:
schedule:
- cron: "0 0 * * *"
jobs:
compare-base-legacy-image-tag:
permissions: write-all
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Compare base-legacy image platform and tag
id: compare_legacy
run: |
# Get base-legacy SteamRT platform variant
export STEAMRT_PLATFORM_VARIANT=$(docker compose config base-legacy | grep 'STEAMRT_PLATFORM_VARIANT' | cut -d ':' -f 2 | xargs)
export STEAMRT_PLATFORM_VERSION=$(docker compose config base-legacy | grep 'STEAMRT_PLATFORM_VERSION' | cut -d ':' -f 2 | xargs)
# Get image repository
current_repository=$(eval echo $(sed -rn '/FROM /p' image/base/Dockerfile | cut -d ' ' -f 2 | cut -d ':' -f 1))
# Use crane to list all available remote tags based on the base-legacy image tag prefix
# https://github.com/google/go-containerregistry/tree/main/cmd/crane
remote_tags=$(docker run --rm gcr.io/go-containerregistry/crane:v0.15.2 ls ${current_repository} | grep -v -e '[[a-z]]*')
# Compare current tag to remote tags
new_tag=$(python3 ./scripts/compare_tags.py "${STEAMRT_PLATFORM_VERSION}" "${remote_tags}")
if [[ ! -z "${new_tag}" ]]; then
echo "CI_PR_NEW_BASE_LEGACY_IMAGE_TAG=${new_tag}" >> $GITHUB_ENV
echo "createpr_legacy=1" >> $GITHUB_OUTPUT
else
echo "No newer tag found."
echo "createpr_legacy=0" >> $GITHUB_OUTPUT
fi
- name: Check if pull request exists for newer base-legacy image
if: ${{ steps.compare_legacy.outputs.createpr_legacy == 1 }}
id: checkpr_legacy
uses: actions/github-script@v6
with:
script: |
const { repo, owner } = context.repo;
const result = await github.rest.pulls.list({
owner,
repo,
head: 'actions/bump-base-legacy-image-tag',
base: 'main',
state: 'open'
});
if (result.length > 0)
{
return 'skip'
}
return 'continue'
result-encoding: string
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.21.1'
- name: Push new branch with updated base-legacy image
if: ${{ steps.checkpr_legacy.outputs.result == 'continue' }}
run: |
# Install yq
go install github.com/mikefarah/yq/v4@latest
# Prepare git user
git config user.name github-actions
git config user.email github-actions@users.noreply.github.com
# Checkout new branch from main
git fetch origin main
git checkout main
git checkout -b actions/bump-base-legacy-image-tag
# Replace base-legacy image tag
yq -i '.services."base-legacy".build.args.STEAMRT_PLATFORM_VERSION = strenv(CI_PR_NEW_BASE_LEGACY_IMAGE_TAG)' docker-compose.yml
# Add, commit and push changes to the branch
git add docker-compose.yml
git commit -m "Bump base-legacy image tag to ${CI_PR_NEW_BASE_LEGACY_IMAGE_TAG}"
git push origin actions/bump-base-legacy-image-tag -f
- name: Create pull request for newer base-legacy image
if: ${{ steps.checkpr_legacy.outputs.result == 'continue' }}
uses: actions/github-script@v6
with:
script: |
const { repo, owner } = context.repo;
const result = await github.rest.pulls.create({
title: `[Bump] base-legacy image tag to ${process.env.CI_PR_NEW_BASE_LEGACY_IMAGE_TAG}`,
owner,
repo,
head: 'actions/bump-base-legacy-image-tag',
base: 'main'
});
github.rest.issues.addLabels({
owner,
repo,
issue_number: result.data.number,
labels: ['improvement', 'bump base-legacy image tag']
});