name: signal-cli CI 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: [ '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@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