1. 什么是 GitHub Actions 与 workflow ?

GitHub Actions 是 GitHub 提供的一种持续集成(CI)和持续部署(CD)的工具,用于自动化软件开发过程中的各种任务和工作流。GitHub Action Workflow 是一组定义在存储库中的自动化任务,可以根据不同的事件(例如代码推送、拉取请求、问题创建等)触发执行。

每个 GitHub Action Workflow 都是由一个或多个步骤(Steps)组成,每个步骤可以包含一个或多个命令、脚本或操作。这些步骤可以按顺序执行,也可以并行执行,以便自动化构建、测试、部署等任务。

一些常见的用途包括:

  1. 自动测试和构建: 在代码推送到存储库时自动运行测试,确保代码的质量和稳定性。
  2. 自动部署: 当代码合并到主分支时,自动将应用程序部署到生产环境。
  3. 发布通知: 在新问题创建或拉取请求时,自动发送通知到团队成员。
  4. 自动化文档生成: 在代码变更时,自动生成更新的文档。
  5. 版本发布: 在发布新版本时,自动执行一系列步骤,如创建标签、生成发布文件等。
  6. 代码质量检查: 自动运行代码风格检查、静态分析等工具,以确保代码符合规范。
  7. 容器构建: 自动构建 Docker 镜像并将其推送到容器注册表。
  8. 多环境支持: 根据不同分支或标签,自动执行适合的工作流程,以支持不同的开发、测试和生产环境。

GitHub Action Workflow 使用 YAML 文件来定义,该文件位于存储库中的 .github/workflows 目录下。这些定义可以根据项目的需求进行配置和自定义。

2. 代码实战

2.1 以MSVS工程(C++工程)为例

# 定义构建流程
name: Build Process # 当代码被推送到存储库时触发工作流
on: push jobs:
# 定义构建作业
build:
# 在 Windows 环境中运行
runs-on: windows-latest steps:
# 步骤:检出代码
- name: Checkout code
uses: actions/checkout@v3 # 步骤:设置 MSBuild
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v1.1 # 步骤:构建 VS 项目
- name: Build VS Project
run: |
# 运行生成 DLL 的命令
msbuild project.sln /p:Configuration=Release /p:Platform=x64 # 步骤:上传 ZIP 构件
- name: Upload ZIP Artifact
uses: actions/upload-artifact@v3
with:
name: project
# 压缩包过期时间
retention-days: 90
# 压缩包路径,需要根据自己项目配置进行相对应的设置
path: |
release

2.2 以Maven项目(Java项目)为例

