Files
jstrdev--ps5directo/.github/workflows/release.yml
T

84 lines
2.8 KiB
YAML

# Publica una version: al subir una etiqueta vX.Y.Z (o con "Run workflow" en Actions) crea o rehace
# la release de GitHub con:
# - PS5Directo-X.Y.Z-Setup.exe el instalador: doble clic, «Instalar» y listo. Es la descarga normal.
# - PS5Directo-X.Y.Z-Windows.zip lo mismo sin instalar (con Python incluido). Tambien lo usa
# «Actualizar» dentro del programa, que solo copia los archivos.
name: Publicar version
on:
push:
tags: ["v*"]
workflow_dispatch:
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
outputs:
ver: ${{ steps.v.outputs.ver }}
steps:
- uses: actions/checkout@v4
- name: Version de app.py
id: v
run: echo "ver=$(grep -m1 -oP '^VERSION = "\K[^"]+' app.py)" >> "$GITHUB_OUTPUT"
- name: La etiqueta tiene que coincidir con la version
if: startsWith(github.ref, 'refs/tags/')
run: test "${GITHUB_REF_NAME#v}" = "${{ steps.v.outputs.ver }}"
- name: Archivos del programa
run: |
mkdir -p dist/PS5Directo
git archive HEAD | tar -x -C dist/PS5Directo
rm -rf dist/PS5Directo/.github dist/PS5Directo/installer
- name: Python incluido
run: |
PY=3.12.10
curl -fsSL -o py.zip "https://www.python.org/ftp/python/$PY/python-$PY-embed-amd64.zip"
mkdir -p dist/PS5Directo/python
unzip -q py.zip -d dist/PS5Directo/python
# que el Python incluido vea la carpeta del programa
for f in dist/PS5Directo/python/python*._pth; do printf '..\n' >> "$f"; done
- name: Zip para Windows
run: (cd dist && zip -qr "PS5Directo-${{ steps.v.outputs.ver }}-Windows.zip" PS5Directo)
- uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
retention-days: 3
setup:
needs: build
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: dist
path: dist
- name: Instalador (Inno Setup)
shell: pwsh
run: |
$iscc = Join-Path ${env:ProgramFiles(x86)} 'Inno Setup 6\ISCC.exe'
if (-not (Test-Path $iscc)) { choco install innosetup -y --no-progress | Out-Null }
& $iscc /Q "/DMyVer=${{ needs.build.outputs.ver }}" installer\PS5Directo.iss
if ($LASTEXITCODE -ne 0) { exit 1 }
Get-ChildItem dist\*.exe, dist\*.zip | Format-Table Name, Length
# Con una etiqueta crea la release. Pulsando "Run workflow" en Actions añade (o rehace) los archivos
# de la release de la version que pone app.py, aunque ya exista.
- uses: softprops/action-gh-release@v2
with:
tag_name: v${{ needs.build.outputs.ver }}
files: |
dist/PS5Directo-*-Setup.exe
dist/PS5Directo-*-Windows.zip