Update #28
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: Update | |
env: | |
IMAGE_NAME: activemq-artemis-broker-kubernetes | |
on: | |
workflow_dispatch: | |
inputs: | |
version: | |
description: 'Version, i.e. 1.0.0' | |
required: false | |
default: '*.*.+' | |
type: string | |
update_version: | |
description: 'Update version' | |
required: true | |
default: true | |
type: boolean | |
base_image: | |
description: 'Base image' | |
required: false | |
default: 'latest' | |
type: string | |
update_base_image: | |
description: 'Update base image' | |
required: true | |
default: true | |
type: boolean | |
yacfg_version: | |
description: 'YAML Configurator Version, i.e. v0.9.3' | |
required: false | |
default: 'latest' | |
type: string | |
update_yacfg_version: | |
description: 'Update yacfg version' | |
required: true | |
default: true | |
type: boolean | |
trigger_release: | |
description: 'Trigger release' | |
required: false | |
default: 'this' | |
type: choice | |
options: | |
- none | |
- this | |
- all | |
jobs: | |
update: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the repo | |
uses: actions/checkout@v2 | |
- name: Set up the repo | |
run: | | |
git config user.name 'artemiscloud-bot' | |
git config user.email '[email protected]' | |
git push | |
- name: Update version | |
if: ${{ inputs.update_version }} | |
run: | | |
CURRENT_VERSION=$(grep -m 1 -oP '(?<=LABEL version=")[^"]+' Dockerfile) | |
IFS=. read CURRENT_VERSION_MAJOR CURRENT_VERSION_MINOR CURRENT_VERSION_PATCH <<< ${CURRENT_VERSION} | |
IFS=. read VERSION_MAJOR VERSION_MINOR VERSION_PATCH <<< ${{ inputs.version }} | |
VERSION_MAJOR=${VERSION_MAJOR/\*/${CURRENT_VERSION_MAJOR}} && VERSION_MAJOR=${VERSION_MAJOR/+/$((CURRENT_VERSION_MAJOR+1))} | |
VERSION_MINOR=${VERSION_MINOR/\*/${CURRENT_VERSION_MINOR}} && VERSION_MINOR=${VERSION_MINOR/+/$((CURRENT_VERSION_MINOR+1))} | |
VERSION_PATCH=${VERSION_PATCH/\*/${CURRENT_VERSION_PATCH}} && VERSION_PATCH=${VERSION_PATCH/+/$((CURRENT_VERSION_PATCH+1))} | |
VERSION="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" | |
sed -i "s~^LABEL version=.*~LABEL version=\"${VERSION}\"~g" Dockerfile | |
git commit --all --message "Update version to ${VERSION}" || echo "nothing to commit" | |
- name: Update base image | |
if: ${{ inputs.update_base_image }} | |
run: | | |
if [ "${{ inputs.base_image }}" = "latest" ]; then | |
BASE_IMAGE="quay.io/${{ secrets.QUAY_NAMESPACE }}/activemq-artemis-broker-kubernetes@$(skopeo inspect docker://quay.io/${{ secrets.QUAY_NAMESPACE }}/activemq-artemis-broker-kubernetes:latest | jq -r '.Digest')" | |
else | |
BASE_IMAGE="${{ inputs.base_image }}" | |
fi | |
sed -i "s~FROM.*~FROM ${BASE_IMAGE}~g" Dockerfile | |
git commit --all --message "Update base image to ${BASE_IMAGE}" || echo "nothing to commit" | |
- name: Update YAML Configurator | |
if: ${{ inputs.update_yacfg_version }} | |
run: | | |
if [ "${{ inputs.yacfg_version }}" = "latest" ]; then | |
YACFG_VER="$(git ls-remote --tags https://github.com/artemiscloud/yacfg.git | grep -oP '(?<=refs/tags/)v\d+.\d+.\d' | sort --reverse --version-sort | head -n 1)" | |
else | |
YACFG_VER="${{ inputs.yacfg_version }}" | |
fi | |
YACFG_REP='https://github.com/artemiscloud/yacfg.git' | |
YACFG_REF=$(git ls-remote --tags ${YACFG_REP} | grep -oP ".*(?=refs/tags/${YACFG_VER}\^\{\}\$)" | tr -d '[:blank:]') | |
if [[ $YACFG_REF != "" ]]; then | |
echo "found annotated tag" | |
else | |
YACFG_REF=$(git ls-remote --tags ${YACFG_REP} | grep -oP ".*(?=refs/tags/${YACFG_VER}\$)" | tr -d '[:blank:]') | |
if [[ $YACFG_REF == "" ]]; then | |
echo "tag ${YACFG_VER} not found!" | |
exit 1 | |
fi | |
fi | |
echo "found tag $YACFG_VER point to commit ref $YACFG_REF}" | |
sed -i -e "s~ARG REMOTE_SOURCE_REF=.*~ARG REMOTE_SOURCE_REF=${YACFG_REF}~" -e "s~ARG REMOTE_SOURCE_REP=.*~ARG REMOTE_SOURCE_REP=${YACFG_REP}~" Dockerfile | |
git commit --all --message "Update YAML Configurator to ${YACFG_VER}" || echo "nothing to commit" | |
- name: Push commits | |
run: | | |
git push | |
- name: Trigger release | |
if: ${{ inputs.trigger_release != 'none' }} | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{ secrets.BOT_TOKEN }} | |
script: | | |
const trigger_children = (context.payload.inputs.trigger_release === 'all' ? 'true' : 'false') | |
await github.rest.actions.createWorkflowDispatch({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
workflow_id: 'release.yml', | |
ref: context.ref, | |
inputs: { | |
trigger_children: trigger_children | |
} | |
}); |