diff --git a/.github/workflows/electron-master.yml b/.github/workflows/electron-master.yml index 80209b5b80..6777204708 100644 --- a/.github/workflows/electron-master.yml +++ b/.github/workflows/electron-master.yml @@ -38,7 +38,12 @@ jobs: python3 -m venv .venv source .venv/bin/activate python3 -m pip install setuptools + - name: Process release version + id: process_version + run: | + echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT" - if: ${{ startsWith(matrix.os, 'ubuntu') }} + name: Setup Flatpak dependencies run: | sudo apt-get update sudo apt-get install flatpak -y @@ -47,6 +52,14 @@ jobs: sudo flatpak install org.freedesktop.Sdk//24.08 -y sudo flatpak install org.freedesktop.Platform//24.08 -y sudo flatpak install org.electronjs.Electron2.BaseApp//24.08 -y + + METAINFO_FILE="packages/desktop-electron/extra-resources/linux/com.actualbudget.actual.metainfo.xml" + TODAY=$(date +%Y-%m-%d) + VERSION=${{ steps.process_version.outputs.version }} + sed -i "s/%RELEASE_VERSION%/$VERSION/g; s/%RELEASE_DATE%/$TODAY/g" "$METAINFO_FILE" + sudo apt-get install appstream + appstreamcli --version + appstreamcli validate "$METAINFO_FILE" - name: Set up environment uses: ./.github/actions/setup - name: Build Electron for Mac @@ -78,10 +91,6 @@ jobs: name: actual-electron-${{ matrix.os }}-appx path: | packages/desktop-electron/dist/*.appx - - name: Process release version - id: process_version - run: | - echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT" - name: Add to new release uses: softprops/action-gh-release@5be0e66d93ac7ed76da52eca8bb058f665c3a5fe # v2.4.2 with: @@ -101,6 +110,18 @@ jobs: !packages/desktop-electron/dist/Actual-windows.exe packages/desktop-electron/dist/*.AppImage packages/desktop-electron/dist/*.flatpak + - name: Retrieve AppImage SHA256 for Flathub + id: appimage_sha256 + run: | + APPIMAGE_X64_SHA256=$(sha256sum packages/desktop-electron/dist/Actual-linux-x86_64.AppImage | awk '{ print $1 }') + APPIMAGE_ARM64_SHA256=$(sha256sum packages/desktop-electron/dist/Actual-linux-arm64.AppImage | awk '{ print $1 }') + echo "appimage_x64_sha256=$APPIMAGE_X64_SHA256" >> "$GITHUB_OUTPUT" + echo "appimage_arm64_sha256=$APPIMAGE_ARM64_SHA256" >> "$GITHUB_OUTPUT" + + outputs: + version: ${{ steps.process_version.outputs.version }} + appimage_x64_sha256: ${{ steps.appimage_sha256.outputs.appimage_x64_sha256 }} + appimage_arm64_sha256: ${{ steps.appimage_sha256.outputs.appimage_arm64_sha256 }} publish-microsoft-store: needs: build @@ -143,3 +164,38 @@ jobs: -NoStatus ` -AutoCommit ` -Force + + publish-flathub: + needs: build + runs-on: ubuntu-22.04 + if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') }} + steps: + - name: Checkout Flathub repo + uses: actions/checkout@v6 + with: + repository: flathub/com.actualbudget.actual + token: ${{ secrets.FLATHUB_GITHUB_TOKEN }} + + - name: Update manifest with new SHA256 + run: | + # Replace x86_64 entry + sed -i "/x86_64.AppImage/{n;s|sha256:.*|sha256: ${{ needs.build.outputs.appimage_x64_sha256 }}|}" com.actualbudget.actual.yml + sed -i "/x86_64.AppImage/s|url:.*|url: https://github.com/actualbudget/actual/releases/download/v${{ needs.build.outputs.version }}/Actual-linux-x86_64.AppImage|" com.actualbudget.actual.yml + + # Replace arm64 entry + sed -i "/arm64.AppImage/{n;s|sha256:.*|sha256: ${{ needs.build.outputs.appimage_arm64_sha256 }}|}" com.actualbudget.actual.yml + sed -i "/arm64.AppImage/s|url:.*|url: https://github.com/actualbudget/actual/releases/download/v${{ needs.build.outputs.version }}/Actual-linux-arm64.AppImage|" com.actualbudget.actual.yml + + cat com.actualbudget.actual.yml + + - name: Create PR in Flathub repo + uses: peter-evans/create-pull-request@v7 + with: + token: ${{ secrets.FLATHUB_GITHUB_TOKEN }} + commit-message: "Update Actual flatpak to version ${{ needs.build.outputs.version }}" + branch: "release/${{ needs.build.outputs.version }}" + title: "Update Actual flatpak to version ${{ needs.build.outputs.version }}" + body: | + This PR updates the Actual desktop flatpak to version ${{ needs.build.outputs.version }}. + + :link: [View release notes](https://actualbudget.org/blog/release-${{ needs.build.outputs.version }}) diff --git a/.github/workflows/electron-pr.yml b/.github/workflows/electron-pr.yml index 50c7cc8062..84a62625a4 100644 --- a/.github/workflows/electron-pr.yml +++ b/.github/workflows/electron-pr.yml @@ -34,6 +34,7 @@ jobs: source .venv/bin/activate python3 -m pip install setuptools - if: ${{ startsWith(matrix.os, 'ubuntu') }} + name: Setup Flatpak dependencies run: | sudo apt-get update sudo apt-get install flatpak -y @@ -42,6 +43,14 @@ jobs: sudo flatpak install org.freedesktop.Sdk//24.08 -y sudo flatpak install org.freedesktop.Platform//24.08 -y sudo flatpak install org.electronjs.Electron2.BaseApp//24.08 -y + + METAINFO_FILE="packages/desktop-electron/extra-resources/linux/com.actualbudget.actual.metainfo.xml" + TODAY=$(date +%Y-%m-%d) + VERSION=$(node ./packages/ci-actions/bin/get-next-package-version.js --package-json ./packages/desktop-electron/package.json --type nightly) + sed -i "s/%RELEASE_VERSION%/$VERSION/g; s/%RELEASE_DATE%/$TODAY/g" "$METAINFO_FILE" + sudo apt-get install appstream + appstreamcli --version + appstreamcli validate "$METAINFO_FILE" - name: Set up environment uses: ./.github/actions/setup - name: Build Electron diff --git a/.github/workflows/publish-nightly-electron.yml b/.github/workflows/publish-nightly-electron.yml index 08a69e5691..9f3af5975b 100644 --- a/.github/workflows/publish-nightly-electron.yml +++ b/.github/workflows/publish-nightly-electron.yml @@ -3,7 +3,7 @@ name: Publish nightly desktop app # Publish nightly version of desktop app - Runs every day at midnight on: schedule: - - cron: '0 0 * * *' + - cron: "0 0 * * *" workflow_dispatch: defaults: @@ -39,6 +39,7 @@ jobs: python3 -m pip install setuptools - if: ${{ startsWith(matrix.os, 'ubuntu') }} + name: Setup Flatpak dependencies run: | sudo apt-get update sudo apt-get install flatpak -y @@ -48,6 +49,13 @@ jobs: sudo flatpak install org.freedesktop.Platform//24.08 -y sudo flatpak install org.electronjs.Electron2.BaseApp//24.08 -y + METAINFO_FILE="packages/desktop-electron/extra-resources/linux/com.actualbudget.actual.metainfo.xml" + TODAY=$(date +%Y-%m-%d) + VERSION=$(node ./packages/ci-actions/bin/get-next-package-version.js --package-json ./packages/desktop-electron/package.json --type nightly) + sed -i "s/%RELEASE_VERSION%/$VERSION/g; s/%RELEASE_DATE%/$TODAY/g" "$METAINFO_FILE" + sudo apt-get install appstream + appstreamcli --version + appstreamcli validate "$METAINFO_FILE" - name: Set up environment uses: ./.github/actions/setup diff --git a/packages/desktop-electron/extra-resources/linux/com.actualbudget.actual.metainfo.xml b/packages/desktop-electron/extra-resources/linux/com.actualbudget.actual.metainfo.xml index 8658a9380a..6f59c70582 100644 --- a/packages/desktop-electron/extra-resources/linux/com.actualbudget.actual.metainfo.xml +++ b/packages/desktop-electron/extra-resources/linux/com.actualbudget.actual.metainfo.xml @@ -11,6 +11,13 @@

