1 name: repackage-native-libs
12 uses: AsamK/signal-cli/.github/workflows/ci.yml@master
13 # ${{ github.repository }} not accepted here
18 runs-on: ubuntu-latest
21 signal_cli_version: ${{ steps.cli_ver.outputs.signal_cli_version }}
22 release_id: ${{ steps.create_release.outputs.id }}
26 - name: Download signal-cli build from CI workflow
27 uses: actions/download-artifact@v3
29 - name: Get signal-cli version
32 #echo ${GITHUB_REF#refs/tag/}
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/')
37 echo "::set-output name=signal_cli_version::${ver}"
40 - name: Get signal-client jar version
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//")
47 echo "::set-output name=signal_client_version::$jar_version"
49 - name: Download signal-client builds
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 }}
55 for file_name in $FILE_NAMES; do
56 curl -sOL "${RELEASES_URL}/v${SIGNAL_CLIENT_VER}/${file_name}" # note: added v
60 - name: Compress native app
62 SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.signal_cli_version }}
64 tar -czf signal-cli-${SIGNAL_CLI_VER}-Linux-native.tar.gz -C signal-cli-native signal-cli
66 - name: Replace Windows lib
68 SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.signal_cli_version }}
69 SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }}
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}/
75 - name: Replace macOS lib
77 SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.signal_cli_version }}
78 SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }}
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}/
85 - name: Create release
87 uses: actions/create-release@v1
89 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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`
95 - name: Upload Linux archive
96 uses: actions/upload-release-asset@v1
98 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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
105 - name: Upload Linux native archive
106 uses: actions/upload-release-asset@v1
108 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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
115 - name: Upload windows archive
116 uses: actions/upload-release-asset@v1
118 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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
125 - name: Upload macos archive
126 uses: actions/upload-release-asset@v1
128 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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
147 runs-on: ${{ matrix.runner }}
151 shell: bash # Explicit for windows
158 - name: Download the release file
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 }}
164 file_name=signal-cli-${SIGNAL_CLI_VER}-${RUNNER_OS}.tar.gz
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")
172 -H 'Accept: application/octet-stream' \
173 -H "Authorization: Bearer $GITHUB_TOKEN" \
175 tar -xzf "$file_name"
177 - name: Set up JDK for running signal-cli executable
178 uses: actions/setup-java@v3
180 distribution: 'adopt'
181 java-version: ${{ env.JAVA_VERSION }}
183 - name: Run signal-cli
186 if [[ "$RUNNER_OS" == 'Windows' ]]; then
187 EXECUTABLE_SUFFIX=".bat"
189 ./signal-cli${EXECUTABLE_SUFFIX} listAccounts