Acción de gitHub: conceptos de flujo de trabajo y operaciones básicas
1. Archivo de flujo de trabajo
Referencias para escribir este artículo:
- Introducción a las acciones de GitHub - Ruan Yifeng
- GithubAction---Conceptos de flujo de trabajo y operaciones básicas
github action
Los archivos de configuración se denominan workflow
archivos y se almacenan en el .github/workflows
directorio.
El archivo .yml
toma .yaml
el formato de sufijo o .
Una biblioteca puede tener varios workflow
archivos , siempre que haya un archivo de sufijo que coincida con el formato, el archivo se ejecutará automáticamente.
2. Conceptos básicos y terminología
- Flujo de trabajo: el proceso de integración continua que se ejecuta una vez es un flujo de trabajo.
- Trabajo (tarea): un flujo de trabajo consta de uno o más trabajos, lo que significa una operación de integración continua que puede completar varias tareas.
- Paso (paso): Cada trabajo consta de múltiples pasos, que se completan paso a paso.
- action (acción): Cada paso puede ejecutar uno o más comandos a su vez.
Hay muchos campos de configuración en el archivo de flujo de trabajo, consulte la documentación oficial para obtener más información . A continuación se muestran algunos campos básicos.
1, nombre
El nombre del flujo de trabajo.Si se omite este campo, el valor predeterminado es el nombre de archivo del flujo de trabajo actual.
name: GitHub Actions Demo
复制代码
2, en
Especifica las condiciones que activan el flujo de trabajo, generalmente algún evento.
# push 事件触发 workflow
on: push
# 可以是事件的数组
on: [push, pull_request]
# 指定触发事件时,可以限定分支或标签
on:
push:
branches:
- master
复制代码
3, trabajos
El cuerpo del flujo de trabajo es el campo de trabajo, que representa una o más tareas a realizar.
trabajos.<id_trabajo>.nombre
jobs:
my_first_job:
name: My first job
my_second_job:
name: My second job
复制代码
El código anterior jobs
contiene dos tareas, job_id
a saber my_first_job
, my_second_job
.
job_id
Dentro name
está tarea.
trabajos.<job_id>.needs
Especifica las dependencias de la tarea actual, el orden en el que ejecutar.
jobs:
job1:
job2:
needs: job1
job3:
needs: [job1, job2]
复制代码
el trabajo 1 debe terminar antes que el trabajo 2, el trabajo 3 espera que el trabajo 1 y el trabajo 2 finalicen antes de poder ejecutarse. Entonces el orden de ejecución es trabajo1, trabajo2, trabajo3.
trabajos<job_id>.se ejecuta
Especifica el entorno de máquina virtual necesario para ejecutar. Campos requeridos
ubuntu-latest,ubuntu-18.04或ubuntu-16.04
windows-latest,windows-2019或windows-2016
macOS-latest或macOS-10.14
复制代码
trabajos<job_id>.pasos
Especifica los pasos en ejecución para cada trabajo, que puede contener uno o más pasos.
- jobs.<job_id>.steps.name: Nombre del paso.
- jobs.<job_id>.steps.run: el comando o la acción que se ejecutará para este paso.
- jobs.<job_id>.steps.env: Variables de entorno requeridas para este paso.
name: Greeting from Mona
on: push
jobs:
my-job:
name: My Job
runs-on: ubuntu-latest
steps:
- name: Print a greeting
env:
MY_VAR: Hi there! My name is
FIRST_NAME: Mona
MIDDLE_NAME: The
LAST_NAME: Octocat
run: |
echo $MY_VAR $FIRST_NAME $MIDDLE_NAME $LAST_NAME.
复制代码
Ejemplo de simulación
Simule un escenario, cuando ocurre un evento de inserción en una sucursal, se compilará todo el proyecto y el producto implementado se enviará a un enlace que configuramos
Consulte la configuración de la biblioteca principal de alita
env:
NODE_OPTIONS: --max-old-space-size=6144
复制代码
Establezca el límite de memoria para Node.
- name: "Checkout"
uses: actions/checkout@v3
with:
fetch-depth: 0
复制代码
Entre los pasos del trabajo, el primer paso action/checkout
es obtener el código fuente.
uses
: use algunas acciones oficiales o de terceros para ejecutar.
- name: "Setup Node.js"
uses: actions/setup-node@v3
with:
node-version: 14
复制代码
Instalar el nodo en el sistema operativo actual
- name: install
run: yarn
- name: Build
run: yarn run docs:build
复制代码
Ejecute el comando del paquete después de la instalación
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs-dist
cname: dform.alitajs.com
复制代码
publish_dir
: paquete generado después del empaquetadocname
: Enlace de documentación configurado