diff --git a/.github/scripts/release-samples.sh b/.github/scripts/release-samples.sh new file mode 100755 index 00000000..9c6d7764 --- /dev/null +++ b/.github/scripts/release-samples.sh @@ -0,0 +1,42 @@ +# ------------------------------------------------------------ +# Copyright 2023 The Radius Authors. +# +# 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 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------ + +set -xe + +VERSION_NUMBER=$1 # (e.g. 0.1.0) +REPOSITORY="samples" + +if [[ -z "$VERSION_NUMBER" ]]; then + echo "Error: VERSION_NUMBER is not set." + exit 1 +fi + +# CHANNEL is the major and minor version of the VERSION_NUMBER (e.g. 0.1) +CHANNEL="$(echo $VERSION_NUMBER | cut -d '.' -f 1,2)" + +# CHANNEL_VERSION is the version with the 'v' prefix (e.g. v0.1) +CHANNEL_VERSION="v${CHANNEL}" + +echo "Version number: ${VERSION_NUMBER}" +echo "Channel: ${CHANNEL}" +echo "Channel version: ${CHANNEL_VERSION}" + +echo "Creating release branch for ${REPOSITORY}..." + +pushd $REPOSITORY +git checkout -B "${CHANNEL_VERSION}" +git push origin "${CHANNEL_VERSION}" +popd diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 00000000..714a1e58 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,49 @@ +name: Release samples + +on: + workflow_dispatch: + inputs: + version: + description: 'Radius version number to use (e.g. 0.22.0, 0.23.0-rc1)' + required: true + default: '' + type: string + +env: + GITHUB_TOKEN: ${{ secrets.GH_RAD_CI_BOT_PAT }} + GITHUB_EMAIL: 'radiuscoreteam@service.microsoft.com' + GITHUB_USER: 'Radius CI Bot' + +jobs: + release-samples: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + token: ${{ secrets.GH_RAD_CI_BOT_PAT }} + ref: edge + path: samples + - name: Configure git + run: | + git config --global user.email "${{ env.GITHUB_EMAIL }}" + git config --global user.name "${{ env.GITHUB_USER }}" + - name: Ensure inputs.version is valid semver + run: | + python ./samples/.github/scripts/validate_semver.py ${{ inputs.version }} + - name: Parse release channel + id: parse_release_channel + run: | + # CHANNEL is the major and minor version of the VERSION_NUMBER (e.g. 0.1) + CHANNEL="$(echo ${{ inputs.version }} | cut -d '.' -f 1,2)" + echo "channel=$CHANNEL" >> $GITHUB_OUTPUT + - name: Release samples + run: | + ./samples/.github/scripts/release-samples.sh ${{ inputs.version }} + - name: Change the default branch + run: | + gh api \ + --method PATCH \ + -H "Accept: application/vnd.github+json" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + /repos/project-radius/samples \ + -f default_branch='v${{ steps.parse_release_channel.outputs.channel }}'