3.8.0: «database is locked» y los 753 que no se movieron, arreglados; fechas raras, escaneo profundo, buscar, otros discos, banco por fecha y compilar en el estudio
- Tras «Aplicar» en una carpeta grande el inventario se ponía al día con la base tomada más de diez minutos y «Buscar clips» se rendía con «database is locked». Ahora las preguntas al disco van antes y en paralelo y lo de dentro de cada carpeta se busca por índice: 1,3 s para 2.493 movimientos, mismas filas de archivos que antes y 183 carpetas que antes se perdían. La lectura de clips reintenta si la base está ocupada. - Las fotos de «Alta» y «Baja» chocaban al juntarse en una carpeta: las subcarpetas con sentido se conservan, el plan avisa antes de dos archivos iguales en una fila, y un número entre dos palabras («Fiesta 6 Años») ya no se quita. - Los fallos de «Aplicar» se agrupan por motivo y dicen qué hacer; el banco de material se explica en llano. - Fechas raras (el reloj de una cámara), escaneo profundo, buscar en todos los clientes, traer lo que el cliente tiene en otros discos, el banco por temas o por fecha, y «Calcular de nuevo» más rápido. - Mover reintenta un momento si el archivo está abierto un instante (lectura de clips, antivirus). - .github/workflows/publicar.yml para compilar y publicar desde un PC del estudio; las pruebas devuelven error si algo falla. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Este commit está contenido en:
92
.github/workflows/publicar.yml
vendido
Archivo normal
92
.github/workflows/publicar.yml
vendido
Archivo normal
@@ -0,0 +1,92 @@
|
||||
# Compila, prueba y publica OrganiLAB desde un PC de Windows del estudio.
|
||||
#
|
||||
# Corre en un «runner» propio de GitHub instalado en ese PC (con la etiqueta «organilab»), no en las máquinas de
|
||||
# GitHub: el NAS solo se alcanza desde la red del estudio, y la clave que firma las actualizaciones no sale de ese
|
||||
# PC. Cómo prepararlo: README, sección «Compilar y publicar en el estudio».
|
||||
#
|
||||
# Se lanza de dos formas:
|
||||
# - subiendo una etiqueta con las notas: git tag -a v3.8.0 -m "Lo que verán al actualizar" y git push origin v3.8.0
|
||||
# - a mano, en GitHub › Actions › «Publicar OrganiLAB» › Run workflow, escribiendo las notas.
|
||||
name: Publicar OrganiLAB
|
||||
|
||||
on:
|
||||
push:
|
||||
tags: ['v*']
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
notas:
|
||||
description: 'Notas de la versión (lo que verán las copias instaladas al actualizar)'
|
||||
required: true
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
concurrency:
|
||||
group: publicar-organilab
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
publicar:
|
||||
runs-on: [self-hosted, windows, organilab]
|
||||
timeout-minutes: 120
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: La versión del código y la de la etiqueta coinciden
|
||||
if: startsWith(github.ref, 'refs/tags/v')
|
||||
shell: pwsh
|
||||
run: |
|
||||
$v = (Select-String -Path organizador.py -Pattern '^VERSION = "(.+)"').Matches[0].Groups[1].Value
|
||||
if ("v$v" -ne $env:GITHUB_REF_NAME) { throw "organizador.py dice $v y la etiqueta es $env:GITHUB_REF_NAME" }
|
||||
|
||||
- name: Pruebas
|
||||
shell: pwsh
|
||||
run: |
|
||||
py -3.12 probar.py; if ($LASTEXITCODE) { exit 1 }
|
||||
py -3.12 prueba_orden.py; if ($LASTEXITCODE) { exit 1 }
|
||||
py -3.12 prueba_funcional.py; if ($LASTEXITCODE) { exit 1 }
|
||||
|
||||
- name: labstream-os, al lado (el manifiesto se publica desde ahí)
|
||||
shell: pwsh
|
||||
run: |
|
||||
if (-not (Test-Path ..\labstream-os)) { git clone https://github.com/Labstream2026/labstream-os.git ..\labstream-os }
|
||||
git -C ..\labstream-os fetch -q origin main
|
||||
|
||||
- name: Empaquetar
|
||||
shell: pwsh
|
||||
env:
|
||||
NOTAS_A_MANO: ${{ inputs.notas }}
|
||||
run: |
|
||||
$n = $env:NOTAS_A_MANO
|
||||
if (-not $n) { $n = (git tag -l --format='%(contents)' $env:GITHUB_REF_NAME) -join "`n" }
|
||||
if (-not $n -or -not $n.Trim()) { throw "Faltan las notas: pon un mensaje en la etiqueta (git tag -a vX.Y.Z -m '...')" }
|
||||
$env:NOTAS = $n.Trim()
|
||||
py -3.12 empaquetar.py; if ($LASTEXITCODE) { exit 1 }
|
||||
|
||||
- name: Probar el paquete como lo instalaría alguien
|
||||
shell: pwsh
|
||||
run: py -3.12 prueba_ventana.py --paquete dist\OrganizadorLabstream; if ($LASTEXITCODE) { exit 1 }
|
||||
|
||||
- name: Publicar (NAS y manifiesto)
|
||||
shell: bash
|
||||
run: bash publicar.sh
|
||||
|
||||
- name: Comprobar lo publicado
|
||||
shell: pwsh
|
||||
run: py -3.12 verificar_publicado.py; if ($LASTEXITCODE) { exit 1 }
|
||||
|
||||
- name: Guardar el manifiesto en el repositorio
|
||||
shell: pwsh
|
||||
run: |
|
||||
git -C ..\labstream-os checkout -- public/herramientas/organizador.json
|
||||
$v = (Select-String -Path organizador.py -Pattern '^VERSION = "(.+)"').Matches[0].Groups[1].Value
|
||||
Copy-Item manifiesto.json $env:RUNNER_TEMP\manifiesto.json
|
||||
git fetch -q origin main
|
||||
git checkout -q -B main origin/main
|
||||
Copy-Item $env:RUNNER_TEMP\manifiesto.json manifiesto.json
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||
git add manifiesto.json
|
||||
git diff --cached --quiet; if ($LASTEXITCODE) { git commit -q -m "Manifiesto de la $v publicada"; git push -q origin main }
|
||||
Referencia en una nueva incidencia
Block a user