Designed for speed, Actual Budget has a streamlined interface that minimizes distractions, making it easy to navigate your finances. It operates locally, ensuring functionality without a network connection while syncing data across devices. This local-first approach also enhances privacy through end-to-end encryption.

The budgeting system is grounded in real income, helping you track spending and savings accurately. The app simplifies managing transactions with a minimal, efficient interface, supporting features like split transactions and transfers. Additionally, Actual Budget offers customizable reports alongside default net worth and cash flow reports, enabling users to analyze your finances in a way that suits you.

+ + + + #f2ebfe + + #270241 + com.actualbudget.actual.desktop https://actualbudget.org/ https://github.com/actualbudget/actual/issues @@ -21,40 +28,45 @@ - https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-electron/screenshots/budget-gnome-dark.png - Budget screen (dark theme) + https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-electron/screenshots/budget-gnome-dark.png + Budget screen (dark theme) - https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-electron/screenshots/budget-gnome-light.png - Budget screen (light theme) + https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-electron/screenshots/budget-gnome-light.png + Budget screen (light theme) - https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-electron/screenshots/transactions-gnome-dark.png - Transactions screen (dark theme) + https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-electron/screenshots/transactions-gnome-dark.png + Transactions screen (dark theme) - https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-electron/screenshots/transactions-gnome-light.png - Transactions screen (light theme) + https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-electron/screenshots/transactions-gnome-light.png + Transactions screen (light theme) - https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-electron/screenshots/schedules-gnome-dark.png - Schedules screen (dark theme) + https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-electron/screenshots/schedules-gnome-dark.png + Schedules screen (dark theme) - https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-electron/screenshots/schedules-gnome-light.png - Schedules screen (light theme) + https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-electron/screenshots/schedules-gnome-light.png + Schedules screen (light theme) - https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-electron/screenshots/reports-gnome-dark.png - Reports screen (dark theme) + https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-electron/screenshots/reports-gnome-dark.png + Reports screen (dark theme) - https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-electron/screenshots/reports-gnome-light.png - Reports screen (light theme) + https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-electron/screenshots/reports-gnome-light.png + Reports screen (light theme) - + + https://actualbudget.org/docs/releases + +

Check out the full release notes on our website.

+
+
Actual Core Contributors dev@actualbudget.org diff --git a/upcoming-release-notes/6307.md b/upcoming-release-notes/6307.md new file mode 100644 index 0000000000..6fac59d961 --- /dev/null +++ b/upcoming-release-notes/6307.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [MikesGlitch] +--- + +Automate the release to the flathub store