X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/00535c9a42d44ed0e95062f2e2bffcbabeb03e6e..0bdc400a309b4f95dd591676884763ab012348c8:/.github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f76e686c..84f629b2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,6 +5,15 @@ on: tags: - v* +permissions: + contents: read # to fetch code (actions/checkout) + +env: + IMAGE_NAME: signal-cli + IMAGE_REGISTRY: ghcr.io/asamk + REGISTRY_USER: ${{ github.actor }} + REGISTRY_PASSWORD: ${{ github.token }} + jobs: ci_wf: @@ -14,6 +23,8 @@ jobs: lib_to_jar: needs: ci_wf runs-on: ubuntu-latest + permissions: + contents: write outputs: signal_cli_version: ${{ steps.cli_ver.outputs.version }} @@ -135,59 +146,100 @@ jobs: 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 - run_repackaged: - - needs: - - lib_to_jar + steps: + - uses: actions/checkout@v3 + - name: Download signal-cli build from CI workflow + uses: actions/download-artifact@v3 - strategy: - matrix: - runner: - - windows-latest - - macos-latest + - name: Get signal-cli version + id: cli_ver + run: | + ver="${GITHUB_REF_NAME#v}" + echo "version=${ver}" >> $GITHUB_OUTPUT - runs-on: ${{ matrix.runner }} + - 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-*/ 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 }} - defaults: - run: - shell: bash # Explicit for windows + - name: Echo outputs + run: | + echo "${{ toJSON(steps.push.outputs) }}" - env: - JAVA_VERSION: 19 + build-container-native: + needs: ci_wf + runs-on: ubuntu-latest + permissions: + contents: read + packages: write steps: + - uses: actions/checkout@v3 + - name: Download signal-cli build from CI workflow + uses: actions/download-artifact@v3 - - name: Download the release file - env: - SIGNAL_CLI_VER: ${{ needs.lib_to_jar.outputs.signal_cli_version }} - RELEASE_ID: ${{ needs.lib_to_jar.outputs.release_id }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Get signal-cli version + id: cli_ver + run: | + ver="${GITHUB_REF_NAME#v}" + echo "version=${ver}" >> $GITHUB_OUTPUT + + - name: Move archive file run: | - file_name=signal-cli-${SIGNAL_CLI_VER}-${RUNNER_OS}.tar.gz - echo "$file_name" - assets_json=$(curl -s \ - -H "Authorization: Bearer $GITHUB_TOKEN" \ - "${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}/assets") - asset_dl_url=$(echo "$assets_json" | jq -r ".[] | select (.name == \"$file_name\") | .url") - echo "$asset_dl_url" - curl -sLOJ \ - -H 'Accept: application/octet-stream' \ - -H "Authorization: Bearer $GITHUB_TOKEN" \ - "$asset_dl_url" - tar -xzf "$file_name" - - - name: Set up JDK for running signal-cli executable - uses: actions/setup-java@v3 + 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: - distribution: 'adopt' - java-version: ${{ env.JAVA_VERSION }} - java-package: 'jre' + 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: Run signal-cli + - name: Echo outputs run: | - cd signal-cli-*/bin - if [[ "$RUNNER_OS" == 'Windows' ]]; then - EXECUTABLE_SUFFIX=".bat" - fi - ./signal-cli${EXECUTABLE_SUFFIX} listAccounts + echo "${{ toJSON(steps.push.outputs) }}"