Skip to content

Commit 811360b

Browse files
rtobarcmaureir
andauthored
Acelera las ejecuciones en CI (#2702)
Este PR modifica el job `Test` del workflow `Test` (i.e., el pipeline que se corre en cada PR y push a 3.12) con los siguientes cambios: * Checkout del submodule cpython se hace como parte de `actions/checkout` (no hay beneficio en hacerlo por cuentra propia) * Re-agrupa y comenta los distintos pasos del workflow * Configure apt and dpkg para correr de manera más eficiente, evitando la ejecución de algunos triggers que son innecesarios y que consumen CPU. * Instala `locales-all` para evitar la generación de los locales en español, ya que esta generación consume un largo tiempo de CPU, mientras que bajar el paquete es mucho más rápido. También se evita correr `apt update`. * Por último, y lo más complejo: cuando el workflow corre como parte de un PR, se calculan los archivos .po que han cambiado dentro del PR, y se corren los chequeos (sphinx-lint, powrap, pospell) sólo sobre estos archivos. Si el workflow corre como parte de un push a 3.12 todos los archivos se chequean. --------- Signed-off-by: Rodrigo Tobar <rtobar@icrar.org> Co-authored-by: Cristián Maureira-Fredes <cmaureir@users.noreply.github.com>
1 parent 9ec2d57 commit 811360b

File tree

1 file changed

+53
-10
lines changed

1 file changed

+53
-10
lines changed

.github/workflows/main.yml

+53-10
Original file line numberDiff line numberDiff line change
@@ -11,34 +11,77 @@ jobs:
1111
name: Test
1212
runs-on: ubuntu-22.04
1313
steps:
14+
# Obtención del código
1415
- uses: actions/checkout@v4
16+
with:
17+
submodules: 'true'
18+
# Necesario para que tj-actions/changed-files se ejecute
19+
# dentro de un tiempo adecuado
20+
fetch-depth: 2
21+
22+
# Instalación de dependencias
1523
- name: Preparar Python v3.11
1624
uses: actions/setup-python@v4
1725
with:
1826
python-version: "3.11"
1927
cache: "pip"
20-
- name: Sincronizar con CPython
28+
- name: Configura dpkg/apt para ejecutarse de manera eficiente
29+
uses: abbbi/github-actions-tune@v1
30+
- name: Deshabilita triggers de postgresql-common
31+
run: sudo sed -i '/postgresql-common/d' /var/lib/dpkg/triggers/File
32+
- name: Instalar dependencias de sistema
2133
run: |
22-
git submodule update --init --depth=1 cpython
23-
- name: Instalar dependencias
34+
sudo apt-get install -y hunspell hunspell-es gettext language-pack-es locales-all
35+
- name: Instalar dependencias de Python
2436
run: |
25-
sudo apt-get update
26-
sudo apt-get install -y hunspell hunspell-es gettext language-pack-es
2737
python -m pip install -r requirements.txt
38+
- name: Listar paquetes y versiones
39+
run: |
2840
pip list
2941
pospell --version
3042
powrap --version
43+
44+
# Cálculo de los archivos .po a verificar.
45+
# En el caso de un PR, sólo se chequean los .po que se están editando,
46+
# mientras que en caseo de un push a las ramas 3.* queremos revisar
47+
# todos los archivos
48+
- name: Obtiene la lista de archivos .po con cambios (sólo en PRs)
49+
if: github.event_name == 'pull_request'
50+
id: changed-po-files
51+
uses: tj-actions/changed-files@v40
52+
with:
53+
files: |
54+
**/*.po
55+
- name: Calcula lista de archivos .po a revisar
56+
id: po-files-to-check
57+
env:
58+
PO_FILES_TO_CHECK: ${{ steps.changed-po-files.conclusion == 'skipped' && '**/*.po' || steps.changed-po-files.outputs.all_changed_files }}
59+
run: |
60+
echo "po_files_to_check=$PO_FILES_TO_CHECK" >> $GITHUB_OUTPUT
61+
echo "any_po_files_to_check=`test -n \"$PO_FILES_TO_CHECK\" && echo true || echo false`" >> $GITHUB_OUTPUT
62+
- name: Muestra outputs de steps anteriores para debugueo
63+
env:
64+
CHANGED_PO_FILES: ${{ toJson(steps.changed-po-files) }}
65+
PO_FILES_TO_CHECK: ${{ toJson(steps.po-files-to-check) }}
66+
run: |
67+
echo "steps.changed-po-files=$PO_FILES_TO_CHECK"
68+
echo "steps.po-files-to-change.$CHANGED_PO_FILES"
69+
70+
# Chequeos a realizar
3171
- name: TRANSLATORS
3272
run: |
3373
diff -Naur TRANSLATORS <(LANG=es python scripts/sort.py < TRANSLATORS)
3474
- name: Powrap
35-
run: powrap --check --quiet **/*.po
75+
if: steps.po-files-to-check.outputs.any_po_files_to_check == 'true'
76+
run: powrap --check --quiet ${{ steps.po-files-to-check.outputs.po_files_to_check }}
3677
- name: Sphinx lint
37-
run: |
38-
sphinx-lint */*.po
78+
if: steps.po-files-to-check.outputs.any_po_files_to_check == 'true'
79+
run: sphinx-lint ${{ steps.po-files-to-check.outputs.po_files_to_check }}
3980
- name: Pospell
40-
run: |
41-
python scripts/check_spell.py
81+
if: steps.po-files-to-check.outputs.any_po_files_to_check == 'true'
82+
run: python scripts/check_spell.py ${{ steps.po-files-to-check.outputs.po_files_to_check }}
83+
84+
# Construcción de la documentación
4285
- name: Construir documentación
4386
run: |
4487
# FIXME: Relative paths for includes in 'cpython'

0 commit comments

Comments
 (0)