Github action 是一个Github官方提供的非常流行且速度集成 持续集成和持续交付(CI/CD)的工具。它允许你在GitHub仓库中自动化、定制和执行你的软件开发工作流。你可以发现、创建和分享用于执行任何你想要的工作的操作,包括CI/CD,并在完全定制的工作流中组合操作。

持续集成需要做如下的工作:就拿我们公司来讲,有一个很严格和规范的流程来卡主开发提交代码并check其工作流来保证代码的质量和流程的规范化运作,这也是属于项目管理的一部分,并通过长期实践已融入血液中。

先来看看github actions都有哪些功能吧:AI时代不懂的问KIMI Prompt:
(一)假设你是一位github action持续集成专家,我有几个关于action actions的问题想向你咨询
(二)github action是什么,请简单介绍一下
(三)实际工作中都有哪些CI/CD的流程可以借鉴和使用github actions
(四)请结合一个实际软件项目案例来帮我简要分析下实施过程中github actions扮演的角色和重要的功能,要求逻辑清晰,简洁,分条罗列要点,字数不超过500字,语言生动有趣富有表现力
(五)请结合实际项目,说几个实用型的github actions的功能并给出解决方案
(六)在持续集成功能中具体可以做哪些工作并给出yaml配置信息
(七)假定我在做一个Java持续集成的项目请给出github actions的yaml配置信息 {此条prompt写的不太清晰}
(八)假定我在做一个Java8的基于Gradle构建的持续集成的项目请给出github actions的yaml配置信息,需要添加代码静态检查,code style, SonarLint和SonarQube检查,findbugs检查并发现issue邮件通知联系人功能
我挑选了一个我相对满意的KIMI输出的例子:

让我们以一个流行的开源项目——一个名为“GreenThumb”的智能植物监测应用为例,来看看GitHub Actions如何成为这个项目不可或缺的超级助手:

代码守卫:每当开发者提交代码,GitHub Actions 就像一个严格的门卫,立即检查代码是否遵循项目规范。

自动化测试员:它启动自动化测试,确保代码更改不会影响应用的智能监测功能,就像园丁确保植物健康成长。

构建工匠:通过构建流程,GitHub Actions 将源代码转化为用户可以下载和安装的应用程序,就像将原材料加工成精美的工艺品。

安全侦探:它使用安全扫描工具,寻找代码中的潜在漏洞,保护应用免受恶意攻击,就像侦探寻找线索。

部署向导:一旦代码通过所有检查,GitHub Actions 将其部署到测试和生产环境,就像向导带领游客到达目的地。

文档编辑:它自动更新项目文档,为新贡献者提供清晰的指导,就像图书馆里的索引系统。

沟通大使:在关键步骤完成后,GitHub Actions 通过电子邮件、Slack等渠道发送通知,确保团队成员及时了解项目进展,就像宴会上的传令官。

版本发布者:它根据版本控制策略自动发布新版本,简化了发布流程,就像酒庄定期推出新酿的葡萄酒。

GitHub Actions 在GreenThumb项目中扮演了多面手的角色,从代码提交到应用发布,每一步都确保流程的顺畅和高效,就像一个精心编排的交响乐团,每个成员都发挥着关键作用。

  

其中的第六点kimi也给出了代码:

name: Continuous Integration

on: [push, pull_request]

jobs:
build-and-test:
runs-on: ubuntu-latest steps:
- name: Checkout code
uses: actions/checkout@v2 - name: Install dependencies
run: npm install - name: Run tests
run: npm test - name: Lint code
run: npm run lint - name: Build project
run: npm run build - name: Upload build artifacts
uses: actions/upload-artifact@v2
with:
name: build
path: dist/ - name: Deploy to test environment
if: success() # Only run if all previous steps succeeded
run: |
# Deploy script or command goes here
echo "Deploying to test environment..." - name: Send notification
if: failure()
run: |
# Notification script or command goes here
echo "Sending failure notification..."

  第八点KIMI的答案:

name: Java CI with Gradle, SonarQube, and FindBugs

on: [push, pull_request]

