diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d2c53bbe35..4eef14cf66 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -52,15 +52,19 @@ jobs: - os: ubuntu-20.04 cache_path: ~/.cabal/store asset_name: simplex-chat-ubuntu-20_04-x86-64 + desktop_asset_name: simplex-desktop-ubuntu-20_04-x86_64.deb - os: ubuntu-22.04 cache_path: ~/.cabal/store asset_name: simplex-chat-ubuntu-22_04-x86-64 + desktop_asset_name: simplex-desktop-ubuntu-22_04-x86_64.deb - os: macos-latest cache_path: ~/.cabal/store asset_name: simplex-chat-macos-x86-64 + desktop_asset_name: simplex-desktop-macos-x86_64.dmg - os: windows-latest cache_path: C:/cabal asset_name: simplex-chat-windows-x86-64 + desktop_asset_name: simplex-desktop-windows-x86_64.msi steps: - name: Configure pagefile (Windows) if: matrix.os == 'windows-latest' @@ -99,6 +103,10 @@ jobs: echo " extra-lib-dirs: /usr/local/opt/openssl@1.1/lib" >> cabal.project.local echo " flags: +openssl" >> cabal.project.local + - name: Install AppImage dependencies + if: startsWith(github.ref, 'refs/tags/v') && matrix.os == 'ubuntu-22.04' + run: sudo apt install -y desktop-file-utils + - name: Install pkg-config for Mac if: matrix.os == 'macos-latest' run: brew install pkg-config @@ -111,23 +119,86 @@ jobs: echo "package direct-sqlcipher" >> cabal.project.local echo " flags: +openssl" >> cabal.project.local - - name: Unix build - id: unix_build + - name: Unix build CLI + id: unix_cli_build if: matrix.os != 'windows-latest' shell: bash run: | cabal build --enable-tests echo "::set-output name=bin_path::$(cabal list-bin simplex-chat)" - - name: Unix upload binary to release + - name: Unix upload CLI binary to release if: startsWith(github.ref, 'refs/tags/v') && matrix.os != 'windows-latest' uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: ${{ steps.unix_build.outputs.bin_path }} + file: ${{ steps.unix_cli_build.outputs.bin_path }} asset_name: ${{ matrix.asset_name }} tag: ${{ github.ref }} + - name: Setup Java + if: startsWith(github.ref, 'refs/tags/v') + uses: actions/setup-java@v3 + with: + distribution: 'corretto' + java-version: '17' + cache: 'gradle' + + - name: Linux build desktop + id: linux_desktop_build + if: startsWith(github.ref, 'refs/tags/v') && (matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-22.04') + shell: bash + run: | + scripts/desktop/build-lib-linux.sh + cd apps/multiplatform + ./gradlew packageDeb + echo "::set-output name=package_path::$(echo $PWD/release/main/deb/simplex_*_amd64.deb)" + + - name: Linux make AppImage + id: linux_appimage_build + if: startsWith(github.ref, 'refs/tags/v') && matrix.os == 'ubuntu-22.04' + shell: bash + run: | + scripts/desktop/make-appimage-linux.sh + echo "::set-output name=appimage_path::$(echo $PWD/apps/multiplatform/release/main/*imple*.AppImage)" + + - name: Mac build desktop + id: mac_desktop_build + if: startsWith(github.ref, 'refs/tags/v') && matrix.os == 'macos-latest' + shell: bash + run: | + scripts/desktop/build-lib-mac.sh + cd apps/multiplatform + ./gradlew packageDmg + echo "::set-output name=package_path::$(echo $PWD/release/main/dmg/simplex-*.dmg)" + + - name: Linux upload desktop package to release + if: startsWith(github.ref, 'refs/tags/v') && (matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-22.04') + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ steps.linux_desktop_build.outputs.package_path }} + asset_name: ${{ matrix.desktop_asset_name }} + tag: ${{ github.ref }} + + - name: Linux upload AppImage to release + if: startsWith(github.ref, 'refs/tags/v') && matrix.os == 'ubuntu-22.04' + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ steps.linux_appimage_build.outputs.appimage_path }} + asset_name: simplex-desktop-x86_64.AppImage + tag: ${{ github.ref }} + + - name: Mac upload desktop package to release + if: startsWith(github.ref, 'refs/tags/v') && matrix.os == 'macos-latest' + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ steps.mac_desktop_build.outputs.package_path }} + asset_name: ${{ matrix.desktop_asset_name }} + tag: ${{ github.ref }} + - name: Unix test if: matrix.os != 'windows-latest' timeout-minutes: 30