name: Flatpak Build Steps on: workflow_call: inputs: jobName: required: true type: string artifactPrefixName: required: true type: string os: required: false type: string default: ubuntu-22.04 platform: required: false type: string default: x64 compiler: required: true type: string cmakeflags: required: true type: string branch: required: false type: string default: "stable" publish: required: false type: boolean default: false patchesUrl: required: false type: string default: https://github.com/PCSX2/pcsx2_patches/releases/latest/download fetchTags: required: false type: boolean default: false stableBuild: required: false type: boolean default: false jobs: build_linux: name: ${{ inputs.jobName }} runs-on: ${{ inputs.os }} timeout-minutes: 60 steps: - name: Checkout Repository uses: actions/checkout@v4 with: submodules: recursive # Hackity hack. When running the workflow on a schedule, we don't have the tag, # it doesn't fetch tags, therefore we don't get a version. So grab them manually. # actions/checkout elides tags, fetch them primarily for releases - name: Fetch tags if: ${{ inputs.fetchTags }} run: git fetch --tags --no-recurse-submodules - name: Add stable release identifier file if: ${{ inputs.stableBuild == true || inputs.stableBuild == 'true' }} shell: bash run: | echo "#define DEFAULT_UPDATER_CHANNEL \"stable\"" > ./pcsx2-qt/DefaultUpdaterChannel.h cat ./pcsx2-qt/DefaultUpdaterChannel.h - name: Prepare Artifact Metadata id: artifact-metadata shell: bash env: PREFIX: ${{ inputs.artifactPrefixName }} EVENT_NAME: ${{ github.event_name }} PR_TITLE: ${{ github.event.pull_request.title }} PR_NUM: ${{ github.event.pull_request.number }} PR_SHA: ${{ github.event.pull_request.head.sha }} run: ./.github/workflows/scripts/common/name-artifacts.sh - name: Install Packages env: COMPILER: ${{ inputs.compiler }} run: .github/workflows/scripts/linux/install-packages-flatpak.sh - name: Download patches run: | cd bin/resources aria2c -Z "${{ inputs.patchesUrl }}/patches.zip" - name: Generate AppStream XML run: | ./.github/workflows/scripts/linux/generate-metainfo.sh .github/workflows/scripts/linux/flatpak/net.pcsx2.PCSX2.metainfo.xml cat .github/workflows/scripts/linux/flatpak/net.pcsx2.PCSX2.metainfo.xml flatpak run org.freedesktop.appstream-glib validate .github/workflows/scripts/linux/flatpak/net.pcsx2.PCSX2.metainfo.xml - name: Validate manifest run: | flatpak run --command=flatpak-builder-lint org.flatpak.Builder manifest .github/workflows/scripts/linux/flatpak/net.pcsx2.PCSX2.json - name: Build Flatpak # TODO - based on v6.3, switch back to the main action once change is accepted (or they release a breaking change that uses upload-artifact@v4) uses: xTVaser/flatpak-github-actions/flatpak-builder@64267d4cf01f7955a40128039d0abab17bb48aac with: bundle: ${{ steps.artifact-metadata.outputs.artifact-name }}.flatpak upload-artifact: false manifest-path: .github/workflows/scripts/linux/flatpak/net.pcsx2.PCSX2.json arch: x86_64 build-bundle: true verbose: true mirror-screenshots-url: https://dl.flathub.org/repo/screenshots branch: ${{ inputs.branch }} cache: true restore-cache: true cache-key: ${{ inputs.os }} ${{ inputs.platform }} ${{ inputs.compiler }} flatpak ${{ hashFiles('.github/workflows/scripts/linux/flatpak/**/*.json') }} - name: Commit screenshots to OSTree run: | ostree commit --repo=repo --canonical-permissions --branch=screenshots/x86_64 flatpak_app/screenshots #- name: Validate build directory # run: | # flatpak run --command=flatpak-builder-lint org.flatpak.Builder builddir flatpak_app # #- name: Validate repo # run: | # flatpak run --command=flatpak-builder-lint org.flatpak.Builder repo repo - name: Push to Flathub beta if: inputs.publish == true && inputs.branch == 'beta' uses: flatpak/flatpak-github-actions/flat-manager@v6.3 with: flat-manager-url: https://hub.flathub.org/ repository: beta token: ${{ secrets.FLATHUB_BETA_TOKEN }} - name: Push to Flathub stable if: inputs.publish == true && inputs.branch == 'stable' uses: flatpak/flatpak-github-actions/flat-manager@v6.3 with: flat-manager-url: https://hub.flathub.org/ repository: stable token: ${{ secrets.FLATHUB_TOKEN }} # NOTE - this is done after on purpose so the flatpak file is wherever it needs to be for the previous pushes - name: Prepare artifacts folder # NOTE - 'flatpak-builder' dumps the artifact out into the current directory run: | mkdir -p "$GITHUB_WORKSPACE"/ci-artifacts/ mv "./${{ steps.artifact-metadata.outputs.artifact-name }}.flatpak" "$GITHUB_WORKSPACE"/ci-artifacts/ - name: Upload artifact uses: actions/upload-artifact@v4 with: name: ${{ steps.artifact-metadata.outputs.artifact-name }} path: ci-artifacts