From 2cbd74c716190cf1bf5f4e05816774efabbd66ed Mon Sep 17 00:00:00 2001 From: ramanverma2k Date: Thu, 27 Oct 2022 20:05:37 +0530 Subject: [PATCH 1/4] feat: create deb package for linux --- .github/workflows/release.yml | 48 +++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d7e22b4b46..c15c65fe75 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,6 +37,7 @@ jobs: env: LINUX_APP_RELEASE_PATH: frontend/app_flowy/product/${{ github.ref_name }}/linux/Release LINUX_ZIP_NAME: AppFlowy-linux-x86.tar.gz + LINUX_PACKAGE_NAME: AppFlowy-linux-x86_${{ github.ref_name }}.deb steps: - name: Checkout uses: actions/checkout@v2 @@ -70,6 +71,42 @@ jobs: flutter config --enable-linux-desktop cargo make --env APP_VERSION=${{ github.ref_name }} --profile production-linux-x86_64 appflowy + - name: Build Linux package + working-directory: ${{ env.LINUX_APP_RELEASE_PATH }} + run: | + mkdir -p package/opt && mv AppFlowy package/opt/ + cd package && mkdir DEBIAN + printf 'Package: AppFlowy + Version: %s + Architecture: all + Essential: no + Priority: optional + Maintainer: AppFlowy + Description: An Open Source Alternative to Notion\n + ' "${{ github.ref_name }}" > DEBIAN/control + printf '#!/bin/bash + + set -e + + # Create a link in /usr/bin for quick access using terminal + ln -s /opt/AppFlowy/app_flowy /usr/bin/appflowy + + # Update icon & executable path in desktop entry + grep -rl "\[CHANGE_THIS\]" /opt/AppFlowy/appflowy.desktop.temp | xargs sed -i "s/\[CHANGE_THIS\]/\/opt/" + + # Add shortcut in applications drawer + mv /opt/AppFlowy/appflowy.desktop.temp /usr/share/applications/appflowy.desktop' > DEBIAN/postinst + printf '#!/bin/bash + + set -e + + # Remove symbolic link from /usr/bin + rm /usr/bin/appflowy + + # Remove Desktop entry + rm /usr/share/applications/appflowy.desktop' > DEBIAN/postrm + cd ${{ env.LINUX_APP_RELEASE_PATH }} && dpkg-deb --build package ${{ env.LINUX_PACKAGE_NAME }} + - name: Upload Release Asset id: upload-release-asset uses: actions/upload-release-asset@v1 @@ -81,6 +118,17 @@ jobs: asset_name: ${{ env.LINUX_ZIP_NAME }} asset_content_type: application/octet-stream + - name: Upload Release Asset Install Package + id: upload-release-asset-install-package + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.create-release.outputs.upload_url }} + asset_path: ${{ env.LINUX_APP_RELEASE_PATH }}/${{ env.LINUX_PACKAGE_NAME }} + asset_name: ${{ env.LINUX_PACKAGE_NAME }} + asset_content_type: application/octet-stream + build-macos-x86_64: runs-on: macos-latest needs: create-release From 380d921daef7bd0a7ea5ecd79f3cfe0c226dd365 Mon Sep 17 00:00:00 2001 From: ramanverma2k Date: Sun, 30 Oct 2022 09:33:06 +0530 Subject: [PATCH 2/4] ci: respect debian package naming convention. --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c15c65fe75..cec44e221b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,7 +37,7 @@ jobs: env: LINUX_APP_RELEASE_PATH: frontend/app_flowy/product/${{ github.ref_name }}/linux/Release LINUX_ZIP_NAME: AppFlowy-linux-x86.tar.gz - LINUX_PACKAGE_NAME: AppFlowy-linux-x86_${{ github.ref_name }}.deb + LINUX_PACKAGE_NAME: AppFlowy_${{ github.ref_name }}_linux-amd64.deb steps: - name: Checkout uses: actions/checkout@v2 From 46a20123c1b0c6c3343899f040158d33229dd264 Mon Sep 17 00:00:00 2001 From: ramanverma2k Date: Sun, 30 Oct 2022 09:45:52 +0530 Subject: [PATCH 3/4] ci: update linux deb package build workflow --- .github/workflows/release.yml | 41 ++++++++++++----------------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cec44e221b..8dc8326190 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -76,36 +76,23 @@ jobs: run: | mkdir -p package/opt && mv AppFlowy package/opt/ cd package && mkdir DEBIAN + # Create control file printf 'Package: AppFlowy - Version: %s - Architecture: all - Essential: no - Priority: optional - Maintainer: AppFlowy - Description: An Open Source Alternative to Notion\n - ' "${{ github.ref_name }}" > DEBIAN/control - printf '#!/bin/bash + Version: %s + Architecture: amd64 + Essential: no + Priority: optional + Maintainer: AppFlowy + Description: An Open Source Alternative to Notion\n' "${{ github.ref_name }}" > DEBIAN/control - set -e + mkdir -p usr/share/applications + # Update Exec & icon path in desktop entry + grep -rl "\[CHANGE_THIS\]" ./opt/AppFlowy/appflowy.desktop.temp | xargs sed -i "s/\[CHANGE_THIS\]/\/opt/" + # Add desktop entry in package + mv ./opt/AppFlowy/appflowy.desktop.temp ./usr/share/applications/appflowy.desktop - # Create a link in /usr/bin for quick access using terminal - ln -s /opt/AppFlowy/app_flowy /usr/bin/appflowy - - # Update icon & executable path in desktop entry - grep -rl "\[CHANGE_THIS\]" /opt/AppFlowy/appflowy.desktop.temp | xargs sed -i "s/\[CHANGE_THIS\]/\/opt/" - - # Add shortcut in applications drawer - mv /opt/AppFlowy/appflowy.desktop.temp /usr/share/applications/appflowy.desktop' > DEBIAN/postinst - printf '#!/bin/bash - - set -e - - # Remove symbolic link from /usr/bin - rm /usr/bin/appflowy - - # Remove Desktop entry - rm /usr/share/applications/appflowy.desktop' > DEBIAN/postrm - cd ${{ env.LINUX_APP_RELEASE_PATH }} && dpkg-deb --build package ${{ env.LINUX_PACKAGE_NAME }} + # Build + cd ../ && dpkg-deb --build --root-owner-group package ${{ env.LINUX_PACKAGE_NAME }} - name: Upload Release Asset id: upload-release-asset From 319c358d1b14b2f9ca74b95a9b7bed041fdc53d1 Mon Sep 17 00:00:00 2001 From: ramanverma2k Date: Sun, 30 Oct 2022 12:09:20 +0530 Subject: [PATCH 4/4] ci: add postinst & postrm scripts to linux deb package --- .github/workflows/release.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8dc8326190..27ad3c4adc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -85,6 +85,23 @@ jobs: Maintainer: AppFlowy Description: An Open Source Alternative to Notion\n' "${{ github.ref_name }}" > DEBIAN/control + # postinst script for creating symlink + printf '#!/bin/bash + if [ -e /usr/local/bin/appflowy ]; then + echo "Symlink already exists, skipping." + else + echo "Creating Symlink in /usr/local/bin/appflowy" + ln -s /opt/AppFlowy/app_flowy /usr/local/bin/appflowy + fi' > DEBIAN/postinst + chmod 0755 DEBIAN/postinst + + # postrm script for cleaning up residuals + printf '#!/bin/bash + if [ -e /usr/local/bin/appflowy ]; then + rm /usr/local/bin/appflowy + fi' > DEBIAN/postrm + chmod 0755 DEBIAN/postrm + mkdir -p usr/share/applications # Update Exec & icon path in desktop entry grep -rl "\[CHANGE_THIS\]" ./opt/AppFlowy/appflowy.desktop.temp | xargs sed -i "s/\[CHANGE_THIS\]/\/opt/"