Build Pinepods Flatpak #87
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build Pinepods Flatpak | |
| on: | |
| workflow_run: | |
| workflows: ["Build Tauri Clients"] | |
| types: | |
| - completed | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: "Version to build (for testing)" | |
| required: true | |
| default: "test" | |
| env: | |
| FLATPAK_ID: com.gooseberrydevelopment.pinepods | |
| jobs: | |
| build-flatpak: | |
| runs-on: ubuntu-latest | |
| if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Install Flatpak | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y flatpak flatpak-builder appstream | |
| - name: Install Flatpak SDK | |
| run: | | |
| flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo | |
| flatpak install --user -y flathub org.gnome.Platform//47 org.gnome.Sdk//47 | |
| - name: Clone Flathub repo | |
| run: | | |
| git clone https://github.com/flathub/com.gooseberrydevelopment.pinepods flathub-repo | |
| cp flathub-repo/com.gooseberrydevelopment.pinepods.yml . | |
| - name: Set VERSION variable | |
| run: | | |
| if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then | |
| echo "VERSION=${{ github.event.inputs.version }}" >> $GITHUB_ENV | |
| else | |
| LATEST_RELEASE=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases/latest | jq -r .tag_name) | |
| echo "VERSION=$LATEST_RELEASE" >> $GITHUB_ENV | |
| fi | |
| - name: Download DEBs and calculate checksums | |
| run: | | |
| # Download both DEBs | |
| curl -L "https://github.com/${{ github.repository }}/releases/download/$VERSION/Pinepods_${VERSION}_amd64.deb" -o amd64.deb | |
| curl -L "https://github.com/${{ github.repository }}/releases/download/$VERSION/Pinepods_${VERSION}_arm64.deb" -o arm64.deb | |
| # Calculate and display checksums | |
| AMD64_SHA256=$(sha256sum amd64.deb | cut -d' ' -f1) | |
| ARM64_SHA256=$(sha256sum arm64.deb | cut -d' ' -f1) | |
| echo "Calculated AMD64 SHA256: $AMD64_SHA256" | |
| echo "Calculated ARM64 SHA256: $ARM64_SHA256" | |
| # Export to environment | |
| echo "AMD64_SHA256=$AMD64_SHA256" >> $GITHUB_ENV | |
| echo "ARM64_SHA256=$ARM64_SHA256" >> $GITHUB_ENV | |
| - name: Update manifest version and URL | |
| run: | | |
| echo "Updating manifest for version: $VERSION" | |
| # Show environment variables | |
| echo "Using AMD64 SHA256: $AMD64_SHA256" | |
| echo "Using ARM64 SHA256: $ARM64_SHA256" | |
| # Update AMD64 entry first | |
| sed -i "/.*amd64.deb/,/sha256:/ s|sha256: .*|sha256: $AMD64_SHA256|" com.gooseberrydevelopment.pinepods.yml | |
| # Update ARM64 entry second | |
| sed -i "/.*arm64.deb/,/sha256:/ s|sha256: .*|sha256: $ARM64_SHA256|" com.gooseberrydevelopment.pinepods.yml | |
| # Update URLs | |
| sed -i "s|url: .*amd64.deb|url: https://github.com/${{ github.repository }}/releases/download/$VERSION/Pinepods_${VERSION}_amd64.deb|" com.gooseberrydevelopment.pinepods.yml | |
| sed -i "s|url: .*arm64.deb|url: https://github.com/${{ github.repository }}/releases/download/$VERSION/Pinepods_${VERSION}_arm64.deb|" com.gooseberrydevelopment.pinepods.yml | |
| echo "Updated manifest content:" | |
| cat com.gooseberrydevelopment.pinepods.yml | |
| - name: Get shared Modules | |
| run: | | |
| git clone https://github.com/flathub/shared-modules | |
| # Test build steps | |
| - name: Build and test Flatpak | |
| run: | | |
| flatpak-builder --force-clean --sandbox --user --install-deps-from=flathub --ccache \ | |
| --mirror-screenshots-url=https://dl.flathub.org/media/ --repo=repo builddir \ | |
| com.gooseberrydevelopment.pinepods.yml | |
| flatpak remote-add --user --no-gpg-verify test-repo "$(pwd)/repo" | |
| flatpak install --user -y test-repo ${{ env.FLATPAK_ID }} | |
| # Basic launch test (timeout after 30s) | |
| timeout 30s flatpak run ${{ env.FLATPAK_ID }} || true | |
| # Verify metainfo | |
| flatpak run --command=cat ${{ env.FLATPAK_ID }} \ | |
| /app/share/metainfo/${{ env.FLATPAK_ID }}.metainfo.xml | |
| - name: Create Flatpak bundle | |
| run: | | |
| flatpak build-bundle repo ${{ env.FLATPAK_ID }}.flatpak ${{ env.FLATPAK_ID }} | |
| # Archive everything needed for the Flathub PR | |
| - name: Archive Flatpak files | |
| run: | | |
| mkdir flatpak_output | |
| cp ${{ env.FLATPAK_ID }}.flatpak flatpak_output/ | |
| cp com.gooseberrydevelopment.pinepods.yml flatpak_output/ | |
| tar -czvf flatpak_files.tar.gz flatpak_output | |
| - name: Upload Flatpak archive | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: flatpak-files | |
| path: flatpak_files.tar.gz |