Skip to content

wizzy_quest: Update quest metadata with complete project info #4765

wizzy_quest: Update quest metadata with complete project info

wizzy_quest: Update quest metadata with complete project info #4765

Workflow file for this run

# SPDX-FileCopyrightText: The Threadbare Authors
# SPDX-License-Identifier: MPL-2.0
name: "Build and Export Game"
on:
workflow_dispatch:
inputs:
build_flatpak:
description: 'Also build a Flatpak bundle'
type: boolean
pull_request:
release:
types:
- published
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
env:
PCK_NAME: threadbare
jobs:
build:
name: Build for web
runs-on: ubuntu-latest
outputs:
linux-changed: ${{ steps.changes.outputs.linux }}
steps:
- name: Checkout
uses: actions/checkout@v6
with:
# TODO: can we use --filter to avoid fetching the trees & blobs for
# all historical commits, while still fetching the commit history &
# tags?
fetch-depth: 0
fetch-tags: true
- name: Create Git LFS file list
run: git lfs ls-files -l |cut -d' ' -f1 |sort >.git/lfs-hashes.txt
- name: Restore Git LFS object cache
uses: actions/cache@v5
with:
path: .git/lfs
key: ${{ runner.os }}-lfsdata-v1-${{ hashFiles('.git/lfs-hashes.txt') }}
restore-keys: |
${{ runner.os }}-lfsdata-v1-
${{ runner.os }}-lfsdata
- name: Fetch any needed Git LFS objects and prune extraneous ones
run: git lfs fetch --prune
- name: Check out Git LFS content
run: git lfs checkout
- id: changes
uses: dorny/paths-filter@v3
with:
filters: |
linux:
- 'linux/**'
- .github/workflows/export.yml
- name: Export web build
uses: endlessm/godot-export-action@v1
with:
godot_version: 4.5.1
# PCK files are the same across export presets/platforms; prep the one
# just exported for web to be used separately, i.e. for Flatpak builds
- name: Copy PCK file
run: |
cd build
cp web/index.pck '${{ env.PCK_NAME }}.pck'
- name: Upload web artifact
uses: actions/upload-artifact@v6
with:
name: web
path: build/web
- name: Upload PCK artifact
uses: actions/upload-artifact@v6
with:
name: pck
path: build/${{ env.PCK_NAME }}.pck
flatpak:
name: Build Flatpak
needs: build
if: ${{ inputs.build_flatpak || github.event_name == 'release' || needs.build.outputs.linux-changed == 'true' }}
runs-on: ubuntu-latest
container:
image: ghcr.io/flathub-infra/flatpak-github-actions:freedesktop-25.08
options: --privileged
steps:
- uses: actions/checkout@v6
with:
lfs: true
sparse-checkout: |
linux
- name: Download Artifact
uses: actions/download-artifact@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
name: pck
path: build
- uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
bundle: threadbare.flatpak
manifest-path: linux/org.endlessaccess.threadbare.yml
cache-key: "flatpak-builder-${{ github.sha }}"
- name: Create Linux metadata bundle
run: |
tar --create --gzip \
--dereference \
--file threadbare-linux-metadata.tar.gz \
--transform=s,^,threadbare-linux-metadata/, \
linux/*
- name: Upload Linux metadata bundle
uses: actions/upload-artifact@v6
with:
name: threadbare-linux-metadata
path: threadbare-linux-metadata.tar.gz
release:
name: Attach to release
needs: [build, flatpak]
if: ${{ github.event_name == 'release' }}
runs-on: ubuntu-latest
steps:
- name: Download PCK
uses: actions/download-artifact@v7
with:
name: pck
- name: Attach PCK
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
mv '${{ env.PCK_NAME }}.pck' '${{ env.PCK_NAME }}-${{ github.ref_name }}.pck'
gh release upload '${{ github.ref_name }}' '${{ env.PCK_NAME }}-${{ github.ref_name }}.pck' --repo '${{ github.repository }}'
- name: Download Flatpak bundle
uses: actions/download-artifact@v7
with:
name: threadbare-x86_64.flatpak
- name: Attach Flatpak bundle to release
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
mv threadbare.flatpak 'threadbare-${{ github.ref_name }}-x86_64.flatpak'
gh release upload '${{ github.ref_name }}' 'threadbare-${{ github.ref_name }}-x86_64.flatpak' --repo '${{ github.repository }}'
- name: Download web bundle
uses: actions/download-artifact@v7
with:
name: web
path: web
- name: Attach web bundle to release
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
pushd web
zip -r "../threadbare-${{ github.ref_name }}-web.zip" .
popd
gh release upload '${{ github.ref_name }}' 'threadbare-${{ github.ref_name }}-web.zip' --repo '${{ github.repository }}'
- name: Download Linux metadata bundle
uses: actions/download-artifact@v7
with:
name: threadbare-linux-metadata
- name: Attach Linux metadata bundle to release
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
mv threadbare-linux-metadata.tar.gz 'threadbare-${{ github.ref_name }}-linux-metadata.tar.gz'
gh release upload '${{ github.ref_name }}' 'threadbare-${{ github.ref_name }}-linux-metadata.tar.gz' --repo '${{ github.repository }}'