]> nmode's Git Repositories - signal-cli/blob - .github/workflows/release.yml
f76e686c213b48138abb6ade1af96bee253eb23a
[signal-cli] / .github / workflows / release.yml
1 name: release
2
3 on:
4 push:
5 tags:
6 - v*
7
8 jobs:
9
10 ci_wf:
11 uses: AsamK/signal-cli/.github/workflows/ci.yml@master
12 # ${{ github.repository }} not accepted here
13
14 lib_to_jar:
15 needs: ci_wf
16 runs-on: ubuntu-latest
17
18 outputs:
19 signal_cli_version: ${{ steps.cli_ver.outputs.version }}
20 release_id: ${{ steps.create_release.outputs.id }}
21
22 steps:
23
24 - name: Download signal-cli build from CI workflow
25 uses: actions/download-artifact@v3
26
27 - name: Get signal-cli version
28 id: cli_ver
29 run: |
30 ver="${GITHUB_REF_NAME#v}"
31 echo "version=${ver}" >> $GITHUB_OUTPUT
32
33 - name: Extract archive
34 run: |
35 tree .
36 ARCHIVE_DIR=$(ls signal-cli-archive-*/ -d | tail -n1)
37 tar -xzf ./"${ARCHIVE_DIR}"/*.tar.gz
38 mv ./"${ARCHIVE_DIR}"/*.tar.gz signal-cli-${{ steps.cli_ver.outputs.version }}-Linux.tar.gz
39 rm -rf signal-cli-archive-*/
40
41 - name: Get signal-client jar version
42 id: lib_ver
43 run: |
44 JAR_PREFIX=libsignal-client-
45 jar_file=$(find ./signal-cli-*/lib/ -name "$JAR_PREFIX*.jar")
46 jar_version=$(echo "$jar_file" | xargs basename | sed "s/$JAR_PREFIX//; s/.jar//")
47 echo "$jar_version"
48 echo "signal_client_version=${jar_version}" >> $GITHUB_OUTPUT
49
50 - name: Download signal-client builds
51 env:
52 RELEASES_URL: https://github.com/signalapp/libsignal/releases/download/
53 FILE_NAMES: signal_jni.dll libsignal_jni.dylib
54 SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }}
55 run: |
56 for file_name in $FILE_NAMES; do
57 curl -sOL "${RELEASES_URL}/v${SIGNAL_CLIENT_VER}/${file_name}" # note: added v
58 done
59 tree .
60
61 - name: Compress native app
62 env:
63 SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.version }}
64 run: |
65 chmod +x signal-cli-native/signal-cli
66 tar -czf signal-cli-${SIGNAL_CLI_VER}-Linux-native.tar.gz -C signal-cli-native signal-cli
67 rm -rf signal-cli-native/
68
69 - name: Replace Windows lib
70 env:
71 SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.version }}
72 SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }}
73 run: |
74 mv signal_jni.dll libsignal_jni.so
75 zip -u ./signal-cli-*/lib/libsignal-client-${SIGNAL_CLIENT_VER}.jar ./libsignal_jni.so
76 tar -czf signal-cli-${SIGNAL_CLI_VER}-Windows.tar.gz signal-cli-*/
77
78 - name: Replace macOS lib
79 env:
80 SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.version }}
81 SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }}
82 run: |
83 jar_file=./signal-cli-*/lib/libsignal-client-${SIGNAL_CLIENT_VER}.jar
84 zip -d $jar_file libsignal_jni.so
85 zip $jar_file libsignal_jni.dylib
86 tar -czf signal-cli-${SIGNAL_CLI_VER}-macOS.tar.gz signal-cli-*/
87
88 - name: Create release
89 id: create_release
90 uses: actions/create-release@v1
91 env:
92 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
93 with:
94 tag_name: v${{ steps.cli_ver.outputs.version }} # note: added `v`
95 release_name: v${{ steps.cli_ver.outputs.version }} # note: added `v`
96 draft: true
97
98 - name: Upload Linux archive
99 uses: actions/upload-release-asset@v1
100 env:
101 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
102 with:
103 upload_url: ${{ steps.create_release.outputs.upload_url }}
104 asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux.tar.gz
105 asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux.tar.gz
106 asset_content_type: application/x-compressed-tar # .tar.gz
107
108 - name: Upload Linux native archive
109 uses: actions/upload-release-asset@v1
110 env:
111 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
112 with:
113 upload_url: ${{ steps.create_release.outputs.upload_url }}
114 asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux-native.tar.gz
115 asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux-native.tar.gz
116 asset_content_type: application/x-compressed-tar # .tar.gz
117
118 - name: Upload windows archive
119 uses: actions/upload-release-asset@v1
120 env:
121 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
122 with:
123 upload_url: ${{ steps.create_release.outputs.upload_url }}
124 asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-Windows.tar.gz
125 asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-Windows.tar.gz
126 asset_content_type: application/x-compressed-tar # .tar.gz
127
128 - name: Upload macos archive
129 uses: actions/upload-release-asset@v1
130 env:
131 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
132 with:
133 upload_url: ${{ steps.create_release.outputs.upload_url }}
134 asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-macOS.tar.gz
135 asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-macOS.tar.gz
136 asset_content_type: application/x-compressed-tar # .tar.gz
137
138
139 run_repackaged:
140
141 needs:
142 - lib_to_jar
143
144 strategy:
145 matrix:
146 runner:
147 - windows-latest
148 - macos-latest
149
150 runs-on: ${{ matrix.runner }}
151
152 defaults:
153 run:
154 shell: bash # Explicit for windows
155
156 env:
157 JAVA_VERSION: 19
158
159 steps:
160
161 - name: Download the release file
162 env:
163 SIGNAL_CLI_VER: ${{ needs.lib_to_jar.outputs.signal_cli_version }}
164 RELEASE_ID: ${{ needs.lib_to_jar.outputs.release_id }}
165 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
166 run: |
167 file_name=signal-cli-${SIGNAL_CLI_VER}-${RUNNER_OS}.tar.gz
168 echo "$file_name"
169 assets_json=$(curl -s \
170 -H "Authorization: Bearer $GITHUB_TOKEN" \
171 "${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}/assets")
172 asset_dl_url=$(echo "$assets_json" | jq -r ".[] | select (.name == \"$file_name\") | .url")
173 echo "$asset_dl_url"
174 curl -sLOJ \
175 -H 'Accept: application/octet-stream' \
176 -H "Authorization: Bearer $GITHUB_TOKEN" \
177 "$asset_dl_url"
178 tar -xzf "$file_name"
179
180 - name: Set up JDK for running signal-cli executable
181 uses: actions/setup-java@v3
182 with:
183 distribution: 'adopt'
184 java-version: ${{ env.JAVA_VERSION }}
185 java-package: 'jre'
186
187 - name: Run signal-cli
188 run: |
189 cd signal-cli-*/bin
190 if [[ "$RUNNER_OS" == 'Windows' ]]; then
191 EXECUTABLE_SUFFIX=".bat"
192 fi
193 ./signal-cli${EXECUTABLE_SUFFIX} listAccounts