Skip to content

Commit

Permalink
Acelera las ejecuciones en CI (#2702)
Browse files Browse the repository at this point in the history
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 <[email protected]>
Co-authored-by: Cristián Maureira-Fredes <[email protected]>
  • Loading branch information
rtobar and cmaureir authored Nov 6, 2023
1 parent 9ec2d57 commit 811360b
Showing 1 changed file with 53 additions and 10 deletions.
63 changes: 53 additions & 10 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,34 +11,77 @@ jobs:
name: Test
runs-on: ubuntu-22.04
steps:
# Obtención del código
- uses: actions/checkout@v4
with:
submodules: 'true'
# Necesario para que tj-actions/changed-files se ejecute
# dentro de un tiempo adecuado
fetch-depth: 2

# Instalación de dependencias
- name: Preparar Python v3.11
uses: actions/setup-python@v4
with:
python-version: "3.11"
cache: "pip"
- name: Sincronizar con CPython
- name: Configura dpkg/apt para ejecutarse de manera eficiente
uses: abbbi/github-actions-tune@v1
- name: Deshabilita triggers de postgresql-common
run: sudo sed -i '/postgresql-common/d' /var/lib/dpkg/triggers/File
- name: Instalar dependencias de sistema
run: |
git submodule update --init --depth=1 cpython
- name: Instalar dependencias
sudo apt-get install -y hunspell hunspell-es gettext language-pack-es locales-all
- name: Instalar dependencias de Python
run: |
sudo apt-get update
sudo apt-get install -y hunspell hunspell-es gettext language-pack-es
python -m pip install -r requirements.txt
- name: Listar paquetes y versiones
run: |
pip list
pospell --version
powrap --version
# Cálculo de los archivos .po a verificar.
# En el caso de un PR, sólo se chequean los .po que se están editando,
# mientras que en caseo de un push a las ramas 3.* queremos revisar
# todos los archivos
- name: Obtiene la lista de archivos .po con cambios (sólo en PRs)
if: github.event_name == 'pull_request'
id: changed-po-files
uses: tj-actions/changed-files@v40
with:
files: |
**/*.po
- name: Calcula lista de archivos .po a revisar
id: po-files-to-check
env:
PO_FILES_TO_CHECK: ${{ steps.changed-po-files.conclusion == 'skipped' && '**/*.po' || steps.changed-po-files.outputs.all_changed_files }}
run: |
echo "po_files_to_check=$PO_FILES_TO_CHECK" >> $GITHUB_OUTPUT
echo "any_po_files_to_check=`test -n \"$PO_FILES_TO_CHECK\" && echo true || echo false`" >> $GITHUB_OUTPUT
- name: Muestra outputs de steps anteriores para debugueo
env:
CHANGED_PO_FILES: ${{ toJson(steps.changed-po-files) }}
PO_FILES_TO_CHECK: ${{ toJson(steps.po-files-to-check) }}
run: |
echo "steps.changed-po-files=$PO_FILES_TO_CHECK"
echo "steps.po-files-to-change.$CHANGED_PO_FILES"
# Chequeos a realizar
- name: TRANSLATORS
run: |
diff -Naur TRANSLATORS <(LANG=es python scripts/sort.py < TRANSLATORS)
- name: Powrap
run: powrap --check --quiet **/*.po
if: steps.po-files-to-check.outputs.any_po_files_to_check == 'true'
run: powrap --check --quiet ${{ steps.po-files-to-check.outputs.po_files_to_check }}
- name: Sphinx lint
run: |
sphinx-lint */*.po
if: steps.po-files-to-check.outputs.any_po_files_to_check == 'true'
run: sphinx-lint ${{ steps.po-files-to-check.outputs.po_files_to_check }}
- name: Pospell
run: |
python scripts/check_spell.py
if: steps.po-files-to-check.outputs.any_po_files_to_check == 'true'
run: python scripts/check_spell.py ${{ steps.po-files-to-check.outputs.po_files_to_check }}

# Construcción de la documentación
- name: Construir documentación
run: |
# FIXME: Relative paths for includes in 'cpython'
Expand Down

0 comments on commit 811360b

Please sign in to comment.