GitHub Actions 入门断奶教程

2023-10-17 22:30

本文主要是介绍GitHub Actions 入门断奶教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通过github actions将代码自动部署到阿里云 ECS

github actions 介绍

CI/CD概念

如果你熟悉gitlab runner 亦或是 Jenkins,相信你对持续集成应该不会陌生,这个英文简称为CI(CD为持续部署),对CI/CD不了解的同学,可以看看这篇文章。持续集成可以由很多操作组成,比如抓取代码、运行测试、登录远程服务器,发布到第三方服务(比如阿里云ECS)等等,GitHub 把这些操作就称为 actions。GitHub 做了一个官方市场,可以搜索到他人提交的 actions。另外,还有一个 awesome actions 的仓库,也可以找到不少 action。

在这里插入图片描述

Actions术语

不同于gitlab runner的yml文件(gitlab-ci.yml)的书写和格式,github actions有自己一套的术语,下面我们来看看actions的专有术语.

workflow (工作流程):持续集成一次运行的过程,就是一个 workflow。

一般一个workflow,由一个yml文件构成,一个库可以由多个workflow文件组成.

job (任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。

这里类似于 gitlab-runner ci yml中的stages,以下这个例子是gitlab-runner ci docker镜像的写法参考gitlab-runner ci
stages:- test- build_image- deploy_productiontest:tags:- testvariables:GIT_STRATEGY: fetchbefore_script:- pip install flake8script:- flake8 project
****************
github actions ci 并没有gitlab有个stages(流水线阶段,按顺序执行)步骤声明,而是在jobs中声明.jobs:test:name: Python Lintruns-on: ubuntu-lateststeps:- uses: actions/checkout@v2- uses: actions/setup-python@v2with:python-version: "3.9"- name: Run flake8uses: julianwachholz/flake8-action@v2with:checkName: "Python Lint"path: path/to/filesplugins: flake8-spellcheckconfig: path/to/flake8.inienv:GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
看到这里,你可能还是一头雾水,别担心,下面我们再来介绍.

step(步骤):每个 job 由多个 step 构成,一步步完成。

从上面的代码可知,step类似于 before_script 和 script加在一起,

action (动作):每个 step 可以依次执行一个或多个命令(action)。

这个从字面意义上就很好理解,应该不需要示例.

通过写 workflow文件,来理解github actions

当你在github 仓库点击actions,然后创建新的actions(需要注意创建actions的branch 分支),github会在代码仓库的.github/workflows目录创建yml文件.GitHub 只要发现.github/workflows目录里面有.yml文件,就会自动运行该文件.

1、name
name 字段是workflow的名称
name: github actions test
2 on
on 字段表明触发workflow 的条件
on: push   push的时候触发
on: pull_request pull_request 时触发
-----------------------------------------------
on:push:branches: [ main ]  在push main 分支的时候触发
3 jobs

在这里插入图片描述
为了方便理解,我用了一个打包的github actions job,读者可以看看actions的打包步骤,和自己的打包步骤有哪些区别,有助于理解jobs的写法.

runs-on字段指定运行所需要的虚拟机环境,它是必填字段.
假如你想实现,gitlab那样的按顺序的流水阶段作业也是可以的,但你需要用到needs字段.
jobs:job1:job2:needs: job1job3:needs: [job1, job2]
执行顺序是 job1 -> job2 -> job3

在这里插入图片描述

wokflow完整示例

---
name: CI for workflowon:push:branches: ["main"]pull_request:branches: ["main"]workflow_dispatch:jobs:tests:name: "Python ${{ matrix.python-version }}"runs-on: "ubuntu-latest"env:USING_COVERAGE: '3.6,3.8'strategy:matrix:python-version: ["3.6", "3.7", "3.8", "pypy3"]steps:- uses: "actions/checkout@v2"- uses: "actions/setup-python@v2"with:python-version: "${{ matrix.python-version }}"- name: "Install dependencies"run: |python -VVpython -m sitepython -m pip install --upgrade pip setuptools wheelpython -m pip install --upgrade coverage[toml] virtualenv tox tox-gh-actions          - name: "Run tox targets for ${{ matrix.python-version }}"run: "python -m tox"

这里我写了一个 Python版本兼容性测试工具tox 的workflow样本,这里是仓库地址,你可以copy到你的账户中,略作修改,提交就能观察github actions的具体流程日志输出.

结语,本来只想写下github actions部署到阿里云的教程,结果变成了介绍文,下篇再写吧.

这篇关于GitHub Actions 入门断奶教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/228349

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显