]> nmode's Git Repositories - signal-cli/blob - .github/workflows/release.yml
117f26adee2b7fb57ebeb343c5c6287f10ca3605
[signal-cli] / .github / workflows / release.yml
1 name: release
2
3 on:
4 push:
5 tags:
6 - v*
7
8 env:
9 IMAGE_NAME: signal-cli
10 IMAGE_REGISTRY: ghcr.io/asamk
11 REGISTRY_USER: ${{ github.actor }}
12 REGISTRY_PASSWORD: ${{ github.token }}
13
14 jobs:
15
16 ci_wf:
17 uses: AsamK/signal-cli/.github/workflows/ci.yml@master
18 # ${{ github.repository }} not accepted here
19
20 lib_to_jar:
21 needs: ci_wf
22 runs-on: ubuntu-latest
23
24 outputs:
25 signal_cli_version: ${{ steps.cli_ver.outputs.version }}
26 release_id: ${{ steps.create_release.outputs.id }}
27
28 steps:
29
30 - name: Download signal-cli build from CI workflow
31 uses: actions/download-artifact@v3
32
33 - name: Get signal-cli version
34 id: cli_ver
35 run: |
36 ver="${GITHUB_REF_NAME#v}"
37 echo "version=${ver}" >> $GITHUB_OUTPUT
38
39 - name: Extract archive
40 run: |
41 tree .
42 ARCHIVE_DIR=$(ls signal-cli-archive-*/ -d | tail -n1)
43 tar -xzf ./"${ARCHIVE_DIR}"/*.tar.gz
44 mv ./"${ARCHIVE_DIR}"/*.tar.gz signal-cli-${{ steps.cli_ver.outputs.version }}-Linux.tar.gz
45 rm -rf signal-cli-archive-*/
46
47 - name: Get signal-client jar version
48 id: lib_ver
49 run: |
50 JAR_PREFIX=libsignal-client-
51 jar_file=$(find ./signal-cli-*/lib/ -name "$JAR_PREFIX*.jar")
52 jar_version=$(echo "$jar_file" | xargs basename | sed "s/$JAR_PREFIX//; s/.jar//")
53 echo "$jar_version"
54 echo "signal_client_version=${jar_version}" >> $GITHUB_OUTPUT
55
56 - name: Download signal-client builds
57 env:
58 RELEASES_URL: https://github.com/signalapp/libsignal/releases/download/
59 FILE_NAMES: signal_jni.dll libsignal_jni.dylib
60 SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }}
61 run: |
62 for file_name in $FILE_NAMES; do
63 curl -sOL "${RELEASES_URL}/v${SIGNAL_CLIENT_VER}/${file_name}" # note: added v
64 done
65 tree .
66
67 - name: Compress native app
68 env:
69 SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.version }}
70 run: |
71 chmod +x signal-cli-native/signal-cli
72 tar -czf signal-cli-${SIGNAL_CLI_VER}-Linux-native.tar.gz -C signal-cli-native signal-cli
73 rm -rf signal-cli-native/
74
75 - name: Replace Windows lib
76 env:
77 SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.version }}
78 SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }}
79 run: |
80 mv signal_jni.dll libsignal_jni.so
81 zip -u ./signal-cli-*/lib/libsignal-client-${SIGNAL_CLIENT_VER}.jar ./libsignal_jni.so
82 tar -czf signal-cli-${SIGNAL_CLI_VER}-Windows.tar.gz signal-cli-*/
83
84 - name: Replace macOS lib
85 env:
86 SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.version }}
87 SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }}
88 run: |
89 jar_file=./signal-cli-*/lib/libsignal-client-${SIGNAL_CLIENT_VER}.jar
90 zip -d $jar_file libsignal_jni.so
91 zip $jar_file libsignal_jni.dylib
92 tar -czf signal-cli-${SIGNAL_CLI_VER}-macOS.tar.gz signal-cli-*/
93
94 - name: Create release
95 id: create_release
96 uses: actions/create-release@v1
97 env:
98 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
99 with:
100 tag_name: v${{ steps.cli_ver.outputs.version }} # note: added `v`
101 release_name: v${{ steps.cli_ver.outputs.version }} # note: added `v`
102 draft: true
103
104 - name: Upload Linux archive
105 uses: actions/upload-release-asset@v1
106 env:
107 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
108 with:
109 upload_url: ${{ steps.create_release.outputs.upload_url }}
110 asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux.tar.gz
111 asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux.tar.gz
112 asset_content_type: application/x-compressed-tar # .tar.gz
113
114 - name: Upload Linux native archive
115 uses: actions/upload-release-asset@v1
116 env:
117 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
118 with:
119 upload_url: ${{ steps.create_release.outputs.upload_url }}
120 asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux-native.tar.gz
121 asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux-native.tar.gz
122 asset_content_type: application/x-compressed-tar # .tar.gz
123
124 - name: Upload windows archive
125 uses: actions/upload-release-asset@v1
126 env:
127 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
128 with:
129 upload_url: ${{ steps.create_release.outputs.upload_url }}
130 asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-Windows.tar.gz
131 asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-Windows.tar.gz
132 asset_content_type: application/x-compressed-tar # .tar.gz
133
134 - name: Upload macos archive
135 uses: actions/upload-release-asset@v1
136 env:
137 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
138 with:
139 upload_url: ${{ steps.create_release.outputs.upload_url }}
140 asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-macOS.tar.gz
141 asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-macOS.tar.gz
142 asset_content_type: application/x-compressed-tar # .tar.gz
143
144
145 run_repackaged:
146
147 needs:
148 - lib_to_jar
149
150 strategy:
151 matrix:
152 runner:
153 - windows-latest
154 - macos-latest
155
156 runs-on: ${{ matrix.runner }}
157
158 defaults:
159 run:
160 shell: bash # Explicit for windows
161
162 env:
163 JAVA_VERSION: 19
164
165 steps:
166
167 - name: Download the release file
168 env:
169 SIGNAL_CLI_VER: ${{ needs.lib_to_jar.outputs.signal_cli_version }}
170 RELEASE_ID: ${{ needs.lib_to_jar.outputs.release_id }}
171 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
172 run: |
173 file_name=signal-cli-${SIGNAL_CLI_VER}-${RUNNER_OS}.tar.gz
174 echo "$file_name"
175 assets_json=$(curl -s \
176 -H "Authorization: Bearer $GITHUB_TOKEN" \
177 "${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}/assets")
178 asset_dl_url=$(echo "$assets_json" | jq -r ".[] | select (.name == \"$file_name\") | .url")
179 echo "$asset_dl_url"
180 curl -sLOJ \
181 -H 'Accept: application/octet-stream' \
182 -H "Authorization: Bearer $GITHUB_TOKEN" \
183 "$asset_dl_url"
184 tar -xzf "$file_name"
185
186 - name: Set up JDK for running signal-cli executable
187 uses: actions/setup-java@v3
188 with:
189 distribution: 'adopt'
190 java-version: ${{ env.JAVA_VERSION }}
191 java-package: 'jre'
192
193 - name: Run signal-cli
194 run: |
195 cd signal-cli-*/bin
196 if [[ "$RUNNER_OS" == 'Windows' ]]; then
197 EXECUTABLE_SUFFIX=".bat"
198 fi
199 ./signal-cli${EXECUTABLE_SUFFIX} listAccounts
200
201 build-container:
202 needs: ci_wf
203 runs-on: ubuntu-latest
204
205 steps:
206 - uses: actions/checkout@v3
207 - name: Download signal-cli build from CI workflow
208 uses: actions/download-artifact@v3
209
210 - name: Get signal-cli version
211 id: cli_ver
212 run: |
213 ver="${GITHUB_REF_NAME#v}"
214 echo "version=${ver}" >> $GITHUB_OUTPUT
215
216 - name: Move archive file
217 run: |
218 ARCHIVE_DIR=$(ls signal-cli-archive-*/ -d | tail -n1)
219 tar xf ./"${ARCHIVE_DIR}"/*.tar.gz
220 rm -r signal-cli-archive-* signal-cli-native
221 mkdir -p build/install/
222 mv ./signal-cli-*/ build/install/signal-cli
223
224 - name: Build Image
225 id: build_image
226 uses: redhat-actions/buildah-build@v2
227 with:
228 image: ${{ env.IMAGE_NAME }}
229 tags: latest ${{ github.sha }} ${{ steps.cli_ver.outputs.version }}
230 containerfiles:
231 ./Containerfile
232 oci: true
233
234 - name: Push To GHCR
235 uses: redhat-actions/push-to-registry@v2
236 id: push
237 with:
238 image: ${{ steps.build_image.outputs.image }}
239 tags: ${{ steps.build_image.outputs.tags }}
240 registry: ${{ env.IMAGE_REGISTRY }}
241 username: ${{ env.REGISTRY_USER }}
242 password: ${{ env.REGISTRY_PASSWORD }}
243
244 - name: Echo outputs
245 run: |
246 echo "${{ toJSON(steps.push.outputs) }}"
247
248 build-container-native:
249 needs: ci_wf
250 runs-on: ubuntu-latest
251
252 steps:
253 - uses: actions/checkout@v3
254 - name: Download signal-cli build from CI workflow
255 uses: actions/download-artifact@v3
256
257 - name: Get signal-cli version
258 id: cli_ver
259 run: |
260 ver="${GITHUB_REF_NAME#v}"
261 echo "version=${ver}" >> $GITHUB_OUTPUT
262
263 - name: Move archive file
264 run: |
265 mkdir -p build/native/nativeCompile/
266 chmod +x ./signal-cli-native/signal-cli
267 mv ./signal-cli-native/signal-cli build/native/nativeCompile/
268
269 - name: Build Image
270 id: build_image
271 uses: redhat-actions/buildah-build@v2
272 with:
273 image: ${{ env.IMAGE_NAME }}
274 tags: latest-native ${{ github.sha }}-native ${{ steps.cli_ver.outputs.version }}-native
275 containerfiles:
276 ./native.Containerfile
277 oci: true
278
279 - name: Push To GHCR
280 uses: redhat-actions/push-to-registry@v2
281 id: push
282 with:
283 image: ${{ steps.build_image.outputs.image }}
284 tags: ${{ steps.build_image.outputs.tags }}
285 registry: ${{ env.IMAGE_REGISTRY }}
286 username: ${{ env.REGISTRY_USER }}
287 password: ${{ env.REGISTRY_PASSWORD }}
288
289 - name: Echo outputs
290 run: |
291 echo "${{ toJSON(steps.push.outputs) }}"