GitHub Actions
用过Gitlab的同学基本上都了解过Gitlab持续集成与持续部署,Gitlab CICD是通过自管理的一些Runner按照声明式的的配置清单实现持续集成的自动化任务,利用Github Actions可以自动化管理、构建、部署托管在Github上的代码,当然你可以用它自动化管理和部署你的博客,无需认为干预,也可以利用Actions帮你拉取一些国内拉不到的镜像等,功能有了,至于怎么使用就看个人了,前面我写了几篇关于Gitlab CICD的实践文章以及在Kubernetes上如何使用Gitlab CICD,大家有兴趣的可以前来审校:
- 👉 从GitLabCE CI/CD方法论中探索实践
- 👉 持续构建与部署值GITLAB-RUNNER
- 👉 Gitlab Runner的CI与CD
- 👉 Gitlab CICD 与Kubernetes实践·部署GitLab
- 👉 GitlabCI与Kubernetes实践·部署GitLab-Runner
- 👉 GitLab CICD与Kubernetes实践·部署Flask Web服务
在使用Github Actions的时候,虽然原理和使用方式,但是依旧存在不同的概念关键词,下面简单的介绍一下:
Runner
与Gtilab CICD类似,Gitlab Actions也是在一个运行有Github Actions runner application
的runner服务器上执行实现定义好的workflow. 同样如果你需要不同的操作系统或者硬件配置需求,你也可以自托管Github的runner,这些可以在Gitlab Action的文档中找到
所以github中的一些列指定都是在Runner中完成的,runner就是github action的执行环境。
Workflows
workflows是github中声明配置的一个自动化过程,与gitlab中的.gitlab-ci.yml
一样,有一个或者多个job组成,通过事件驱动构建流程
Jobs
jobs是一系待需要执行的指令的集合,由多个steps组成,可以理解要实现某个目标需要操作的指令集,与gitlab中的stage
类似
steps
step是github actions中执行的任务的单元,是job中运行命令的独立任务单元,github社区中有不少别人贡献出来的action,这些都是完成一类任务的指令集合体,所以你可以在steps中直接引用这些action,也可以自己去写命令,同样的,job中的没个step都运行相同的Runner上执行指令,所以他们之间的数据是可以共享的
events
github action是一个事件驱动型的自动化工具,因此在定义workflow的时候,可以灵活的通过on
指定事件的类型(如pull,pull_request,tags,branches等)去完成相对应的任务
运行个Demo🌰
- 创建一个空的github代码仓库
- 在代码仓库里面创建
.github/workflows
目录 - 创建一个
superlinter.yml
文件
name: Super-Linter # 定义workflows的名称
# Run this workflow every time a new commit pushed to your repository
on: push # 监听触发的事件
jobs: # 定义job块
# Set the job key. The key is displayed as the job name
# when a job name is not provided
super-lint:
# Name the Job
name: Lint code base
# 指定任务运行的服务器环境
runs-on: ubuntu-latest
steps:
# 拉取代码
# Checks out a copy of your repository on the ubuntu-latest machine
- name: Checkout code
uses: actions/checkout@v2 # 此处使用github社区的action
# Runs the Super-Linter action
- name: Run Super-Linter
uses: github/super-linter@v3
env:
DEFAULT_BRANCH: main
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Install tools # 此处使用自己的
run: apt-get update && apt-get install -y curl && curl cip.cc
然后在Github上查看一下运行的状态
从这里看其实和Gitlab在运行CICD的时候是差不多一样的,大家也可以尝试一下,同时在编写workflows的时候,我使用的是VScode编辑器,下载GithubAction插件,会有智能提示,推荐大家试试,点击下面的每个steps,都会显示对应的日志信息。