Paquetes de Github y acciones Práctica Github CI / CD

contorno

Github después de ser adquirida por Microsoft, sin olvidar el principio del corazón, y mayores esfuerzos para el beneficio de los desarrolladores, lanzó una actualización importante almacenes privados gratuitos. Recientemente abrió dos grandes paquetes de acciones y se mueve, la sensación después de lo intento con estas dos funciones es simplemente invencible.

Paquetes de GitHub es un repositorio de código y cada repositorio de paquetes asociado. Popular, es decir, el código se almacena en la salida de fuente de depósito, paquete de almacenaje del almacén se compila puede ser directamente dependiente de la herramienta de gestión ambiental depende del idioma individuo de lib. Hemos conocido experto similares almacén central y almacén NMP.

GitHub acciones de integración continua y la implementación de los componentes de flujo de trabajo Github un nativo. Es Github populares darle un alojamiento virtual libre , flujo de trabajo guiones son escritos por usted para la detección de código fuente, compilar, probar y publicar. Podemos imaginar similar a Github para cada almacén son libres de unirse a un servicio de Jenkins, escribir un guión para llevar a cabo la integración fuente de la tubería y la publicación.

Github Token

En primer lugar, se discuten en Github simbólico, ya que las operaciones subsiguientes tendrán que usar la Señal.

Github token se genera cuando el usuario ha iniciado la sesión, las credenciales de usuario de inicio de sesión JWT similares modo, token asociado con la autoridad de funcionamiento, licencia de desarrollador usuario a un tercero los servicios de gestión de almacenes o los desarrolladores a su vez utilicen Github Api que hacer alguna operación frikis.

Operador: https: //github.com/settings/tokens.

Introduzca un nombre descriptivo después haga clic en Generar token, por lo general utilizado para describir este símbolo se utiliza para hacer, compruebe los permisos de la ficha. Después de confirmar que genera una cadena de fichas. Esta señal sólo se mostrará una vez y desaparecerá después de páginas de salida, así que tenga cuidado preservación.

Si la divulgación inadvertida modo, pueden dejar de operar en la lista de símbolos de token.

Secretos Github texto cifrado de diccionario

diccionario texto cifrado por alguna configuración de seguridad de privacidad, tales como contraseña, contadores, etc., en forma de pares de valores clave en el almacenamiento de texto cifrado Github, la necesidad de acceso a algunos escenarios, tales como en las acciones Github, Api expuesta a través de Github para evitar los problemas de seguridad causados ​​por la fuente abierta.

Diccionario texto cifrado asociado con cada repositorio de código, sólo en el contexto del repositorio de código actual, el texto cifrado actual ningún diccionario global.

La trayectoria de entrada:仓库 > Settings > Secrets

GitHub Paquetes almacén de paquete

entrada:

Apoyado tipo de paquete:

El paquete de cliente idioma Formato de paquete descripción Dirección del almacén
npm JavaScript package.json gestor de paquetes nodo https://npm.pkg.github.com
gem Rubí Gemfile gestor de paquetes RubyGems https: // NOMBRE DE USUARIO: [email protected]/OWNER/
mvn Java pom.xml gestión de proyectos Apache Maven y una herramienta de comprensión https://maven.pkg.github.com/OWNER/REPOSITORY
gradle Java build.gradle o build.gradle.kts herramienta de automatización de construcción Gradle para Java https://maven.pkg.github.com/OWNER/REPOSITORY
docker N / A Dockerfile plataforma de gestión de contenedores ventana acoplable
dotnet CLI .RED nupkg gestión de paquetes NuGet para .NET

La limitación de todos los tipos de cuentas (para uso personal lo suficientemente completo):

producto memoria tráfico mensual
GitHub gratuito 500 MB 1 GB
GitHub Pro 1 GB 5 GB
GitHub equipo 2 GB 10 GB
Enterprise Cloud GitHub 50 GB 100 GB

