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