mirror of
https://github.com/jstrdev/ps5directo.git
synced 2026-10-29 04:01:51 +01:00
84 lines
2.8 KiB
YAML
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
|