Paquetes actualmente apoyan el común del estibador, Java, nodejs ecológico. repositorio de Github será por defecto asociado a cada paquete de un almacén. Cada paquete es un espacio de almacén nombre del paquete, ya que cada paquete se asocia con la dirección del repositorio Identificación del propietario del almacén y del código de identificación. Como una imagen especular del estibador llamada Test:latestse puede publicar en múltiples paquetes Github repositorio sin sobrescribir uno al otro (nombrando Npm Identificación del código de paquete y depósito de usuarios Identificación colocado en el nombre del paquete, no la dirección del almacén en el paquete).

Aunque la interfaz de repositorio repositorio de paquetes de código público se puede leer en público, pero las necesidades de paquetes para publicar y certificación descarga . Es necesario utilizar Github simbólico. Descargar requiere autenticación actualmente Tucao más implacable, la comunidad ha estado discutiendo esta emisión , seguimiento cercano puede permitir su descarga gratuita.
A continuación un ejemplo para explicar el uso de estibador.

1, en primer lugar que desea visitar:

$ docker login -u USERNAME -p TOKEN docker.pkg.github.com

2, especificaremos el espejo después de la tala de cambio de nombre de nombre de la imagen del estibador Github Paquetes disposiciones:

$ docker tag IMAGE_ID docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION

Nota: El nombre de la imagen en el formato propietario de almacén del almacén cargador de muelle del nombre de dominio + nombre + nombre + Identificación del espejo del almacén + número de versión

3, suelte el espejo

$ docker push docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION

Volver a la página de almacén, entrar en paquetes, se puede ver el paquete lanzado:

Haga clic en el nombre del paquete en los detalles:

Github acciones de flujo de trabajo de integración continua

1, Github proporciona alojamiento web gratuito, utilizado para proporcionar un entorno operativo integrado continua. Por consideraciones de seguridad pueden también utilizar sus propios recursos para ejecutar las tareas de creación de servidores, consulte: El alojamiento de los propios corredores

Especificaciones de acogida:

  • CPU 2-core
  • 7 GB de memoria RAM
  • 14 GB de espacio de disco SSD

entorno operativo actual opcionales son:

Ambiente yamla etiqueta El software incluido
Ubuntu 18.04 ubuntu-latest o ubuntu-18.04 ubuntu-18.04
Ubuntu 16.04 ubuntu-16.04 ubuntu-16.04
macOS 10.15 macos-latest o macos-10.15 MacOS 10.15
Windows Server 2019 windows-latest o windows-2019 windows-2019
Windows Server 2016 windows-2016 windows-2016

Cada entorno operativo pre-cargado con herramientas y el lenguaje de cada herramienta de la cadena ecológica, Ubuntu lista de software preinstalado entorno de uso común: Lista

Para ecosistema Java, por ejemplo, Git, estibador, el JDK, Maven ha sido pre-instalado :

2, utilice:

Acciones a través de archivos YAML para escribir flujo de trabajo declarativo.

En el directorio raíz del repositorio de códigos del nuevo github/workflowsdirectorio, todo ello dentro del directorio de .ymlarchivo se reconocerá como un flujo de trabajo de integración continua.

La sintaxis de la secuencia de comandos ver el blog de Ruan Yifeng , como se indica a continuación:

Flujo de trabajo utilizar la sintaxis declarativa para especificar por qué, no es necesario para explicar cómo hacerlo, utilizando esta estrategia, escritura legible, pero la expresión es débil.

Yml el directorio especificado para cada archivo será reconocido automáticamente como un flujo de trabajo, cada flujo de trabajo por tener su propio nombre, y el flujo de trabajo activado por eventos. Los eventos se dividen en:

  • git operaciones eventos tales como empujar, solicitud de extracción y así sucesivamente relacionados.
  • la expresión cron

Un flujo de trabajo contiene empleo múltiple, es necesario especificar el entorno operativo. es asíncrona, la intervención puede ser realizada orden de trabajo por la especificación explícita de las necesidades de dependencia, ya que el trabajo se ejecuta en diferentes huéspedes, pertenecen a diferentes sistemas de archivos, construido intermedio el trabajo respectivo no puede ser compartida entre el trabajo generada, típicamente por el constructo la liberación del producto a los artefactos a la convergencia.

