]> nmode's Git Repositories - signal-cli/blobdiff - .github/workflows/release.yml
Update java version in ci workflow
[signal-cli] / .github / workflows / release.yml
index 20a894e00e93f2894f23b25564cd6da121ca12a8..84f629b290bf6eefc58f1a868171d58545f87625 100644 (file)
@@ -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 }}
@@ -62,6 +73,7 @@ jobs:
         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/
 
@@ -134,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) }}"