9 contents: read # to fetch code (actions/checkout)
12 IMAGE_NAME: signal-cli
13 IMAGE_REGISTRY: ghcr.io/asamk
14 REGISTRY_USER: ${{ github.actor }}
15 REGISTRY_PASSWORD: ${{ github.token }}
20 uses: AsamK/signal-cli/.github/workflows/ci.yml@master
21 # ${{ github.repository }} not accepted here
25 runs-on: ubuntu-latest
30 signal_cli_version: ${{ steps.cli_ver.outputs.version }}
31 release_id: ${{ steps.create_release.outputs.id }}
35 - name: Download signal-cli build from CI workflow
36 uses: actions/download-artifact@v3
38 - name: Get signal-cli version
41 ver="${GITHUB_REF_NAME#v}"
42 echo "version=${ver}" >> $GITHUB_OUTPUT
44 - name: Extract archive
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 }}-Linux.tar.gz
50 rm -rf signal-cli-archive-*/
52 - name: Get signal-client jar version
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//")
59 echo "signal_client_version=${jar_version}" >> $GITHUB_OUTPUT
61 - name: Download signal-client builds
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 }}
67 for file_name in $FILE_NAMES; do
68 curl -sOL "${RELEASES_URL}/v${SIGNAL_CLIENT_VER}/${file_name}" # note: added v
72 - name: Compress native app
74 SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.version }}
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/
80 - name: Replace Windows lib
82 SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.version }}
83 SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }}
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-*/
89 - name: Replace macOS lib
91 SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.version }}
92 SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }}
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-*/
99 - name: Create release
101 uses: actions/create-release@v1
103 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
105 tag_name: v${{ steps.cli_ver.outputs.version }} # note: added `v`
106 release_name: v${{ steps.cli_ver.outputs.version }} # note: added `v`
109 - name: Upload Linux archive
110 uses: actions/upload-release-asset@v1
112 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
114 upload_url: ${{ steps.create_release.outputs.upload_url }}
115 asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux.tar.gz
116 asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux.tar.gz
117 asset_content_type: application/x-compressed-tar # .tar.gz
119 - name: Upload Linux native archive
120 uses: actions/upload-release-asset@v1
122 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
124 upload_url: ${{ steps.create_release.outputs.upload_url }}
125 asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux-native.tar.gz
126 asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux-native.tar.gz
127 asset_content_type: application/x-compressed-tar # .tar.gz
129 - name: Upload windows archive
130 uses: actions/upload-release-asset@v1
132 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
134 upload_url: ${{ steps.create_release.outputs.upload_url }}
135 asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-Windows.tar.gz
136 asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-Windows.tar.gz
137 asset_content_type: application/x-compressed-tar # .tar.gz
139 - name: Upload macos archive
140 uses: actions/upload-release-asset@v1
142 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
144 upload_url: ${{ steps.create_release.outputs.upload_url }}
145 asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-macOS.tar.gz
146 asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-macOS.tar.gz
147 asset_content_type: application/x-compressed-tar # .tar.gz
151 runs-on: ubuntu-latest
157 - uses: actions/checkout@v3
158 - name: Download signal-cli build from CI workflow
159 uses: actions/download-artifact@v3
161 - name: Get signal-cli version
164 ver="${GITHUB_REF_NAME#v}"
165 echo "version=${ver}" >> $GITHUB_OUTPUT
167 - name: Move archive file
169 ARCHIVE_DIR=$(ls signal-cli-archive-*/ -d | tail -n1)
170 tar xf ./"${ARCHIVE_DIR}"/*.tar.gz
171 rm -r signal-cli-archive-* signal-cli-native
172 mkdir -p build/install/
173 mv ./signal-cli-*/ build/install/signal-cli
177 uses: redhat-actions/buildah-build@v2
179 image: ${{ env.IMAGE_NAME }}
180 tags: latest ${{ github.sha }} ${{ steps.cli_ver.outputs.version }}
186 uses: redhat-actions/push-to-registry@v2
189 image: ${{ steps.build_image.outputs.image }}
190 tags: ${{ steps.build_image.outputs.tags }}
191 registry: ${{ env.IMAGE_REGISTRY }}
192 username: ${{ env.REGISTRY_USER }}
193 password: ${{ env.REGISTRY_PASSWORD }}
197 echo "${{ toJSON(steps.push.outputs) }}"
199 build-container-native:
201 runs-on: ubuntu-latest
207 - uses: actions/checkout@v3
208 - name: Download signal-cli build from CI workflow
209 uses: actions/download-artifact@v3
211 - name: Get signal-cli version
214 ver="${GITHUB_REF_NAME#v}"
215 echo "version=${ver}" >> $GITHUB_OUTPUT
217 - name: Move archive file
219 mkdir -p build/native/nativeCompile/
220 chmod +x ./signal-cli-native/signal-cli
221 mv ./signal-cli-native/signal-cli build/native/nativeCompile/
225 uses: redhat-actions/buildah-build@v2
227 image: ${{ env.IMAGE_NAME }}
228 tags: latest-native ${{ github.sha }}-native ${{ steps.cli_ver.outputs.version }}-native
230 ./native.Containerfile
234 uses: redhat-actions/push-to-registry@v2
237 image: ${{ steps.build_image.outputs.image }}
238 tags: ${{ steps.build_image.outputs.tags }}
239 registry: ${{ env.IMAGE_REGISTRY }}
240 username: ${{ env.REGISTRY_USER }}
241 password: ${{ env.REGISTRY_PASSWORD }}
245 echo "${{ toJSON(steps.push.outputs) }}"