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

Commit

Permalink
Split base image check for base-legacy and base-csgo
Browse files Browse the repository at this point in the history
Signed-off-by: Timo Reichl <[email protected]>
  • Loading branch information
thetredev committed Sep 6, 2023
1 parent 7c900d2 commit 770c2cd
Show file tree
Hide file tree
Showing 3 changed files with 212 additions and 100 deletions.
106 changes: 106 additions & 0 deletions .github/workflows/base-csgo-image-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: Check for newer base-csgo image every night

on:
schedule:
- cron: "0 0 * * *"

jobs:
compare-base-csgo-image-tag:
permissions: write-all
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3

- name: Compare base-csgo image platform and tag
id: compare-base-csgo
run: |
# Get base-csgo SteamRT platform variant
export STEAMRT_PLATFORM_VARIANT=$(docker compose config base-csgo | grep 'STEAMRT_PLATFORM_VARIANT' | cut -d ':' -f 2 | xargs)
export STEAMRT_PLATFORM_VERSION=$(docker compose config base-csgo | 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-csgo 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_CSGO_IMAGE_TAG=${new_tag}" >> $GITHUB_ENV
echo "createpr_csgo=1" >> $GITHUB_OUTPUT
else
echo "No newer tag found."
echo "createpr_csgo=0" >> $GITHUB_OUTPUT
fi
- name: Check if pull request exists for newer base-csgo image
if: ${{ steps.compare.outputs.createpr_csgo == 1 }}
id: checkpr_csgo
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-csgo-image-tag',
base: 'main',
state: 'open'
});
if (result.length > 0)
{
return 'skip'
}
return 'continue'
result-encoding: string

- name: Push new branch with updated base-csgo image
if: ${{ steps.checkpr_csgo.outputs.result == 'continue' }}
run: |
# Install yq
apt-get update
apt-get install -y --no-install-recommends yq
# Prepare git user
git config user.name github-actions
git config user.email [email protected]
# Checkout new branch from main
git fetch origin main
git checkout main
git checkout -b actions/bump-base-csgo-image-tag
# Replace base-csgo image tag
cat docker-compose.yml | yq -M -y '.services."base-csgo".build.args.STEAMRT_PLATFORM_VERSION = "${CI_PR_NEW_BASE_CSGO_IMAGE_TAG}"' > docker-compose-new.yml
rm -rf docker-compose.yml
mv docker-compose-new.yml docker-compose.yml
# Add, commit and push changes to the branch
git add docker-compose.yml
git commit -m "Bump base-csgo image tag to ${CI_PR_NEW_BASE_CSGO_IMAGE_TAG}"
git push origin actions/bump-base-csgo-image-tag -f
- name: Create pull request for newer base-csgo image
if: ${{ steps.checkpr_csgo.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-csgo image tag to ${process.env.CI_PR_NEW_BASE_CSGO_IMAGE_TAG}`,
owner,
repo,
head: 'actions/bump-base-csgo-image-tag',
base: 'main'
});
github.rest.issues.addLabels({
owner,
repo,
issue_number: result.data.number,
labels: ['improvement', 'bump base-csgo image tag']
});
100 changes: 0 additions & 100 deletions .github/workflows/base-image-check.yml

This file was deleted.

106 changes: 106 additions & 0 deletions .github/workflows/base-legacy-image-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
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@v3

- name: Compare base-legacy image platform and tag
id: compare-base-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.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: Push new branch with updated base-legacy image
if: ${{ steps.checkpr_legacy.outputs.result == 'continue' }}
run: |
# Install yq
apt-get update
apt-get install -y --no-install-recommends yq
# Prepare git user
git config user.name github-actions
git config user.email [email protected]
# 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
cat docker-compose.yml | yq -M -y '.services."base-legacy".build.args.STEAMRT_PLATFORM_VERSION = "${CI_PR_NEW_BASE_LEGACY_IMAGE_TAG}"' > docker-compose-new.yml
rm -rf docker-compose.yml
mv docker-compose-new.yml 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']
});

0 comments on commit 770c2cd

Please sign in to comment.