]> nmode's Git Repositories - signal-cli/blob - .github/workflows/repackage-native-libs.yml
8ebba79eaad9c4768cb227f0d8f1958f7bfcc72b
[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 accpeted 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 */ -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: Replace Windows lib
61 env:
62 SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.signal_cli_version }}
63 SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }}
64 run: |
65 mv signal_jni.dll libsignal_jni.so
66 zip -u ./signal-cli-${SIGNAL_CLI_VER}/lib/libsignal-client-${SIGNAL_CLIENT_VER}.jar ./libsignal_jni.so
67 tar -czf signal-cli-${SIGNAL_CLI_VER}-Windows.tar.gz signal-cli-${SIGNAL_CLI_VER}/
68
69 - name: Replace macOS lib
70 env:
71 SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.signal_cli_version }}
72 SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }}
73 run: |
74 jar_file=./signal-cli-${SIGNAL_CLI_VER}/lib/libsignal-client-${SIGNAL_CLIENT_VER}.jar
75 zip -d "$jar_file" libsignal_jni.so
76 zip "$jar_file" libsignal_jni.dylib
77 tar -czf signal-cli-${SIGNAL_CLI_VER}-macOS.tar.gz signal-cli-${SIGNAL_CLI_VER}/
78
79 - name: Create release
80 id: create_release
81 uses: actions/create-release@v1
82 env:
83 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
84 with:
85 tag_name: v${{ steps.cli_ver.outputs.signal_cli_version }} # note: added `v`
86 release_name: v${{ steps.cli_ver.outputs.signal_cli_version }} # note: added `v`
87 draft: true
88
89 - name: Upload Linux archive
90 uses: actions/upload-release-asset@v1
91 env:
92 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
93 with:
94 upload_url: ${{ steps.create_release.outputs.upload_url }}
95 asset_path: signal-cli-${{ steps.cli_ver.outputs.signal_cli_version }}.tar.gz
96 asset_name: signal-cli-${{ steps.cli_ver.outputs.signal_cli_version }}-Linux.tar.gz
97 asset_content_type: application/x-compressed-tar # .tar.gz
98
99 - name: Upload windows archive
100 uses: actions/upload-release-asset@v1
101 env:
102 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
103 with:
104 upload_url: ${{ steps.create_release.outputs.upload_url }}
105 asset_path: signal-cli-${{ steps.cli_ver.outputs.signal_cli_version }}-Windows.tar.gz
106 asset_name: signal-cli-${{ steps.cli_ver.outputs.signal_cli_version }}-Windows.tar.gz
107 asset_content_type: application/x-compressed-tar # .tar.gz
108
109 - name: Upload macos archive
110 uses: actions/upload-release-asset@v1
111 env:
112 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
113 with:
114 upload_url: ${{ steps.create_release.outputs.upload_url }}
115 asset_path: signal-cli-${{ steps.cli_ver.outputs.signal_cli_version }}-macOS.tar.gz
116 asset_name: signal-cli-${{ steps.cli_ver.outputs.signal_cli_version }}-macOS.tar.gz
117 asset_content_type: application/x-compressed-tar # .tar.gz
118
119
120 run_repackaged:
121
122 needs:
123 - lib_to_jar
124
125 strategy:
126 matrix:
127 runner:
128 - windows-latest
129 - macos-latest
130
131 runs-on: ${{ matrix.runner }}
132
133 defaults:
134 run:
135 shell: bash # Explicit for windows
136
137 env:
138 JAVA_VERSION: 18
139
140 steps:
141
142 - name: Download the release file
143 env:
144 SIGNAL_CLI_VER: ${{ needs.lib_to_jar.outputs.signal_cli_version }}
145 RELEASE_ID: ${{ needs.lib_to_jar.outputs.release_id }}
146 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
147 run: |
148 file_name=signal-cli-${SIGNAL_CLI_VER}-${RUNNER_OS}.tar.gz
149 echo "$file_name"
150 assets_json=$(curl -s \
151 -H "Authorization: Bearer $GITHUB_TOKEN" \
152 "${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}/assets")
153 asset_dl_url=$(echo "$assets_json" | jq -r ".[] | select (.name == \"$file_name\") | .url")
154 echo "$asset_dl_url"
155 curl -sLOJ \
156 -H 'Accept: application/octet-stream' \
157 -H "Authorization: Bearer $GITHUB_TOKEN" \
158 "$asset_dl_url"
159 tar -xzf "$file_name"
160
161 - name: Set up JDK for running signal-cli executable
162 uses: actions/setup-java@v3
163 with:
164 distribution: 'adopt'
165 java-version: ${{ env.JAVA_VERSION }}
166
167 - name: Run signal-cli
168 run: |
169 cd signal-cli-*/bin
170 if [[ "$RUNNER_OS" == 'Windows' ]]; then
171 EXECUTABLE_SUFFIX=".bat"
172 fi
173 ./signal-cli${EXECUTABLE_SUFFIX} listAccounts