jobs:
build-and-analyze:
runs-on: ubuntu-latest steps:
- name: Checkout source code
uses: actions/checkout@v2 - name: Set up JDK 8
uses: actions/setup-java@v2
with:
java-version: '8'
distribution: 'adopt' - name: Cache Gradle packages
uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
restore-keys: ${{ runner.os }}-gradle- - name: Install dependencies
run: gradle dependencies - name: Run Checkstyle for code style
run: gradle checkstyleMain - name: Run SonarQube analysis
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: |
gradle sonarqube
# 确保替换下面的URL为你的SonarQube服务器URL
# sonar-scanner -Dsonar.projectKey=your_project_key -Dsonar.host.url=https://your.sonarqube.server - name: Run FindBugs
run: gradle findbugsMain - name: Build project
run: gradle build - name: Upload build artifact
uses: actions/upload-artifact@v2
with:
name: java-app
path: build/libs/*.jar - name: Deploy
if: success() && github.ref == 'refs/heads/main'
run: |
# 这里添加你的部署脚本或命令
echo "Deploying application..." - name: Send email notification on issue
if: failure()
env:
EMAIL_ADDRESS: ${{ secrets.EMAIL_ADDRESS }}
EMAIL_SERVER: ${{ secrets.EMAIL_SERVER }}
EMAIL_PORT: ${{ secrets.EMAIL_PORT }}
EMAIL_USERNAME: ${{ secrets.EMAIL_USERNAME }}
EMAIL_PASSWORD: ${{ secrets.EMAIL_PASSWORD }}
run: |
# 这里添加发送邮件的脚本或命令
# 可以使用像curl这样的命令行工具来发送邮件
echo "Sending email notification to ${EMAIL_ADDRESS}"
# 以下是一个使用curl发送邮件的示例
# curl ... --mail-from ... --mail-rcpt ... -F ...

  

但是这次和00后的小朋友一起合作的Web3 黑客松项目(https://github.com/Sifotd)
我就发现项目管理中的诸多问题,由于前期他们还没有养成提交代码规范化写commit message的习惯,胡乱写一堆message ,真让人抓狂,人在项目中是不可控因素,那这应该是需要从流程的角度去hold住。

首先还是来看下需求,需要github action做哪些工作, github action的原理是什么,原理决定了哪些需求可做哪些不可做,可做的如何实现,不可做的需要用什么别的替代方案来做到。后期如何丝滑和贯彻落实,落实之后要建立反馈机制在下一个迭代周期中完善和改进。改进了还不行,需要把实践的东西上升为形而上的方法论去不断精进,唯独这样才能把工匠精神落到实处,在不断耕耘中收货成功的种子 。

让github workflow来为我实现如下需求,整理如下:
1.github action可以做自动化部署
2.Check comment message check
3.代码质量静态检查,代码风格检查

下期结合实际问题来编写yaml代码并一一落地,并结合实际来验证KIMI给出的答案可行性和落地效果。这是个令人兴奋的工作,有了它能持续精进和打磨团队,让其高效而有质量的产出。流程和效率是一个相互博弈的过程,需要根据实际情况来辩证看待!
参考文章:
GitHub Actions - The Complete Guide
https://www.udemy.com/course/github-actions-the-complete-guide/
如何使用 GitHub Actions 实现开源项目的自动化
https://www.freecodecamp.org/chinese/news/automate-open-source-projects-with-github-actions/
Github action 博客自动化部署:https://frostming.com/2020/04-26/github-actions-deploy/
https://www.freecodecamp.org/chinese/news/automate-open-source-projects-with-github-actions/
10 个你该了解的 GitHub Actions 进阶技巧
https://cloud.tencent.com/developer/article/1782556

使用Github Action来辅助项目管理的更多相关文章

  1. GitHub Action一键部署配置,值得拥有

    最近由于自己的个人应用增加,每次都需要在服务器手动发布,觉得特别麻烦,所以想通过代码控制自动发布,直接选择了GitHub Action. GitHub Action持续集成服务,目前已经免费开放使用, ...

  2. 编写自己的 GitHub Action,体验自动化部署

    本文将介绍如何使用 GitHub Actions 部署前端静态页面,以及如何自己创建一个 Docker 容器 Action. 简介 Actions GitHub Actions 是 GitHub 官方 ...

  3. 你知道什么是 GitHub Action 么?

    本文是 GitHub Action 的入门教程,如您已有相关使用经验可以直接关掉. GitHub Action 是 GitHub 于 2018 年 10 月推出的一个 CI\CD 服务. 之前一直都是 ...

  4. 用 GitHub Action 构建一套 CI/CD 系统

    ​ 缘起 Nebula Graph 最早的自动化测试是使用搭建在 Azure 上的 Jenkins,配合着 GitHub 的 Webhook 实现的,在用户提交 Pull Request 时,加个 r ...

  5. Github Action 快速上手指南

    前言 各位读者,新年快乐,我是过了年匆忙赶回上海努力搬砖的蛮三刀. Github之前更新了一个Action功能(应该是很久以前了),可以实现很多自动化操作.用来替代用户自己设置的自动化脚本(比如:钩子 ...

  6. 【Azure Developer】Github Action部署资源(ARM模板)到Azure中国区时,遇见登录问题的解决办法

    问题描述 在参考文档"使用 GitHub Actions 部署 ARM 模板"一文中,由于是在中国区Azure上操作,所以生产的部署凭证为中国区凭证.当创建工作流时,在登录到Azu ...

  7. 使用CI/CD工具Github Action发布jar到Maven中央仓库

    之前发布开源项目Payment Spring Boot到Maven中央仓库我都是手动执行mvn deploy,在CI/CD大行其道的今天使用这种方式有点"原始".于是我一直在寻求一 ...

  8. 两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库

    两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库 1.GitHub Actions 是什么? 大家知道,持续集成由很多操作组成,比如抓取代码.运行测试. ...

  9. hexo配合github action 自动构建(多种形式)

    已经使用HEXO正常构建GitHub页面 根据github action 给hexo配置自动部署github page 前往墨抒颖的个人网站查看纯净版 1. 为仓库设置访问密钥 第一步先生成密钥,打开 ...

  10. 使用GitHub Action进行打包并自动推送至OSS

    GitHub Action 是 GitHub 于 2018 年 10 月推出的一个 CI\CD 服务. 官方文档:https://docs.github.com/cn/actions CI\CD 持续 ...

随机推荐

  1. LSP(Language Server Protocol)简介

    概述 Language Server Protocol(LSP)是微软2016年提出的一项通讯协议方案.该方案定义了一套协议,用于在IDE或编辑器和提供代码补全.转到定义等功能的Language Se ...

  2. pandas:时间序列数据的周期转换

    时间序列数据是数据分析中经常遇到的类型,为了更多的挖掘出数据内部的信息,我们常常依据原始数据中的时间周期,将其转换成不同跨度的周期,然后再看数据是否会在新的周期上产生新的特性. 下面以模拟的K线数据为 ...

  3. sql计算列中并非零值的平均值

    avg不考虑空值 AVG (NULLIF(Value, 0)) NULLIF(expression, expression) 如果两个 expression 相等,则返回 NULL,该 NULL 为第 ...

  4. LVS负载均衡(2)-- NAT模型搭建实例

    目录 1. LVS NAT模型搭建 1.1 NAT模型网络规划 1.2 NAT模型访问流程 1.3 NAT模型配置步骤 1.3.1 ROUTER设备配置 1.3.2 后端nginx服务器配置 1.3. ...

  5. make编译报错:fatal error: filesystem: 没有那个文件或目录 #include <filesystem>

    报错: fatal error: filesystem: 没有那个文件或目录 #include(filesystem) 解决方法一: 修改头文件 #include <experimental/f ...

  6. vue特殊attribute-key

    官方说明:如果不使用 key,Vue 会使用一种最大限度减少动态元素并且尽可能的尝试就地复用相同类型元素的算法.而使用 key 时,它会基于 key 的变化重新排列元素顺序,并且会移除 key 不存在 ...

  7. C++ 资源大全:标准库、Web框架、人工智能等 | 最全整理

    C++ 资源列表,内容包括: 标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等 目录 进程间通信 Json 日志 机器学习 数学 内存分配 多媒体 网络 PDF 物理学 ...

  8. 泊松盘采样(Poisson Disk Sampling)生成均匀随机点

    当需要生成随机点且要求随机点自然均匀的分布时,使用泊松盘采样就较为适合. 但该方法与统计学上的概念关联不大,这个只相当于点在面积上服从泊松分布, 而实现这个结果有很多做法. 最终效果: 圆形为含半径的 ...

  9. C 语言编程 — 高级数据类型 — 枚举

    目录 文章目录 目录 前文列表 声明枚举类型 定义枚举类型的变量 枚举类型变量的枚举值 枚举在 switch 语句中的使用 将整型转换为枚举类型 前文列表 <程序编译流程与 GCC 编译器> ...

  10. AIRIOT大学计划暑期训练营圆满结束,产教融合培养物联网产业人才

    ​ 为促进物联网产业的纵深发展和创新,推进教育链.产业链与创新链的有机衔接,提高学生理论.实践和创新能力,7月3日-7月28日,由航天科技控股集团股份有限公司(简称"航天科技")开 ...