forked from apache/beam
-
Notifications
You must be signed in to change notification settings - Fork 0
142 lines (134 loc) · 5.74 KB
/
cut_release_branch.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# 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."