-
Notifications
You must be signed in to change notification settings - Fork 2
126 lines (102 loc) · 5.27 KB
/
cut_release.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
# Adapted from: https://github.com/awslabs/aws-athena-query-federation/blob/master/.github/workflows/cut_release.yml
name: Cut release
on:
workflow_dispatch:
jobs:
cut_release:
name: Cut a release
runs-on: ubuntu-latest
steps:
- name: Update
run: |
sudo apt-get update
- name: Setup dependencies
run: |
sudo apt-get install -y libxml2-utils python3
pip3 install lxml beautifulsoup4
- name: Set up JDK 11
uses: actions/setup-java@v4
with:
distribution: 'corretto'
java-version: '11'
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
# See: https://stackoverflow.com/a/57969570
- name: Setup previous release version environment variable
env:
GH_TOKEN: ${{ github.token }}
run: echo "PREVIOUS_RELEASE_VERSION=$(gh release list --exclude-drafts --exclude-pre-releases -L 1 | sed 's/.*\s\+Latest\s\+v\(.*\)\s\+.*/\1/g')" >> $GITHUB_ENV
- name: Setup previous release version tag environment variable
run: echo "PREVIOUS_RELEASE_TAG=v$PREVIOUS_RELEASE_VERSION" >> $GITHUB_ENV
- name: Setup new release version environment variable
run: |
NEW_RELEASE_VERSION=$((echo $PREVIOUS_RELEASE_VERSION | grep "$(date +'%Y.%-U')" || date +'%Y.%-U.0') | python3 -c 'version = input().split("."); print(f"{version[0]}.{version[1]}.{int(version[2]) + 1}")')
echo "NEW_RELEASE_VERSION=$NEW_RELEASE_VERSION" >> $GITHUB_ENV
- name: Create branch locally on the runner
run: git checkout -b release_${NEW_RELEASE_VERSION} origin/main
- name: Bump the versions in the branch
env:
GH_TOKEN: ${{ github.token }}
run: |
python3 tools/bump_versions/bump_all_version.py
# See: https://joht.github.io/johtizen/build/2022/01/20/github-actions-push-into-repository.html
- name: Setup workflow git committer user
run: |
git config --global user.name "athena_federation_cut_release_workflow"
git config --global user.email "[email protected]"
- name: Create the release bump commit
run: |
echo "Cut release $NEW_RELEASE_VERSION" > /tmp/RELEASE_MESSAGE
echo >> /tmp/RELEASE_MESSAGE
git fetch --tag origin
git log --format=' - %s' $PREVIOUS_RELEASE_TAG..HEAD >> /tmp/RELEASE_MESSAGE
git commit -a -F /tmp/RELEASE_MESSAGE
- name: Build jars
run: |
mvn clean package -T 1C -DskipTests
# Copy over the sdk-dsv2 jars
mkdir -p /tmp/sdk_dsv2_jars/
cp ./athena-federation-sdk-dsv2/target/athena-federation-sdk-dsv2-${NEW_RELEASE_VERSION}.jar /tmp/sdk_dsv2_jars/
# Copy over the connector jars
mkdir -p /tmp/connector_jars/
find athena-*/target -name "*.jar" -type f | grep -v "/original" | grep -v "\-sdk-" | xargs -I{} cp {} /tmp/connector_jars/
- name: Push the release branch
run: |
git push origin release_${NEW_RELEASE_VERSION}:release_${NEW_RELEASE_VERSION}
- name: Sync up with origin again now that the new branch has been pushed
run: |
git fetch origin
git pull --rebase origin release_${NEW_RELEASE_VERSION}
- name: Create the release on github
env:
GH_TOKEN: ${{ github.token }}
run: |
cat <<EOF > /tmp/RELEASE_NOTES
This version includes improvements and bugfixes in some connectors. See [here](https://github.com/awslabs/aws-athena-query-federation-dsv2/compare/v$PREVIOUS_RELEASE_VERSION..v$NEW_RELEASE_VERSION) for changes since the last release.
Binary distribution of the SDK DSV2 adapter and DSV2 adapted connectors can be found here.
You can assert the validity of the binary distribution by comparing against the below cksums.
Athena Federation SDK DSV2 jars
|CheckSum|File|
|----------|----|
$(cd /tmp/sdk_dsv2_jars && ls | xargs -I{} cksum {} | sed 's/\([0-9]\) \([a-zA-Z]\)/\1|\2/g' | sed 's/^/|/g' | sed 's/$/|/g')
Athena Federation Connector DSV2 jars
|CheckSum|File|
|----------|----|
$(cd /tmp/connector_jars && ls | xargs -I{} cksum {} | sed 's/\([0-9]\) \([a-zA-Z]\)/\1|\2/g' | sed 's/^/|/g' | sed 's/$/|/g')
## What's Changed
$(git log --format='- %s' v$PREVIOUS_RELEASE_VERSION..HEAD~1)
**Full Changelog**: https://github.com/awslabs/aws-athena-query-federation-dsv2/compare/v$PREVIOUS_RELEASE_VERSION..v$NEW_RELEASE_VERSION
EOF
# ------------------------------------------------------------------------------------------
# Create the draft github release:
gh release create "v$NEW_RELEASE_VERSION" -d --latest \
--target release_${NEW_RELEASE_VERSION} \
-t "Release v$NEW_RELEASE_VERSION of Athena Query Federation DSV2" \
--notes-file /tmp/RELEASE_NOTES
# Upload the jar attachments
gh release upload "v$NEW_RELEASE_VERSION" \
$(find /tmp/sdk_dsv2_jars -type f) \
$(find /tmp/connector_jars -type f) \
--clobber