| # 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.0' |
| NEXT_VERSION: |
| description: Next release version |
| required: true |
| default: '2.XX.0' |
| 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]+\.[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]+\.[0-9]+" |
| exit 1 |
| fi |
| - name: Check out code |
| uses: actions/checkout@v4 |
| - 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}'/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 [[ $NEXT_RELEASE =~ ([0-9]+\.[0-9]+\.[0-9]+) ]]; then |
| echo "NEXT_VERSION_IN_BASE_BRANCH=${BASH_REMATCH[1]}" >> $GITHUB_ENV |
| else |
| echo "The input for NEXT_RELEASE does not match a valid format [0-9]+\.[0-9]+\.[0-9]+" |
| exit 1 |
| fi |
| - name: Check out code |
| uses: actions/checkout@v4 |
| - 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 install -y 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}" |
| 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." |