name: Figurine installation on: pull_request: paths: - '.github/workflows/test-figurine.yml' - 'tests/test_figurine_installation.py' - 'scripts/post_install/customizable_post_install.sh' - 'AppImage/scripts/post_install_versions.py' - 'AppImage/scripts/flask_proxmenux_routes.py' push: branches: [main, develop] paths: - '.github/workflows/test-figurine.yml' - 'tests/test_figurine_installation.py' - 'scripts/post_install/customizable_post_install.sh' - 'AppImage/scripts/post_install_versions.py' - 'AppImage/scripts/flask_proxmenux_routes.py' workflow_dispatch: permissions: contents: read jobs: installer-and-release: runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@v4 with: persist-credentials: false - uses: actions/setup-python@v5 with: python-version: '3.11' - name: Check shell syntax and isolated installer regressions run: | bash -n scripts/post_install/customizable_post_install.sh python3 -B -m unittest discover -s tests -p test_figurine_installation.py -v - name: Install ARM user-mode emulation for release smoke tests run: | sudo apt-get update -qq sudo apt-get install -y --no-install-recommends qemu-user - name: Verify and run the pinned AMD64, ARM64 and ARMv7 release binaries env: FIGURINE_VERSION: '2.1.1' shell: bash run: | set -euo pipefail scratch="$(mktemp -d)" trap 'rm -rf "$scratch"' EXIT while read -r arch sha; do archive="figurine_linux_${arch}_v${FIGURINE_VERSION}.tar.gz" target="$scratch/$arch" mkdir -p "$target" curl --fail --location --retry 3 --output "$target/$archive" \ "https://github.com/arsham/figurine/releases/download/v${FIGURINE_VERSION}/$archive" printf '%s %s\n' "$sha" "$target/$archive" | sha256sum --check tar -xf "$target/$archive" -C "$target" runner=() case "$arch" in arm64) runner=(qemu-aarch64) ;; arm) runner=(qemu-arm) ;; esac "${runner[@]}" "$target/deploy/figurine" --version | tee "$target/version" grep -F "figurine version v$FIGURINE_VERSION" "$target/version" "${runner[@]}" "$target/deploy/figurine" -f "3d.flf" "ProxMenux-test" > "$target/banner" test -s "$target/banner" printf 'PASS: %s version and login banner\n' "$arch" done <<'ASSETS' amd64 f2b1c076942c94009d133df0f304a234a0994bf590b40f2927668324d578306a arm64 611550ddb31a75437be3f8587bcdd029d0d890f4d820b7f494a2c6615fecba10 arm 429e66bded486d49f730c4a6559e728cd1e9a163a0f56a85867e2cbec010171d ASSETS