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:
lib_to_jar:
needs: ci_wf
runs-on: ubuntu-latest
+ permissions:
+ contents: write
outputs:
signal_cli_version: ${{ steps.cli_ver.outputs.version }}
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/
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) }}"