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