Un trabajo puede contener más de un paso, se ejecuta setp misma tarea de sincronización, las etapas para construir el producto del trabajo actual en el huésped utilizado.

由于步骤重合度高,如maven编译,docker构建,docker发布等,Github使用应用市场来汇总开发者开源的构建步骤脚本,用于重用。Github自己也开发了一些基础功能脚本如 actions/checkout

可以通过在步骤中使用uses命令+actions名称@版本来引用功能,节约成本和可读性。

Token,密码等隐私变量可以通过暴露的Secrets对象利用插值语法来引用。

3、为了丰富工作流脚本的表达能力,Github在脚本编译执行上下文中暴露了一些Github变量和环境变量,用于开发者使用。

Github变量如下:

Context name Type Description
github object Information about the workflow run. For more information, see github context.
env object Contains environment variables set in a workflow, job, or step. For more information, see env context .
job object Information about the currently executing job. For more information, see job context.
steps object Information about the steps that have been run in this job. For more information, see steps context.
runner object Information about the runner that is running the current job. For more information, see runner context.
secrets object Enables access to secrets set in a repository. For more information about secrets, see "Creating and using encrypted secrets."
strategy object Enables access to the configured strategy parameters and information about the current job. Strategy parameters include fail-fast, job-index, job-total, and max-parallel.
matrix object Enables access to the matrix parameters you configured for the current job. For example, if you configure a matrix build with the os and node versions, the matrix context object includes the os and node versions of the current job.

环境变量如下:

Environment variable Description
HOME The path to the GitHub home directory used to store user data. For example, /github/home.
GITHUB_WORKFLOW The name of the workflow.
GITHUB_RUN_ID A unique number for each run within a repository. This number does not change if you re-run the workflow run.
GITHUB_RUN_NUMBER A unique number for each run of a particular workflow in a repository. This number begins at 1 for the workflow's first run, and increments with each new run. This number does not change if you re-run the workflow run.
GITHUB_ACTION The unique identifier (id) of the action.
GITHUB_ACTIONS Always set to true when GitHub Actions is running the workflow. You can use this variable to differentiate when tests are being run locally or by GitHub Actions.
GITHUB_ACTOR The name of the person or app that initiated the workflow. For example, octocat.
GITHUB_REPOSITORY The owner and repository name. For example, octocat/Hello-World.
GITHUB_EVENT_NAME The name of the webhook event that triggered the workflow.
GITHUB_EVENT_PATH The path of the file with the complete webhook event payload. For example, /github/workflow/event.json.
GITHUB_WORKSPACE The GitHub workspace directory path. The workspace directory contains a subdirectory with a copy of your repository if your workflow uses the actions/checkout action. If you don't use the actions/checkout action, the directory will be empty. For example, /home/runner/work/my-repo-name/my-repo-name.
GITHUB_SHA The commit SHA that triggered the workflow. For example, ffac537e6cbbf934b08745a378932722df287a53.
GITHUB_REF The branch or tag ref that triggered the workflow. For example, refs/heads/feature-branch-1. If neither a branch or tag is available for the event type, the variable will not exist.
GITHUB_HEAD_REF Only set for forked repositories. The branch of the head repository.
GITHUB_BASE_REF Only set for forked repositories. The branch of the base repository.

总结

自从Github抱上了巨硬这条大腿以后,疯狂向开发者抛出大利好。毕竟背后有巨硬财大气粗,而且巨硬靠着企业业务赚钱也不指着向开发者个人收费。

结合Github Actions和Github Packages,可以完成一整个CI闭环,比如代码Push到Github上的某个分支,触发Action,构建Docker镜像push到Packages,调用Webhook触发阿里云服务器pull image部署。对于个人写一些小的开源项目完美够用,节约了在阿里云服务器搭建Jenkins等CI服务的资源。真香~~~

考虑到Github Actions提供的虚拟主机性能不错(比我买的阿里云主机好多了...)有公网IP可以访问外网,其实还可以玩点别的花活,比如抢火车票?爬网页?刷评论?发动你的脑瓜壳吧~

Supongo que te gusta

Origin www.cnblogs.com/jialin16/p/12446571.html
Recomendado
Clasificación