Repository navigation
ci: Add RISC-V Linux build with deb, rpm, and tar.gz packaging #60
Workflow file for this run
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
| # Quick static checks for the release pipeline (seconds, no Rust build): workflow syntax, | |
| # packaging shell/PowerShell scripts, and the Linux desktop/AppStream/Flatpak metadata. | |
| name: Packaging lint | |
| on: | |
| push: | |
| branches: [main, release] | |
| paths: [".github/workflows/**", "packaging/**", "assets/app-icon/**"] | |
| pull_request: | |
| paths: [".github/workflows/**", "packaging/**", "assets/app-icon/**"] | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: packaging-lint-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| env: | |
| ACTIONLINT_VERSION: 1.7.12 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install tools | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y --no-install-recommends shellcheck desktop-file-utils appstream libxml2-utils python3-yaml | |
| curl -fsSL "https://github.com/rhysd/actionlint/releases/download/v${ACTIONLINT_VERSION}/actionlint_${ACTIONLINT_VERSION}_linux_amd64.tar.gz" \ | |
| | tar -xz -C "$RUNNER_TEMP" actionlint | |
| - name: actionlint | |
| run: | | |
| "$RUNNER_TEMP/actionlint" -color | |
| - name: shellcheck | |
| run: shellcheck packaging/*.sh packaging/*/*.sh | |
| - name: PowerShell | |
| shell: pwsh | |
| run: | | |
| foreach ($f in Get-ChildItem packaging/windows/*.ps1) { | |
| $errors = $null | |
| [System.Management.Automation.Language.Parser]::ParseFile($f.FullName, [ref]$null, [ref]$errors) | Out-Null | |
| if ($errors) { $errors | ForEach-Object { Write-Output "::error file=$($f.Name)::$_" }; exit 1 } | |
| Write-Output "ok $($f.Name)" | |
| } | |
| - name: XML, desktop entry, AppStream, Flatpak manifest | |
| run: | | |
| xmllint --noout packaging/windows/effectcraft.wxs packaging/macos/*.plist* packaging/linux/*.xml* | |
| # Windows Installer needs Icon ids ending in .ico or .exe, or shortcuts show a blank icon. | |
| if grep -oE '<Icon Id="[^"]*"' packaging/windows/effectcraft.wxs | grep -vE '\.(ico|exe)"$'; then | |
| echo "::error::Icon Id must end in .ico or .exe"; exit 1 | |
| fi | |
| desktop-file-validate packaging/linux/ai.storyteller.effectcraft.desktop | |
| sed -e 's/@VERSION@/0.0.0/' -e 's/@DATE@/2026-01-01/' packaging/linux/ai.storyteller.effectcraft.metainfo.xml.in >"$RUNNER_TEMP/ai.storyteller.effectcraft.metainfo.xml" | |
| appstreamcli validate --no-net --explain "$RUNNER_TEMP/ai.storyteller.effectcraft.metainfo.xml" | |
| python3 - <<'EOF' | |
| import yaml | |
| src = yaml.safe_load(open("packaging/linux/flatpak/ai.storyteller.effectcraft.yml")) | |
| bundle = yaml.safe_load(open("packaging/linux/flatpak/ai.storyteller.effectcraft.bundle.yml")) | |
| for m in (src, bundle): | |
| assert m["id"] == "ai.storyteller.effectcraft" and m["command"] == "effectcraft", m["id"] | |
| for key in ("runtime", "runtime-version", "sdk", "finish-args"): | |
| assert src[key] == bundle[key], f"Flatpak manifests disagree on {key}: {src[key]} vs {bundle[key]}" | |
| print("Flatpak manifests ok") | |
| EOF | |
| - name: FreeBSD package layout (stub binaries) | |
| run: bash packaging/freebsd/package.sh --dry-run |