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