diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 23e19225..ff73584b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,14 +1,6 @@ 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) +on: [ push, pull_request ] jobs: build: @@ -16,81 +8,20 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - java: [ '21', '24' ] + java: [ '17' ] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v1 - name: Set up JDK - uses: actions/setup-java@v3 + uses: actions/setup-java@v1 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} + run: ./gradlew build - name: Compress archive run: gzip -n -9 build/distributions/signal-cli-*.tar - name: Archive production artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v2 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 diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index f778268a..0ef62f7e 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -9,10 +9,6 @@ on: schedule: - cron: '0 7 * * 4' -permissions: - contents: read # to fetch code (actions/checkout) - security-events: write - jobs: analyse: name: Analyse @@ -21,13 +17,12 @@ jobs: steps: - name: Setup Java JDK - uses: actions/setup-java@v3 + uses: actions/setup-java@v1 with: - distribution: 'zulu' - java-version: 21 + java-version: 17 - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v2 with: # We must fetch at least the immediate parents so that if this is # a pull request then we can checkout the head. @@ -35,7 +30,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v1 # Override language selection by uncommenting this and choosing your languages # with: # languages: go, javascript, csharp, python, cpp, java @@ -43,7 +38,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v3 + uses: github/codeql-action/autobuild@v1 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -57,4 +52,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index b7ce03f1..00000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,257 +0,0 @@ -name: release - -on: - push: - tags: - - v* - -permissions: - contents: write # to fetch code (actions/checkout) and create release - -env: - IMAGE_NAME: signal-cli - IMAGE_REGISTRY: ghcr.io/asamk - REGISTRY_USER: ${{ github.actor }} - REGISTRY_PASSWORD: ${{ github.token }} - -jobs: - - ci_wf: - permissions: - contents: write - uses: AsamK/signal-cli/.github/workflows/ci.yml@master - # ${{ github.repository }} not accepted here - - lib_to_jar: - needs: ci_wf - runs-on: ubuntu-latest - permissions: - contents: write - - outputs: - signal_cli_version: ${{ steps.cli_ver.outputs.version }} - release_id: ${{ steps.create_release.outputs.id }} - - steps: - - - name: Download signal-cli build from CI workflow - uses: actions/download-artifact@v4 - - - name: Get signal-cli version - id: cli_ver - run: | - ver="${GITHUB_REF_NAME#v}" - echo "version=${ver}" >> $GITHUB_OUTPUT - - - name: Extract archive - run: | - tree . - ARCHIVE_DIR=$(ls signal-cli-archive-*/ -d | tail -n1) - tar -xzf ./"${ARCHIVE_DIR}"/*.tar.gz - mv ./"${ARCHIVE_DIR}"/*.tar.gz signal-cli-${{ steps.cli_ver.outputs.version }}.tar.gz - rm -rf signal-cli-archive-*/ - -# - name: Get signal-client jar version -# id: lib_ver -# run: | -# JAR_PREFIX=libsignal-client- -# jar_file=$(find ./signal-cli-*/lib/ -name "$JAR_PREFIX*.jar") -# jar_version=$(echo "$jar_file" | xargs basename | sed "s/$JAR_PREFIX//; s/.jar//") -# echo "$jar_version" -# echo "signal_client_version=${jar_version}" >> $GITHUB_OUTPUT -# -# - name: Download signal-client builds -# env: -# RELEASES_URL: https://github.com/signalapp/libsignal/releases/download/ -# FILE_NAMES: signal_jni.dll libsignal_jni.dylib -# SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }} -# run: | -# for file_name in $FILE_NAMES; do -# curl -sOL "${RELEASES_URL}/v${SIGNAL_CLIENT_VER}/${file_name}" # note: added v -# done -# tree . - - - name: Compress native app - 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/ - -# - name: Replace Windows lib -# env: -# SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.version }} -# SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }} -# run: | -# mv signal_jni.dll libsignal_jni.so -# zip -u ./signal-cli-*/lib/libsignal-client-${SIGNAL_CLIENT_VER}.jar ./libsignal_jni.so -# tar -czf signal-cli-${SIGNAL_CLI_VER}-Windows.tar.gz signal-cli-*/ -# -# - name: Replace macOS lib -# env: -# SIGNAL_CLI_VER: ${{ steps.cli_ver.outputs.version }} -# SIGNAL_CLIENT_VER: ${{ steps.lib_ver.outputs.signal_client_version }} -# run: | -# jar_file=./signal-cli-*/lib/libsignal-client-${SIGNAL_CLIENT_VER}.jar -# zip -d $jar_file libsignal_jni.so -# zip $jar_file libsignal_jni.dylib -# tar -czf signal-cli-${SIGNAL_CLI_VER}-macOS.tar.gz signal-cli-*/ - - - name: Create release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: v${{ steps.cli_ver.outputs.version }} # note: added `v` - release_name: v${{ steps.cli_ver.outputs.version }} # note: added `v` - draft: true - - - name: Upload archive - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}.tar.gz - asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}.tar.gz - asset_content_type: application/x-compressed-tar # .tar.gz - -# - name: Upload Linux archive -# uses: actions/upload-release-asset@v1 -# env: -# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# with: -# upload_url: ${{ steps.create_release.outputs.upload_url }} -# asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux.tar.gz -# asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux.tar.gz -# asset_content_type: application/x-compressed-tar # .tar.gz - - - name: Upload Linux native archive - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux-native.tar.gz - asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-Linux-native.tar.gz - asset_content_type: application/x-compressed-tar # .tar.gz - -# - name: Upload windows archive -# uses: actions/upload-release-asset@v1 -# env: -# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# with: -# upload_url: ${{ steps.create_release.outputs.upload_url }} -# asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-Windows.tar.gz -# asset_name: signal-cli-${{ steps.cli_ver.outputs.version }}-Windows.tar.gz -# asset_content_type: application/x-compressed-tar # .tar.gz -# -# - name: Upload macos archive -# uses: actions/upload-release-asset@v1 -# env: -# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# with: -# upload_url: ${{ steps.create_release.outputs.upload_url }} -# asset_path: signal-cli-${{ steps.cli_ver.outputs.version }}-macOS.tar.gz -# 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 - - steps: - - uses: actions/checkout@v4 - - name: Download signal-cli build from CI workflow - uses: actions/download-artifact@v4 - - - name: Get signal-cli version - id: cli_ver - run: | - ver="${GITHUB_REF_NAME#v}" - echo "version=${ver}" >> $GITHUB_OUTPUT - - - 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-"${GITHUB_REF_NAME#v}"/ 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 }} - - - name: Echo outputs - run: | - echo "${{ toJSON(steps.push.outputs) }}" - - build-container-native: - needs: ci_wf - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - - steps: - - uses: actions/checkout@v4 - - name: Download signal-cli build from CI workflow - uses: actions/download-artifact@v4 - - - name: Get signal-cli version - id: cli_ver - run: | - ver="${GITHUB_REF_NAME#v}" - echo "version=${ver}" >> $GITHUB_OUTPUT - - - name: Move archive file - run: | - 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: - 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: Echo outputs - run: | - echo "${{ toJSON(steps.push.outputs) }}" diff --git a/.gitignore b/.gitignore index 2b6774c1..e41d1e40 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,3 @@ local.properties out/ .DS_Store /bin/ -/test-config/ diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index aa627792..9cbd20b7 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -4,9 +4,8 @@