# 定义构建流程
name: Build Process # 当代码被推送到存储库时触发工作流
on: push jobs:
# 定义构建作业
build:
# 在 Ubuntu 环境中运行
runs-on: ubuntu-latest steps:
# 步骤:检出代码
- name: Checkout code
uses: actions/checkout@v3 # 步骤:设置 Java 环境为 JDK 8,并使用 Corretto 发行版,缓存 Maven
- name: Setup Java
uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'corretto'
cache: 'maven' # 步骤:构建 Maven 项目
- name: Build Maven Project
run: |
# 运行打包 Maven 项目的命令
mvn -DskipTests package # 步骤:上传 ZIP 构件
- name: Upload ZIP Artifact
uses: actions/upload-artifact@v3
with:
name: project
retention-days: 90
path: |
target/*

3. 如何找到GitHub Actions

3.1 找到你的GitHub仓库

3.2 提交你的workflow文件

在项目根路径建立/.github/workflows文件夹,并在这个路径下放置你的yaml构建脚本

3.3 等待GitHub Actions构建完成

4. Actions MarketPlace

如果你对于一些不会写的构建过程,你可以到Actions MarketPlace找到对应的构建脚本并直接使用。

https://github.com/marketplace?type=actions

附录

官方中文GitHub Actions文档

https://docs.github.com/zh/actions

GitHub Actions CI/CD 工作流实战的更多相关文章

  1. Github原生CI/CD,初尝Github Actions

    Github 原生 CI/CD,初尝 Github Actions Intro Github 目前已经推出了自己的 CICD 服务 -- Github Actions,而且比微软的 Azure Dev ...

  2. 技术番外篇丨Github Action CI/CD

    起源 看到.Net群里再聊CI/CD,我就这里分享一下我目前自己一些小东西的做法,我目前在Github有一个自己私有的组织,里面存放了我的部分商业化项目,早期我采用Jenkins用Webhooks进行 ...

  3. Docker: Jenkins与Docker的自动化CI/CD流水线实战

    什么是CI/CD 持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈.持续部署(Continuous Deployme ...

  4. 使用 GitHub Actions 实现 Hexo 博客自动部署

    一.Hexo 相关知识点 静态博客简单,但是发布博文时稍显麻烦,一般需要下面两步: hexo clean hexo g -d // 相当于 hexo g + hexo d 如果考虑到同步源文件,还需要 ...

  5. GitHub Actions

    GitHub Actions CI/CD & testing https://github.com/features/actions refs xgqfrms 2012-2020 www.cn ...

  6. Github Packages和Github Actions实践之CI/CD

    概述 Github在被微软收购后,不忘初心,且更大力度的造福开发者们,推出了免费私有仓库等大更新.近期又开放了packages和actions两个大招,经笔者试用后感觉这两个功能配合起来简直无敌. G ...

  7. 如何在 Jenkins CI/CD 流水线中保护密钥?

    CI/CD 流水线是 DevOps 团队软件交付过程的基本组成部分.该流水线利用自动化和持续监控来实现软件的无缝交付.通过持续自动化,确保 CI/CD 流水线每一步的安全性非常重要.在流水线的各个阶段 ...

  8. GitHub Actions 完成CI CD

    在之前我的部署.版本控制.CI.CD都是在Jenkins 下来完成的 在前几天看到github上的一个新玩具actions,简直惊为天人 它能在你的仓库触发事件(Push,Pull,issue,... ...

  9. 使用.NET 6开发TodoList应用(31)——实现基于Github Actions和ACI的CI/CD

    系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求和目标 在这个系列的最后一节中,我们将使用GitHub Actions将TodoList应用部署到Azure Container ...

  10. Jenkins CI&CD 自动化发布项目实战(下篇)

    Jenkins CI&CD 自动化发布项目实战(下篇) 作者 刘畅 时间 2020-12-04 实验环境 centos7.5 主机名 ip 服务配置 软件 gitlab 172.16.1.71 ...

随机推荐

  1. SQL Server 2014 英文版安装教程

    安装过程如下 1. 点击setup开始安装. 2. 选择如下的全新安装. 3. 自动生成产品密钥,然后点击下一步. 4. 勾选接受条款,然后点击下一步. 5. 自动更新根据实际情况进行选择,点击下一步 ...

  2. 500行代码手写docker开篇-goland远程编译环境配置

    (1)500行代码手写docker开篇-goland远程编译环境配置 本系列教程主要是为了弄清楚容器化的原理,纸上得来终觉浅,绝知此事要躬行,理论始终不及动手实践来的深刻,所以这个系列会用go语言实现 ...

  3. es 笔记二之基础查询

    本文首发于公众号:Hunter后端 原文链接:es笔记二之基础查询 这一篇笔记介绍 es 的基础查询. 基础查询包括很多,比如排序,类似数据库 limit 的操作,like 操作,与或非等,对于这些操 ...

  4. 基于Spark的大规模日志分析

    摘要:本篇文章将从一个实际项目出发,分享如何使用 Spark 进行大规模日志分析,并通过代码演示加深读者的理解. 本文分享自华为云社区<[实战经验分享]基于Spark的大规模日志分析[上进小菜猪 ...

  5. asp.net程序通过Microsoft Azure令牌授予流获取UserInfo终结点实现单点登录--隐式授予流(OIDC协议)

    1. Microsoft Azure令牌授予流 令牌授予流种类如下: 本章节采用: 隐式授予流: 2. 隐式授予流的实现 流程:重定向到authorize--->拿到access_token-- ...

  6. Mysql基础篇(三)之多表查询

    一. 多表关系 一对多(多对一) 多对一 一对一 1. 一对多 (1). 案例:部门与员工的关系 (2). 关系:一个部门对应多个员工,一个员工对应一个部门 (3). 实现:在多的一方建立外建,指向一 ...

  7. Python单元测试之道:从入门到精通的全面指南

    在这篇文章中,我们会深入探讨Python单元测试的各个方面,包括它的基本概念.基础知识.实践方法.高级话题,如何在实际项目中进行单元测试,单元测试的最佳实践,以及一些有用的工具和资源 一.单元测试重要 ...

  8. 反汇编分析C语言

    环境 VC6.0环境 空函数反汇编 #include "stdafx.h" void function(){ } int main(int argc, char* argv[]) ...

  9. 学习 YAML 语法

    符号 意义 备注 - 表示数组 数组也叫序列 # 表示注释 只支持单行注释 空格缩进 表示层级关系 相同层级左侧必须对齐 --- 表示一份内容的开始 ... 表示一份内容的结束 可省略 : 表示键值对 ...

  10. docker 镜像与容器存储目录结构

    目录列表及大小示例-20220314 root@dewan01:/var/lib/docker# du -sh * 88K buildkit 72K containers 884K image 60K ...