name: release on: push: tags: - v* permissions: contents: write # to fetch code (actions/checkout) and create release env: IMAGE_NAME: signal-cli IMAGE_REGISTRY: ghcr.io/asamk REGISTRY_USER: ${{ github.actor }} REGISTRY_PASSWORD: ${{ github.token }} jobs: ci_wf: permissions: contents: write uses: AsamK/signal-cli/.github/workflows/ci.yml@master # ${{ github.repository }} not accepted here lib_to_jar: needs: ci_wf runs-on: ubuntu-latest permissions: contents: write outputs: signal_cli_version: ${{ steps.cli_ver.outputs.version }} release_id: ${{ steps.create_release.outputs.id }} steps: - name: Download signal-cli build from CI workflow uses: actions/download-artifact@v4 - name: Get signal-cli version id: cli_ver run: | ver="${GITHUB_REF_NAME#v}" echo "version=${ver}" >> $GITHUB_OUTPUT - name: Extract archive run: | tree . ARCHIVE_DIR=$(ls signal-cli-archive-*/ -d | tail -n1) tar -xzf ./"${ARCHIVE_DIR}"/*.tar.gz mv ./"${ARCHIVE_DIR}"/*.tar.gz signal-cli-${{ steps.cli_ver.outputs.version }}.tar.gz rm -rf signal-cli-archive-*/ # - name: Get signal-client jar version # id: lib_ver # run: | # JAR_PREFIX=libsignal-client- # jar_file=$(find ./signal-cli-*/lib/ -name "$JAR_PREFIX*.jar") # jar_version=$(echo "$jar_file" | xargs basename | sed "s/$JAR_PREFIX//; s/.jar//") # echo "$jar_version" # echo "signal_client_version=${jar_version}" >> $GITHUB_OUTPUT # # - name: Download signal-client builds # env: # RELEASES_URL: https://github.com/signalapp/libsignal/releases/download/ # FILE_NAMES: signal_jni.dll libsignal_jni.dylib # SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }} # run: | # for file_name in $FILE_NAMES; do # curl -sOL "${RELEASES_URL}/v${SIGNAL_CLIENT_VER}/${file_name}" # note: added v # done # tree . - name: Compress native app env: SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.version }} run: | chmod +x signal-cli-native/signal-cli tar -czf signal-cli-${SIGNAL_CLI_VER}-Linux-native.tar.gz -C signal-cli-native signal-cli rm -rf signal-cli-native/ # - name: Replace Windows lib # env: # SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.version }} # SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }} # run: | # mv signal_jni.dll libsignal_jni.so # zip -u ./signal-cli-*/lib/libsignal-client-${SIGNAL_CLIENT_VER}.jar ./libsignal_jni.so # tar -czf signal-cli-${SIGNAL_CLI_VER}-Windows.tar.gz signal-cli-*/ # # - name: Replace macOS lib # env: # SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.version }} # SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }} # run: | # jar_file=./signal-cli-*/lib/libsignal-client-${SIGNAL_CLIENT_VER}.jar # zip -d $jar_file libsignal_jni.so # zip $jar_file libsignal_jni.dylib # tar -czf signal-cli-${SIGNAL_CLI_VER}-macOS.tar.gz signal-cli-*/ - name: Create release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: v${{ steps.cli_ver.outputs.version }} # note: added `v` release_name: v${{ steps.cli_ver.outputs.version }} # note: added `v` draft: true - name: Upload archive uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}.tar.gz asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}.tar.gz asset_content_type: application/x-compressed-tar # .tar.gz # - name: Upload Linux archive # uses: actions/upload-release-asset@v1 # env: # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # with: # upload_url: ${{ steps.create_release.outputs.upload_url }} # asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux.tar.gz # asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux.tar.gz # asset_content_type: application/x-compressed-tar # .tar.gz - name: Upload Linux native archive uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux-native.tar.gz asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux-native.tar.gz asset_content_type: application/x-compressed-tar # .tar.gz # - name: Upload windows archive # uses: actions/upload-release-asset@v1 # env: # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # with: # upload_url: ${{ steps.create_release.outputs.upload_url }} # asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-Windows.tar.gz # asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-Windows.tar.gz # asset_content_type: application/x-compressed-tar # .tar.gz # # - name: Upload macos archive # uses: actions/upload-release-asset@v1 # env: # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # with: # upload_url: ${{ steps.create_release.outputs.upload_url }} # asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-macOS.tar.gz # asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-macOS.tar.gz # asset_content_type: application/x-compressed-tar # .tar.gz build-container: needs: ci_wf runs-on: ubuntu-latest permissions: contents: read packages: write steps: - uses: actions/checkout@v4 - name: Download signal-cli build from CI workflow uses: actions/download-artifact@v4 - name: Get signal-cli version id: cli_ver run: | ver="${GITHUB_REF_NAME#v}" echo "version=${ver}" >> $GITHUB_OUTPUT - name: Move archive file run: | ARCHIVE_DIR=$(ls signal-cli-archive-*/ -d | tail -n1) tar xf ./"${ARCHIVE_DIR}"/*.tar.gz rm -r signal-cli-archive-* signal-cli-native mkdir -p build/install/ mv ./signal-cli-"${GITHUB_REF_NAME#v}"/ build/install/signal-cli - name: Build Image id: build_image uses: redhat-actions/buildah-build@v2 with: image: ${{ env.IMAGE_NAME }} tags: latest ${{ github.sha }} ${{ steps.cli_ver.outputs.version }} containerfiles: ./Containerfile oci: true - name: Push To GHCR uses: redhat-actions/push-to-registry@v2 id: push with: image: ${{ steps.build_image.outputs.image }} tags: ${{ steps.build_image.outputs.tags }} registry: ${{ env.IMAGE_REGISTRY }} username: ${{ env.REGISTRY_USER }} password: ${{ env.REGISTRY_PASSWORD }} - name: Echo outputs run: | echo "${{ toJSON(steps.push.outputs) }}" build-container-native: needs: ci_wf runs-on: ubuntu-latest permissions: contents: read packages: write steps: - uses: actions/checkout@v4 - name: Download signal-cli build from CI workflow uses: actions/download-artifact@v4 - name: Get signal-cli version id: cli_ver run: | ver="${GITHUB_REF_NAME#v}" echo "version=${ver}" >> $GITHUB_OUTPUT - name: Move archive file run: | mkdir -p build/native/nativeCompile/ chmod +x ./signal-cli-native/signal-cli mv ./signal-cli-native/signal-cli build/native/nativeCompile/ - name: Build Image id: build_image uses: redhat-actions/buildah-build@v2 with: image: ${{ env.IMAGE_NAME }} tags: latest-native ${{ github.sha }}-native ${{ steps.cli_ver.outputs.version }}-native containerfiles: ./native.Containerfile oci: true - name: Push To GHCR uses: redhat-actions/push-to-registry@v2 id: push with: image: ${{ steps.build_image.outputs.image }} tags: ${{ steps.build_image.outputs.tags }} registry: ${{ env.IMAGE_REGISTRY }} username: ${{ env.REGISTRY_USER }} password: ${{ env.REGISTRY_PASSWORD }} - name: Echo outputs run: | echo "${{ toJSON(steps.push.outputs) }}"