Skip to content

add image version update workflow #2

add image version update workflow

add image version update workflow #2

# Copyright (c) 2024 Dell Inc., or its subsidiaries. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
# This workflow is a reusable one for creating tag and release.
name: Update image versions
# Invocable as a reusable workflow
on:
workflow_call:
inputs:
version:
description: 'Version to release (major, minor, patch)'
required: true
type: string
jobs:
update-image-version:
name: image-version-update
runs-on: ubuntu-latest
steps:
- name: Checkout the code
uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch the full history including tags
- name: Set environment variables
env:
release_pattern: 'release="([0-9]+)\.([0-9]+)\.([0-9]+)"'
version_pattern: 'version="([0-9]+)\.([0-9]+)\.([0-9]+)"'
run: |
release_value=$(grep -oP '^LABEL release="\K([0-9]+)\.([0-9]+)\.([0-9]+)' Dockerfile)

Check failure on line 35 in .github/workflows/image-version-workflow.yaml

View workflow run for this annotation

GitHub Actions / .github/workflows/image-version-workflow.yaml

Invalid workflow file

You have an error in your yaml syntax on line 35
version_value=$(grep -oP '^LABEL version="\K([0-9]+)\.([0-9]+)\.([0-9]+)' Dockerfile)
echo "release_value=$release_value" >> $GITHUB_ENV
echo "version_value=$version_value" >> $GITHUB_ENV
- name: Increment version
env:
MY_VAR1: ${{ env.release_value }}
MY_VAR2: ${{ env.version_value }}
run: |
current_version=$MY_VAR2
current_version=(${current_version#v}) # remove 'v' prefix from $current_version"
current_release=$MY_VAR1
current_release=(${current_release#v}) # remove 'v' prefix from $current_release"
IFS='.' read -r -a version_parts <<< "$current_version"
IFS='.' read -r -a release_parts <<< "$current_release"
if "${{ inputs.version == 'major' }}"; then
# major version bump up
version_parts[0]=$(expr ${version_parts[0]} + 1)
new_version="${version_parts[0]}.0.0"
release_parts[0]=$(expr ${release_parts[0]} + 1)
new_release="${release_parts[0]}.0.0"
fi
if "${{ inputs.version == 'minor' }}"; then
# minor version bump up
version_parts[1]=$(expr ${version_parts[1]} + 1)
new_version="${version_parts[0]}.${version_parts[1]}.0"
release_parts[0]=$(expr ${release_parts[0]} + 1)
new_release="${release_parts[0]}.0.0"
fi
if "${{ inputs.version == 'patch' }}"; then
# patch version bump up
version_parts[2]=$(expr ${version_parts[2]} + 1)
new_version="${version_parts[0]}.${version_parts[1]}.${version_parts[2]}"
release_parts[0]=$(expr ${release_parts[0]} + 1)
new_release="${release_parts[0]}.0.0"
fi
echo "New version to be released:v$new_version"
echo "NEW_VERSION=v${new_version}" >> $GITHUB_ENV
echo "New release will be:v$new_release"
echo "NEW_RELEASE=v${new_release}" >> $GITHUB_ENV
- name: Update Dockerfile with new versions
run: |
sed -i "s/release=\"$release_value\"/release=\"$NEW_RELEASE\"/" Dockerfile
sed -i "s/version=\"$version_value\"/version=\"$NEW_VERSION\"/" Dockerfile
# Needed for signing commits using Github App tokens
# See: https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#commit-signing
- uses: actions/[email protected]
id: generate-token
with:
app-id: ${{ vars.CSM_RELEASE_APP_ID }}
private-key: ${{ secrets.CSM_RELEASE_APP_PRIVATE_KEY }}
# Must enable "allow GitHub Actions to create pull requests" setting
# Author defaults to the user who triggered the workflow run
- name: Create pull request
uses: peter-evans/create-pull-request@v7
with:
token: ${{ steps.generate-token.outputs.token }}
branch: "updateImage-${{ env.version_value }}"
commit-message: "Update image version to ${{ env.version_value }} and release version to ${{ env.release_value }}"
title: "Update image version to ${{ env.version_value }} and release version to ${{ env.release_value }}"
body: |
Image version updated to ${{ env.version_value }}
Auto-generated by [common-github-actions](https://github.com/dell/common-github-actions)
sign-commits: true
delete-branch: true