-
Notifications
You must be signed in to change notification settings - Fork 21
170 lines (160 loc) · 6.75 KB
/
create_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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
name: Create release
on:
workflow_dispatch:
inputs:
commit_hash:
description: "Hash of 'Release version x.y.z' commit"
required: true
jobs:
build:
name: Create Release
runs-on: ubuntu-latest
steps:
- name: Setup Java SDK
uses: actions/setup-java@v4
with:
java-version: 11
distribution: temurin
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.commit_hash }}
- name: Check commit title and extract version
env:
COMMIT_HASH: ${{ github.event.inputs.commit_hash }}
run: |
export commit_title=$(git log --pretty=format:%s -1 $COMMIT_HASH)
echo "Commit title: $commit_title"
if [[ $commit_title =~ ^Release\ version\ [0-9]*\.[0-9]*\.[0-9]*$ ]]; then
echo "Valid commit title"
else
echo "Invalid commit title"
exit 1
fi
export version=$(echo ${commit_title} | sed s/^Release\ version\ //g)
echo "Will use version ${version}"
echo "version=${version}" >> $GITHUB_ENV
- name: Build
run: |
./gradlew distTar distZip
# Core libs
export core_tar_file=$(ls ./core/build/distributions/ | grep tgz)
export core_zip_file=$(ls ./core/build/distributions/ | grep zip)
echo core_tar_file=${core_tar_file} >> $GITHUB_ENV
echo core_zip_file=${core_zip_file} >> $GITHUB_ENV
# S3 libs
export s3_tar_file=$(ls ./storage/s3/build/distributions/ | grep tgz)
export s3_zip_file=$(ls ./storage/s3/build/distributions/ | grep zip)
echo s3_tar_file=${s3_tar_file} >> $GITHUB_ENV
echo s3_zip_file=${s3_zip_file} >> $GITHUB_ENV
# GCS libs
export gcs_tar_file=$(ls ./storage/gcs/build/distributions/ | grep tgz)
export gcs_zip_file=$(ls ./storage/gcs/build/distributions/ | grep zip)
echo gcs_tar_file=${gcs_tar_file} >> $GITHUB_ENV
echo gcs_zip_file=${gcs_zip_file} >> $GITHUB_ENV
# Azure libs
export azure_tar_file=$(ls ./storage/azure/build/distributions/ | grep tgz)
export azure_zip_file=$(ls ./storage/azure/build/distributions/ | grep zip)
echo azure_tar_file=${azure_tar_file} >> $GITHUB_ENV
echo azure_zip_file=${azure_zip_file} >> $GITHUB_ENV
echo core_tar_path=`realpath ./core/build/distributions/${core_tar_file}` >> $GITHUB_ENV
echo core_zip_path=`realpath ./core/build/distributions/${core_zip_file}` >> $GITHUB_ENV
echo s3_tar_path=`realpath ./storage/s3/build/distributions/${s3_tar_file}` >> $GITHUB_ENV
echo s3_zip_path=`realpath ./storage/s3/build/distributions/${s3_zip_file}` >> $GITHUB_ENV
echo gcs_tar_path=`realpath ./storage/gcs/build/distributions/${gcs_tar_file}` >> $GITHUB_ENV
echo gcs_zip_path=`realpath ./storage/gcs/build/distributions/${gcs_zip_file}` >> $GITHUB_ENV
echo azure_tar_path=`realpath ./storage/azure/build/distributions/${azure_tar_file}` >> $GITHUB_ENV
echo azure_zip_path=`realpath ./storage/azure/build/distributions/${azure_zip_file}` >> $GITHUB_ENV
- name: Create tag
env:
VERSION: ${{ env.version }}
run: |
git config --local user.name "GitHub Action"
git config --local user.email "action@github.com"
git tag -a "v$VERSION" -m "Release version $VERSION"
git push origin "v$VERSION"
- name: Create release draft
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: "v${{ env.version }}"
release_name: "v${{ env.version }}"
commitish: ${{ github.event.inputs.commit_hash }}
body: |
*Fill in*
draft: true
prerelease: false
- name: Upload core tar
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ env.core_tar_path }}
asset_name: ${{ env.core_tar_file }}
asset_content_type: application/tar
- name: Upload core zip
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ env.core_zip_path }}
asset_name: ${{ env.core_zip_file }}
asset_content_type: application/zip
- name: Upload s3 tar
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ env.s3_tar_path }}
asset_name: ${{ env.s3_tar_file }}
asset_content_type: application/tar
- name: Upload s3 zip
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ env.s3_zip_path }}
asset_name: ${{ env.s3_zip_file }}
asset_content_type: application/zip
- name: Upload gcs tar
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ env.gcs_tar_path }}
asset_name: ${{ env.gcs_tar_file }}
asset_content_type: application/tar
- name: Upload gcs zip
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ env.gcs_zip_path }}
asset_name: ${{ env.gcs_zip_file }}
asset_content_type: application/zip
- name: Upload azure tar
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ env.azure_tar_path }}
asset_name: ${{ env.azure_tar_file }}
asset_content_type: application/tar
- name: Upload azure zip
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ env.azure_zip_path }}
asset_name: ${{ env.azure_zip_file }}
asset_content_type: application/zip