Github Actions: Update .pot string index #1
This file contains 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
# Builds on all branches & PRs and packages for MacOS and Windows. | |
# Deploys to PyPi for tags. | |
name: Build, test and publish | |
on: | |
push: | |
branches: | |
- master | |
- release | |
- version/* | |
pull_request: | |
branches-ignore: | |
- l10n_master | |
create: | |
tags: | |
- '*' | |
jobs: | |
typechecks: | |
runs-on: ubuntu-latest | |
name: Type checks | |
strategy: | |
max-parallel: 5 | |
matrix: | |
python-version: [ "3.9", "3.10", "3.11", "3.12" ] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: theCapypara/mypy-check@rust-support | |
name: Run type checks | |
with: | |
mypy_flags: '--config-file mypy.ini' | |
requirements: '-r requirements.txt' | |
python_version: '${{ matrix.python-version }}' | |
linting: | |
runs-on: ubuntu-latest | |
name: Linting | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install gobject-introspection | |
run: sudo apt-get install -y gobject-introspection libgirepository1.0-dev | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r requirements.txt | |
- name: Lint with ruff | |
run: ruff check --output-format=github skytemple_randomizer | |
code-formatting: | |
runs-on: ubuntu-latest | |
name: Code Format | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: Install ruff | |
run: | | |
python -m pip install --upgrade pip | |
pip install ruff | |
- name: Check with ruff | |
run: ruff format --check skytemple_randomizer | |
build: | |
runs-on: ubuntu-latest | |
name: Build the Python wheel | |
container: | |
image: ghcr.io/skytemple/gtk4-build-image:1 | |
steps: | |
# For tags we assume the version in pyproject.toml is correct! | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Rewrite version for dev if not tag | |
if: "!startsWith(github.ref, 'refs/tags/')" | |
run: | | |
perl -i -pe "s/version\s*=\s*\"(.*?)(\.rc.*|\.a.*|\.post.*)?\"/version=\"\1.dev0+${GITHUB_SHA::8}\"/" pyproject.toml | |
- name: Note version | |
run: | | |
echo "PACKAGE_VERSION=$(tomlq '.project.version' pyproject.toml -r)" >> $GITHUB_ENV | |
- name: Run make | |
run: make | |
- name: Build Python wheels | |
run: | | |
python3 -m pip install --upgrade build | |
python3 -m build | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels | |
path: dist/*.whl | |
deploy: | |
if: startsWith(github.ref, 'refs/tags/') | |
needs: | |
- build | |
- package-windows | |
- package-mac | |
runs-on: ubuntu-latest | |
name: Deploy wheels to PyPI | |
steps: | |
- name: Download wheels | |
uses: actions/download-artifact@v4 | |
with: | |
name: wheels | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.11 | |
- name: Upgrade pip | |
run: | | |
python -m pip install --upgrade pip | |
pip install twine | |
- name: Publish wheels to PyPI | |
env: | |
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} | |
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} | |
run: | | |
twine upload *.whl | |
package-windows: | |
# This is partly based on https://github.com/wingtk/gvsbuild/blob/main/.github/workflows/ci.yml | |
runs-on: windows-2022 | |
name: Build and package for Windows | |
steps: | |
- name: Setup python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
architecture: "x64" | |
- name: Cache GTK-Build | |
id: cache-gtk-build | |
uses: actions/cache@v4 | |
with: | |
path: "C:\\gtk-build" | |
key: win-gtk-build-vgtk4-2024.4.0-1 | |
restore-keys: | | |
win-gtk-build-vgtk4-2024.4.0-1 | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
# Temporarily move the preinstalled git, it causes errors related to cygwin. | |
- name: Move git binary | |
run: | | |
Move-Item "C:\Program Files\Git\usr\bin" "C:\Program Files\Git\usr\notbin" | |
Move-Item "C:\Program Files\Git\bin" "C:\Program Files\Git\notbin" | |
- name: Install gvsbuild | |
run: | | |
# gvsbuild has issues if the pipx install path has spaces in it. It may be installed | |
# in Program Files (x86) by default, so let's just make sure it isn't. | |
if (Test-Path "C:\Program Files (x86)\pipx") { | |
Remove-Item -path "C:\Program Files (x86)\pipx" -recurse | |
} | |
# Make sure the pipx venv dir has no spaces | |
New-Item -ItemType Directory -Force -Path C:\pipx_home | |
$env:PIPX_HOME = "C:\pipx_home" | |
echo "PIPX_HOME=C:\pipx_home" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
New-Item -ItemType Directory -Force -Path C:\pipx_bin | |
$env:PIPX_BIN_DIR = "C:\pipx_bin" | |
echo "PIPX_BIN_DIR=C:\pipx_bin" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
$env:path = "C:\pipx_bin;" + $env:path | |
python -m pip install --user pipx | |
python -m pipx ensurepath | |
pipx install "gvsbuild==2024.4.0" | |
- name: Build GTK and other libs | |
run: | | |
$env:path = "C:\pipx_bin;" + $env:path | |
gvsbuild build --fast-build --ninja-opts -j2 --enable-gi --py-wheel gtk4 pygobject openssl gettext libadwaita hicolor-icon-theme adwaita-icon-theme | |
- name: Restore git binary | |
run: | | |
Move-Item "C:\Program Files\Git\usr\notbin" "C:\Program Files\Git\usr\bin" | |
Move-Item "C:\Program Files\Git\notbin" "C:\Program Files\Git\bin" | |
- name: Rewrite version for dev if not tag | |
if: "!startsWith(github.ref, 'refs/tags/')" | |
shell: sh | |
run: | | |
perl -i -pe "s/version\s*=\s*\"(.*?)(\.rc.*|\.a.*|\.post.*)?\"/version=\"\1.dev0+${GITHUB_SHA::8}\"/" pyproject.toml | |
echo "IS_DEV_BUILD=1" >> $GITHUB_ENV | |
- name: Note version | |
run: | | |
$env:path = "C:\pipx_bin;" + $env:path | |
pipx install yq | |
$env:PACKAGE_VERSION = tomlq.exe '.project.version' pyproject.toml -r | |
echo "PACKAGE_VERSION=$env:PACKAGE_VERSION" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
- name: Install SkyTemple Randomizer | |
run: | | |
$ErrorActionPreference = "Stop" | |
$env:pathext = $env:pathext + ";.PY" | |
$env:path = "C:\gtk-build\gtk\x64\release\bin;" + $env:path | |
$env:LIB = "C:\gtk-build\gtk\x64\release\lib;" + $env:LIB | |
$env:INCLUDE = "C:\gtk-build\gtk\x64\release\include;C:\gtk-build\gtk\x64\release\include\cairo;C:\gtk-build\gtk\x64\release\include\glib-2.0;C:\gtk-build\gtk\x64\release\include\gobject-introspection-1.0;C:\gtk-build\gtk\x64\release\lib\glib-2.0\include;" + $env:INCLUDE | |
# Install PyGObject and pycairo | |
pip install --force-reinstall (Resolve-Path C:\gtk-build\build\x64\release\pygobject\dist\PyGObject*.whl) | |
pip install --force-reinstall (Resolve-Path C:\gtk-build\build\x64\release\pycairo\dist\pycairo*.whl) | |
# Convert Blueprint files | |
.\build-blp-to-ui.ps1 | |
if ($LASTEXITCODE) { exit $LASTEXITCODE } | |
cd installer | |
# Package | |
.\build-windows.ps1 $PACKAGE_VERSION | |
if ($LASTEXITCODE) { exit $LASTEXITCODE } | |
if(!(Test-Path ".\dist\skytemple_randomizer\skytemple_randomizer.exe")){ | |
exit 1 | |
} | |
- name: Create installer | |
uses: joncloud/[email protected] | |
with: | |
script-file: "installer/skytemple-randomizer.nsi" | |
arguments: "/DPRODUCT_VERSION=${{ env.PACKAGE_VERSION }}" | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: skytemple-randomizer-windows-app-x64 | |
path: | | |
installer/skytemple-randomizer-*.exe | |
package-mac: | |
runs-on: macos-14 | |
name: Build and package for Mac OS | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Rewrite version for dev if not tag | |
if: "!startsWith(github.ref, 'refs/tags/')" | |
run: | | |
perl -i -pe "s/version\s*=\s*\"(.*?)(\.rc.*|\.a.*|\.post.*)?\"/version=\"\1.dev0+${GITHUB_SHA::8}\"/" pyproject.toml | |
echo "IS_DEV_BUILD=1" >> $GITHUB_ENV | |
- name: Note version | |
run: | | |
python3 -m venv .yq-venv | |
. .yq-venv/bin/activate | |
pip install yq | |
echo "PACKAGE_VERSION=$(tomlq '.project.version' pyproject.toml -r)" >> $GITHUB_ENV | |
- name: Install base packages | |
run: | | |
brew install pygobject3 gtk4 [email protected] libadwaita adwaita-icon-theme sdl cmake | |
echo "PATH=/usr/local/opt/[email protected]/bin:/usr/local/bin:$PATH" >> $GITHUB_ENV | |
python3.11 -m venv .venv | |
. .venv/bin/activate | |
pip3 debug --verbose # print compatible tags etc. for debugging purposes | |
- name: Make sure PyGObject is available. | |
run: | | |
. .venv/bin/activate | |
pip3 install "pygobject>=3.44.0" | |
- name: Convert Blueprint files | |
run: | | |
. .venv/bin/activate | |
./build-blp-to-ui.sh | |
- name: Install and package | |
run: | | |
. .venv/bin/activate | |
# Install other dependencies and SkyTemple Randomizer itself | |
pip3 install skytemple-rust 'pyinstaller~=5.0' | |
pip3 install -r requirements-mac-windows.txt | |
# Generate MO localization files | |
installer/generate-mo.sh | |
pip3 install '.[gtk]' | |
if [ -n "$IS_DEV_BUILD" ]; then | |
installer/install-skytemple-components-from-git.sh | |
fi | |
cd installer | |
# Download armips | |
curl https://skytemple.org/build_deps/mac/armips -O | |
chmod +x armips | |
# Package | |
./build-mac.sh $PACKAGE_VERSION | |
# Creating a zip makes the artifact upload much faster since there are so many files | |
zip -r skytemple-randomizer-mac.zip dist/SkyTempleRandomizer.app > /dev/null | |
- name: Upload .app | |
uses: actions/upload-artifact@v4 | |
with: | |
name: skytemple-randomizer-mac-app | |
path: | | |
installer/skytemple-randomizer-mac.zip | |
- name: Create installer | |
run: | | |
# See https://github.com/sindresorhus/create-dmg | |
# create-dmg automatically generates an installer icon if imagemagick is installed | |
brew install graphicsmagick imagemagick | |
# This tool returns exit code 2 if the DMG was created but code signing failed for some reason | |
npx create-dmg --dmg-title=SkyTempleRandomizer installer/dist/SkyTempleRandomizer.app installer || true | |
- name: Upload .dmg | |
uses: actions/upload-artifact@v4 | |
with: | |
name: skytemple-randomizer-mac-dmg | |
path: | | |
installer/SkyTempleRandomizer*.dmg |