10 IMAGE_REGISTRY: ghcr.io/asamk
11 REGISTRY_USER: ${{ github.actor }}
12 REGISTRY_PASSWORD: ${{ github.token }}
17 uses: AsamK/signal-cli/.github/workflows/ci.yml@master
18 # ${{ github.repository }} not accepted here
22 runs-on: ubuntu-latest
25 signal_cli_version: ${{ steps.cli_ver.outputs.version }}
26 release_id: ${{ steps.create_release.outputs.id }}
30 - name: Download signal-cli build from CI workflow
31 uses: actions/download-artifact@v3
33 - name: Get signal-cli version
36 ver="${GITHUB_REF_NAME#v}"
37 echo "version=${ver}" >> $GITHUB_OUTPUT
39 - name: Extract archive
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-*/
47 - name: Get signal-client jar version
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//")
54 echo "signal_client_version=${jar_version}" >> $GITHUB_OUTPUT
56 - name: Download signal-client builds
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 }}
62 for file_name in $FILE_NAMES; do
63 curl -sOL "${RELEASES_URL}/v${SIGNAL_CLIENT_VER}/${file_name}" # note: added v
67 - name: Compress native app
69 SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.version }}
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/
75 - name: Replace Windows lib
77 SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.version }}
78 SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }}
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-*/
84 - name: Replace macOS lib
86 SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.version }}
87 SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }}
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-*/
94 - name: Create release
96 uses: actions/create-release@v1
98 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
100 tag_name: v${{ steps.cli_ver.outputs.version }} # note: added `v`
101 release_name: v${{ steps.cli_ver.outputs.version }} # note: added `v`
104 - name: Upload Linux archive
105 uses: actions/upload-release-asset@v1
107 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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
114 - name: Upload Linux native archive
115 uses: actions/upload-release-asset@v1
117 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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
124 - name: Upload windows archive
125 uses: actions/upload-release-asset@v1
127 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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
134 - name: Upload macos archive
135 uses: actions/upload-release-asset@v1
137 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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
156 runs-on: ${{ matrix.runner }}
160 shell: bash # Explicit for windows
167 - name: Download the release file
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 }}
173 file_name=signal-cli-${SIGNAL_CLI_VER}-${RUNNER_OS}.tar.gz
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")
181 -H 'Accept: application/octet-stream' \
182 -H "Authorization: Bearer $GITHUB_TOKEN" \
184 tar -xzf "$file_name"
186 - name: Set up JDK for running signal-cli executable
187 uses: actions/setup-java@v3
189 distribution: 'adopt'
190 java-version: ${{ env.JAVA_VERSION }}
193 - name: Run signal-cli
196 if [[ "$RUNNER_OS" == 'Windows' ]]; then
197 EXECUTABLE_SUFFIX=".bat"
199 ./signal-cli${EXECUTABLE_SUFFIX} listAccounts
203 runs-on: ubuntu-latest
206 - uses: actions/checkout@v3
207 - name: Download signal-cli build from CI workflow
208 uses: actions/download-artifact@v3
210 - name: Get signal-cli version
213 ver="${GITHUB_REF_NAME#v}"
214 echo "version=${ver}" >> $GITHUB_OUTPUT
216 - name: Move archive file
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
226 uses: redhat-actions/buildah-build@v2
228 image: ${{ env.IMAGE_NAME }}
229 tags: latest ${{ github.sha }} ${{ steps.cli_ver.outputs.version }}
235 uses: redhat-actions/push-to-registry@v2
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 }}
246 echo "${{ toJSON(steps.push.outputs) }}"
248 build-container-native:
250 runs-on: ubuntu-latest
253 - uses: actions/checkout@v3
254 - name: Download signal-cli build from CI workflow
255 uses: actions/download-artifact@v3
257 - name: Get signal-cli version
260 ver="${GITHUB_REF_NAME#v}"
261 echo "version=${ver}" >> $GITHUB_OUTPUT
263 - name: Move archive file
265 mkdir -p build/native/nativeCompile/
266 chmod +x ./signal-cli-native/signal-cli
267 mv ./signal-cli-native/signal-cli build/native/nativeCompile/
271 uses: redhat-actions/buildah-build@v2
273 image: ${{ env.IMAGE_NAME }}
274 tags: latest-native ${{ github.sha }}-native ${{ steps.cli_ver.outputs.version }}-native
276 ./native.Containerfile
280 uses: redhat-actions/push-to-registry@v2
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 }}
291 echo "${{ toJSON(steps.push.outputs) }}"