name: signal-cli CI
-on: [push, pull_request]
+on:
+ push:
+ branches:
+ - '**'
+ pull_request:
+ workflow_call:
+
+permissions:
+ contents: write # to fetch code (actions/checkout) and submit dependency graph (gradle/gradle-build-action)
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
- java: [ '11', '16' ]
+ java: [ '21', '24' ]
+
+ steps:
+ - uses: actions/checkout@v4
+ - name: Set up JDK
+ uses: actions/setup-java@v3
+ with:
+ distribution: 'zulu'
+ java-version: ${{ matrix.java }}
+ - name: Setup Gradle
+ uses: gradle/actions/setup-gradle@v4
+ with:
+ dependency-graph: generate-and-submit
+ - name: Install asciidoc
+ run: sudo apt update && sudo apt --no-install-recommends install -y asciidoc-base
+ - name: Build with Gradle
+ run: ./gradlew --no-daemon build
+ - name: Build man page
+ run: |
+ cd man
+ make install
+ - name: Add man page to archive
+ run: |
+ version=$(tar tf build/distributions/signal-cli-*.tar | head -n1 | sed 's|signal-cli-\([^/]*\)/.*|\1|')
+ echo $version
+ tar --transform="flags=r;s|man|signal-cli-${version}/man|" -rf build/distributions/signal-cli-${version}.tar man/man{1,5}
+ - name: Compress archive
+ run: gzip -n -9 build/distributions/signal-cli-*.tar
+ - name: Archive production artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: signal-cli-archive-${{ matrix.java }}
+ path: build/distributions/signal-cli-*.tar.gz
+
+ build-graalvm:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+ - uses: graalvm/setup-graalvm@v1
+ with:
+ version: 'latest'
+ java-version: '21'
+ cache: 'gradle'
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ - name: Build with Gradle
+ run: ./gradlew --no-daemon nativeCompile
+ - name: Archive production artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: signal-cli-native
+ path: build/native/nativeCompile/signal-cli
+ build-client:
+ strategy:
+ matrix:
+ os:
+ - ubuntu
+ - macos
+ - windows
+ runs-on: ${{ matrix.os }}-latest
+ defaults:
+ run:
+ working-directory: ./client
steps:
- - uses: actions/checkout@v1
- - name: Set up JDK
- uses: actions/setup-java@v1
- with:
- java-version: ${{ matrix.java }}
- - name: Build with Gradle
- run: ./gradlew build
- - name: Compress archive
- run: gzip -n -9 build/distributions/signal-cli-*.tar
- - name: Archive production artifacts
- uses: actions/upload-artifact@v2
- with:
- name: signal-cli-archive-${{ matrix.java }}
- path: build/distributions/signal-cli-*.tar.gz
+ - uses: actions/checkout@v4
+ - name: Install rust
+ run: rustup default stable
+ - name: Build client
+ run: cargo build --release --verbose
+ - name: Archive production artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: signal-cli-client-${{ matrix.os }}
+ path: |
+ client/target/release/signal-cli-client
+ client/target/release/signal-cli-client.exe