| # Licensed to the Apache Software Foundation (ASF) under one | |
| # or more contributor license agreements. See the NOTICE file | |
| # distributed with this work for additional information | |
| # regarding copyright ownership. The ASF licenses this file | |
| # to you 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. | |
| # This workflow will update apache beam master branch with next release version | |
| # and cut release branch for current development version. | |
| # To learn more about GitHub Actions in Apache Beam check the CI.md | |
| # Workflow used after https://github.com/apache/beam/commit/4183e747becebd18becee5fff547af365910fc9c | |
| # If help is needed debugging issues, you can view the cut_release_branch.sh script at that commit | |
| # for guidance on how to do this manually. | |
| # (https://github.com/apache/beam/blob/4183e747becebd18becee5fff547af365910fc9c/release/src/main/scripts/cut_release_branch.sh). | |
| name: Cut Release Branch | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| RELEASE_VERSION: | |
| description: Beam version of current release (branch being cut) | |
| required: true | |
| default: '2.XX' | |
| NEXT_VERSION: | |
| description: Next release version | |
| required: true | |
| default: '2.XX' | |
| CREATE_RELEASE_BRANCH: | |
| description: Whether to cut the release branch. You shouldnt skip this unless it has already been completed successfully (yes/no) | |
| required: true | |
| default: 'yes' | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| jobs: | |
| update_release_branch: | |
| runs-on: ubuntu-latest | |
| env: | |
| RELEASE: ${{ github.event.inputs.RELEASE_VERSION }} | |
| steps: | |
| - name: Validate Release Version | |
| run: | | |
| if [[ ${RELEASE} =~ ([0-9]+\.[0-9]+) ]]; then | |
| echo "RELEASE_VERSION=${BASH_REMATCH[1]}" >> $GITHUB_ENV | |
| echo "RELEASE_BRANCH=release-${RELEASE}" >> $GITHUB_ENV | |
| else | |
| echo "The input for RELEASE does not match a valid format [0-9]+\.[0-9]+" | |
| exit 1 | |
| fi | |
| - name: Check out code | |
| uses: actions/checkout@v7 | |
| with: | |
| persist-credentials: true | |
| - name: Set git config | |
| run: | | |
| git config user.name $GITHUB_ACTOR | |
| git config user.email actions@"$RUNNER_NAME".local | |
| - name: Checkout to release branch | |
| run: | | |
| git checkout -b ${RELEASE_BRANCH} | |
| echo "==================Current working branch=======================" | |
| echo ${RELEASE_BRANCH} | |
| echo "===============================================================" | |
| - name: Update release version for dataflow runner | |
| run: | | |
| sed -i -e "s/'beam-master-.*'/'${RELEASE}.0'/g" \ | |
| runners/google-cloud-dataflow-java/build.gradle | |
| echo "===============Update release branch as following==============" | |
| git diff | |
| echo "===============================================================" | |
| - name: Commit and Push to release branch | |
| run: | | |
| git add runners/google-cloud-dataflow-java/build.gradle | |
| git commit -m "Set Dataflow container to release version." | |
| git push --set-upstream origin ${RELEASE_BRANCH} | |
| if: ${{github.event.inputs.CREATE_RELEASE_BRANCH == 'yes'}} | |
| update_master: | |
| needs: update_release_branch | |
| runs-on: ubuntu-latest | |
| env: | |
| MASTER_BRANCH: master | |
| NEXT_RELEASE: ${{ github.event.inputs.NEXT_VERSION }} | |
| SCRIPT_DIR: ./release/src/main/scripts | |
| RELEASE: ${{ github.event.inputs.RELEASE_VERSION }} | |
| steps: | |
| - name: Validate Next Version | |
| run: | | |
| if [[ ${RELEASE} =~ ([0-9]+\.[0-9]+) ]]; then | |
| echo "RELEASE_CUT_TAG=v${RELEASE}.0-RC00" >> $GITHUB_ENV | |
| else | |
| echo "The input for RELEASE does not match a valid format [0-9]+\.[0-9]+" | |
| exit 1 | |
| fi | |
| if [[ $NEXT_RELEASE =~ ([0-9]+\.[0-9]+) ]]; then | |
| echo "NEXT_VERSION_IN_BASE_BRANCH=${BASH_REMATCH[1]}.0" >> $GITHUB_ENV | |
| else | |
| echo "The input for NEXT_RELEASE does not match a valid format [0-9]+\.[0-9]+" | |
| exit 1 | |
| fi | |
| - name: Check out code | |
| uses: actions/checkout@v7 | |
| with: | |
| persist-credentials: true | |
| - name: Set git config | |
| run: | | |
| git config user.name $GITHUB_ACTOR | |
| git config user.email actions@"$RUNNER_NAME".local | |
| - name: Install xmllint | |
| run: | | |
| sudo apt-get clean | |
| sudo apt-get update | |
| sudo apt-get install -y --no-install-recommends libxml2-utils | |
| - name: Update .asf.yaml to protect new release branch from force push | |
| run: | | |
| sed -i -e "s/master: {}/master: {}\n release-${RELEASE}: {}/g" .asf.yaml | |
| - name: Update master branch | |
| run: | | |
| bash "${SCRIPT_DIR}/set_version.sh" "${NEXT_VERSION_IN_BASE_BRANCH}" "--add-tag" "${RELEASE_CUT_TAG}" | |
| echo "==============tag RC00 to current master branch================" | |
| git push origin tag "${RELEASE_CUT_TAG}" | |
| echo "==============Update master branch as following================" | |
| git diff | |
| echo "===============================================================" | |
| - name: Commit and Push to master branch files with Next Version | |
| run: | | |
| git add * | |
| git add .asf.yaml | |
| git commit -m "Moving to ${NEXT_VERSION_IN_BASE_BRANCH}-SNAPSHOT on master branch." | |
| git push origin ${MASTER_BRANCH} | |
| start_snapshot_build: | |
| needs: update_master | |
| runs-on: ubuntu-latest | |
| env: | |
| REMOTE_NAME: remote_repo | |
| REMOTE_URL: ${{ github.server_url }}/${{ github.repository }} | |
| BRANCH_NAME: snapshot_build-${{ github.event.inputs.RELEASE_VERSION }} | |
| RELEASE_BRANCH: release-${{ github.event.inputs.RELEASE_VERSION }} | |
| steps: | |
| - name: Trigger snapshot build | |
| run: | | |
| echo "Working in progress. Please trigger 'Release Nightly Snapshot' GHA workflow manually." |