Check base images #617
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: Check base images | |
on: | |
workflow_dispatch: | |
inputs: | |
MINIMAL_SUPPORTED_VERSION: | |
description: 'Minimal supported version from which we should start checking images, e.g. 5.1, 5.0.1, 4.2.3. Default values is 5.3' | |
required: false | |
schedule: | |
- cron: '0 6 * * *' | |
jobs: | |
get-latest-patch-versions: | |
runs-on: ubuntu-latest | |
name: Get latest patch versions | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
env: | |
MINIMAL_SUPPORTED_VERSION: ${{ inputs.MINIMAL_SUPPORTED_VERSION }} | |
DEFAULT_MINIMAL_SUPPORTED_VERSION: 5.3 | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- id: set-matrix | |
name: Get latest patch versions | |
run: | | |
. .github/scripts/version.functions.sh | |
MIN_VERSION=${MINIMAL_SUPPORTED_VERSION:-$DEFAULT_MINIMAL_SUPPORTED_VERSION} | |
echo "Getting latest patch versions starting from $MIN_VERSION" | |
versions=$(printf '%s\n' $(get_latest_patch_versions "${MIN_VERSION}") | jq -R . | jq -c -s .) | |
echo "Found latest patch versions: $versions" | |
echo "matrix={\"version\":$versions}" >> $GITHUB_OUTPUT | |
- name: Slack notification | |
uses: ./.github/actions/slack-notification | |
if: failure() | |
with: | |
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK }} | |
trigger-rebuilds: | |
runs-on: ubuntu-latest | |
name: Rebuild ${{ matrix.version }} if base image changed | |
needs: get-latest-patch-versions | |
env: | |
NLC_IMAGE_NAME: ${{ secrets.NLC_IMAGE_NAME }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJSON(needs.get-latest-patch-versions.outputs.matrix) }} | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
- name: Checkout version ${{ matrix.version }} | |
uses: actions/checkout@v4 | |
with: | |
ref: v${{ matrix.version }} | |
path: v${{ matrix.version }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Login to NLC Docker Repository | |
uses: docker/login-action@v3 | |
with: | |
registry: ${{ secrets.NLC_REPOSITORY }} | |
username: ${{ secrets.NLC_REPO_USERNAME }} | |
password: ${{ secrets.NLC_REPO_TOKEN }} | |
- name: Check if ${{ matrix.version }} base images updated | |
run: | | |
. .github/scripts/base-image-updated.sh | |
. .github/scripts/packages-updated.sh | |
. .github/scripts/log.functions.sh | |
echo "Checking OSS ${{ matrix.version }} image" | |
if base_image_updated hazelcast/hazelcast:${{ matrix.version }} v${{ matrix.version }}/hazelcast-oss/Dockerfile; then | |
echo "OSS_NEEDS_REBUILD=yes" >> $GITHUB_ENV | |
log_info "Image OSS ${{ matrix.version }} needs rebuild" | |
else | |
log_info "Image OSS ${{ matrix.version }} is up-to-date" | |
fi | |
echo "Checking system package upgrades for OSS ${{ matrix.version }} image" | |
if packages_updated_oss hazelcast/hazelcast:${{ matrix.version }}; then | |
echo "OSS_NEEDS_REBUILD=yes" >> $GITHUB_ENV | |
log_info "System package upgrades for OSS ${{ matrix.version }} image available" | |
else | |
log_info "System packages for OSS ${{ matrix.version }} image are up-to-date" | |
fi | |
echo "Checking EE ${{ matrix.version }} image" | |
if base_image_updated hazelcast/hazelcast-enterprise:${{ matrix.version }} v${{ matrix.version }}/hazelcast-enterprise/Dockerfile; then | |
echo "EE_NEEDS_REBUILD=yes" >> $GITHUB_ENV | |
log_info "Image EE ${{ matrix.version }} needs rebuild" | |
else | |
log_info "Image EE ${{ matrix.version }} is up-to-date" | |
fi | |
echo "Checking system package upgrades for EE ${{ matrix.version }} image" | |
if packages_updated_ee hazelcast/hazelcast-enterprise:${{ matrix.version }}; then | |
echo "EE_NEEDS_REBUILD=yes" >> $GITHUB_ENV | |
log_info "System package upgrades for EE ${{ matrix.version }} image available" | |
else | |
log_info "System packages for EE ${{ matrix.version }} image are up-to-date" | |
fi | |
echo "Checking EE NLC ${{ matrix.version }} image" | |
if base_image_updated ${NLC_IMAGE_NAME}:${{ matrix.version }} v${{ matrix.version }}/hazelcast-enterprise/Dockerfile; then | |
echo "EE_NLC_NEEDS_REBUILD=yes" >> $GITHUB_ENV | |
log_info "Image EE NLC ${{ matrix.version }} needs rebuild" | |
else | |
log_info "Image EE NLC ${{ matrix.version }} is up-to-date" | |
fi | |
echo "Checking system package upgrades for EE NLC ${{ matrix.version }} image" | |
if packages_updated_ee ${NLC_IMAGE_NAME}:${{ matrix.version }}; then | |
echo "EE_NLC_NEEDS_REBUILD=yes" >> $GITHUB_ENV | |
log_info "System package upgrades for EE NLC ${{ matrix.version }} image available" | |
else | |
log_info "System packages for EE NLC ${{ matrix.version }} image are up-to-date" | |
fi | |
- name: Rebuild ${{ matrix.version }} EE image | |
if: env.EE_NEEDS_REBUILD == 'yes' | |
run: | | |
echo "Rebuilding ${{ matrix.version }} EE image" | |
gh workflow run tag_image_push.yml --ref v${{ matrix.version }} -f HZ_VERSION=${{ matrix.version }} -f RELEASE_TYPE=EE | |
gh workflow run tag_image_push_rhel.yml --ref v${{ matrix.version }} -f HZ_VERSION=${{ matrix.version }} | |
env: | |
GH_TOKEN: ${{ github.token }} | |
- name: Rebuild ${{ matrix.version }} EE NLC image | |
if: env.EE_NLC_NEEDS_REBUILD == 'yes' | |
run: | | |
echo "Rebuilding ${{ matrix.version }} EE NLC image" | |
gh workflow run ee-nlc-tag-push.yml --ref v${{ matrix.version }} -f HZ_VERSION=${{ matrix.version }} | |
env: | |
GH_TOKEN: ${{ github.token }} | |
- name: Slack notification | |
uses: ./.github/actions/slack-notification | |
if: failure() | |
with: | |
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK }} |