1+ #! /bin/bash
2+ set -euxo pipefail
3+
4+ [ -z " ${VERSION:- } " ] && echo " VERSION must be specified" && exit 1
5+ [ -z " ${ARTIFACT_DIRECTORY:- } " ] && echo " ARTIFACT_DIRECTORY must be specified" && exit 1
6+
7+ LINUX_AMD64_PATH=" ${ARTIFACT_DIRECTORY} /aks-secure-tls-bootstrap-client-amd64"
8+ LINUX_ARM64_PATH=" ${ARTIFACT_DIRECTORY} /aks-secure-tls-bootstrap-client-arm64"
9+ WINDOWS_AMD64_PATH=" ${ARTIFACT_DIRECTORY} /aks-secure-tls-bootstrap-client-amd64.exe"
10+
11+ REPO_PATH=" Azure/aks-secure-tls-bootstrap"
12+
13+ verify_artifacts () {
14+ if [ ! -f " ${LINUX_AMD64_PATH} " ]; then
15+ echo " could not find linux-amd64 client binary artifact at: ${LINUX_AMD64_PATH} "
16+ exit 1
17+ fi
18+ if [ ! -f " ${LINUX_ARM64_PATH} " ]; then
19+ echo " could not find linux-arm64 client binary artifact at: ${LINUX_ARM64_PATH} "
20+ exit 1
21+ fi
22+ if [ ! -f " ${WINDOWS_AMD64_PATH} " ]; then
23+ echo " could not find windows-amd64 client binary artifact at: ${WINDOWS_AMD64_PATH} "
24+ exit 1
25+ fi
26+ }
27+
28+ create_linux_tarballs () {
29+ CLIENT_PATH=" aks-secure-tls-bootstrap-client"
30+
31+ # create linux-amd64 tarball
32+ mv " ${LINUX_AMD64_PATH} " " ${CLIENT_PATH} "
33+ LINUX_AMD64_TAR=" linux-amd64.tar.gz"
34+ tar -czvf " ${LINUX_AMD64_TAR} " " ${CLIENT_PATH} "
35+
36+ # cleanup
37+ rm -f " ${CLIENT_PATH} "
38+
39+ # create linux-arm64 tarball
40+ mv " ${LINUX_ARM64_PATH} " " ${CLIENT_PATH} "
41+ LINUX_ARM64_TAR=" linux-arm64.tar.gz"
42+ tar -czvf " ${LINUX_ARM64_TAR} " " ${CLIENT_PATH} "
43+
44+ # cleanup
45+ rm -f " ${CLIENT_PATH} "
46+ }
47+
48+ create_windows_zip_archive () {
49+ CLIENT_PATH=" aks-secure-tls-bootstrap-client.exe"
50+
51+ # create windows-amd64 zip archive
52+ mv " ${WINDOWS_AMD64_PATH} " " ${CLIENT_PATH} "
53+ WINDOWS_AMD64_ZIP=" windows-amd64.zip"
54+ zip -r " ${WINDOWS_AMD64_ZIP} " " ${CLIENT_PATH} "
55+
56+ # cleanup
57+ rm -f " ${CLIENT_PATH} "
58+ }
59+
60+ create_github_release () {
61+ TAG_NAME=" client/${VERSION} "
62+ echo " Creating GitHub release for tag: ${TAG_NAME} "
63+
64+ # create the release
65+ CREATE_RELEASE_RESPONSE=$( curl -s -X POST \
66+ -H " Authorization: Bearer ${GITHUB_TOKEN} " \
67+ -H " Accept: application/vnd.github.v3+json" \
68+ -H " Content-Type: application/json" \
69+ " https://api.github.com/repos/${REPO_PATH} /releases" \
70+ -d " {
71+ \" tag_name\" : \" ${TAG_NAME} \" ,
72+ \" name\" : \" ${TAG_NAME} \" ,
73+ \" draft\" : false,
74+ \" prerelease\" : false
75+ }" )
76+ RELEASE_ID=$( echo " ${CREATE_RELEASE_RESPONSE} " | jq -r ' .id' )
77+ UPLOAD_URL=$( echo " ${CREATE_RELEASE_RESPONSE} " | jq -r ' .upload_url' )
78+ UPLOAD_URL=" ${UPLOAD_URL% \{ * } "
79+ if [ -z " ${RELEASE_ID} " ] || [ " ${RELEASE_ID} " = " null" ] || [ -z " ${UPLOAD_URL} " ] || [ " ${UPLOAD_URL} " = " null" ]; then
80+ echo " Failed to create GitHub release. Response:"
81+ echo " ${CREATE_RELEASE_RESPONSE} "
82+ exit 1
83+ fi
84+
85+ echo " Created GitHub release with ID: ${RELEASE_ID} "
86+
87+ # upload artifacts
88+ upload_asset " ${UPLOAD_URL} " " ${LINUX_AMD64_TAR} " " application/gzip"
89+ upload_asset " ${UPLOAD_URL} " " ${LINUX_ARM64_TAR} " " application/gzip"
90+ upload_asset " ${UPLOAD_URL} " " ${WINDOWS_AMD64_ZIP} " " application/zip"
91+
92+ echo " Successfully created GitHub release for tag: ${TAG_NAME} "
93+ echo " Release URL: https://github.com/${REPO_PATH} /releases/tag/${TAG_NAME} "
94+ }
95+
96+ upload_asset () {
97+ local upload_url=" $1 "
98+ local file_path=" $2 "
99+ local content_type=" $3 "
100+ local file_name=$( basename " ${file_path} " )
101+
102+ echo " Uploading asset: ${file_name} "
103+
104+ UPLOAD_RESPONSE=$( curl -s -X POST \
105+ -H " Authorization: Bearer ${GITHUB_TOKEN} " \
106+ -H " Accept: application/vnd.github.v3+json" \
107+ -H " Content-Type: ${content_type} " \
108+ " ${upload_url} ?name=${file_name} " \
109+ --data-binary " @${file_path} " )
110+
111+ # Check if upload was successful
112+ if [ " $( echo " ${UPLOAD_RESPONSE} " | jq -r ' .state' ) " = " uploaded" ]; then
113+ echo " Successfully uploaded: ${file_name} "
114+ else
115+ echo " Failed to upload asset: ${file_name} . Response:"
116+ echo " ${UPLOAD_RESPONSE} "
117+ exit 1
118+ fi
119+ }
120+
121+ verify_artifacts
122+ create_linux_tarballs
123+ create_windows_zip_archive
124+ create_github_release
0 commit comments