使用Github Action来辅助项目管理
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来辅助项目管理的更多相关文章
- GitHub Action一键部署配置,值得拥有
最近由于自己的个人应用增加,每次都需要在服务器手动发布,觉得特别麻烦,所以想通过代码控制自动发布,直接选择了GitHub Action. GitHub Action持续集成服务,目前已经免费开放使用, ...
- 编写自己的 GitHub Action,体验自动化部署
本文将介绍如何使用 GitHub Actions 部署前端静态页面,以及如何自己创建一个 Docker 容器 Action. 简介 Actions GitHub Actions 是 GitHub 官方 ...
- 你知道什么是 GitHub Action 么?
本文是 GitHub Action 的入门教程,如您已有相关使用经验可以直接关掉. GitHub Action 是 GitHub 于 2018 年 10 月推出的一个 CI\CD 服务. 之前一直都是 ...
- 用 GitHub Action 构建一套 CI/CD 系统
缘起 Nebula Graph 最早的自动化测试是使用搭建在 Azure 上的 Jenkins,配合着 GitHub 的 Webhook 实现的,在用户提交 Pull Request 时,加个 r ...
- Github Action 快速上手指南
前言 各位读者,新年快乐,我是过了年匆忙赶回上海努力搬砖的蛮三刀. Github之前更新了一个Action功能(应该是很久以前了),可以实现很多自动化操作.用来替代用户自己设置的自动化脚本(比如:钩子 ...
- 【Azure Developer】Github Action部署资源(ARM模板)到Azure中国区时,遇见登录问题的解决办法
问题描述 在参考文档"使用 GitHub Actions 部署 ARM 模板"一文中,由于是在中国区Azure上操作,所以生产的部署凭证为中国区凭证.当创建工作流时,在登录到Azu ...
- 使用CI/CD工具Github Action发布jar到Maven中央仓库
之前发布开源项目Payment Spring Boot到Maven中央仓库我都是手动执行mvn deploy,在CI/CD大行其道的今天使用这种方式有点"原始".于是我一直在寻求一 ...
- 两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库
两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库 1.GitHub Actions 是什么? 大家知道,持续集成由很多操作组成,比如抓取代码.运行测试. ...
- hexo配合github action 自动构建(多种形式)
已经使用HEXO正常构建GitHub页面 根据github action 给hexo配置自动部署github page 前往墨抒颖的个人网站查看纯净版 1. 为仓库设置访问密钥 第一步先生成密钥,打开 ...
- 使用GitHub Action进行打包并自动推送至OSS
GitHub Action 是 GitHub 于 2018 年 10 月推出的一个 CI\CD 服务. 官方文档:https://docs.github.com/cn/actions CI\CD 持续 ...
随机推荐
- 2021“MINIEYE杯”中国大学生算法设计超级联赛(1)
2021"MINIEYE杯"中国大学生算法设计超级联赛(1) 1001 Mod, Or and Everything 题意: 对于每次输入的数字n,求(n%1)|...(n%n)的 ...
- 【Python爬虫案例】用python爬1000条哔哩哔哩搜索结果
目录 一.爬取目标 二.讲解代码 三.同步讲解视频 四.完整源码 一.爬取目标 大家好,我是 @马哥python说 ,一名10年程序猿. 今天分享一期爬虫的案例,用python爬哔哩哔哩的搜索结果,也 ...
- 书生浦语大模型全链路开源体系-书生浦语大模型实战营学习笔记1&大语言模型2
大语言模型-2.书生浦语大模型全链路开源体系 书生浦语大模型实战营学习笔记-1.认识书生浦语大模型全链路开源体系 本系列随笔学习搬运第二期书生浦语大模型实战营的相关内容,通过使用InternLM的一套 ...
- iptables命令详解
安装iptables yum install iptables-services 编写允许访问的策略 vim /etc/sysconfig/iptables # sample configuratio ...
- ruby rails 批量插入数据,bulk_insert-----Gem包使用
Gemfile文件里添加 gem 'bulk_insert' #批量插入 命令行执行安装依赖 bundle install 数据源 ["1.180.3.187", 161, 260 ...
- Python基础篇(基础知识)
Python语言基础 pyc 文件 执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码. ...
- java学习之旅(day.18)
网络编程 概述 计算机网络:自己百度吧 网络编程的目的:传播交流信息.数据交换.通信 想要达到这个效果需要什么: 如何准确的定位网络上的一台主机 端口 定位到这个计算机上的某个资源 找到了这个主机,如 ...
- Metabase 安装和使用教程
Metabase 是一款开源的数据分析和商业智能工具,允许企业用户在几分钟内搭建起一个功能完善的数据探索和数据分析平台,不需要编写复杂的 SQL 查询语句或者使用专业的数据可视化工具,就可以轻松地探索 ...
- ansible使用详解
ansible执行,用户主机配置 免密同一个同一个用户执行命令 1 能免密登录的[root@mcw1 ~]$ ansible 10.0.0.132 -m shell -a "hostname ...
- sass 混合指令 (Mixin Directives)详解
混合指令(Mixin)用于定义可重复使用的样式,避免了使用无语意的 class,比如 .float-left.混合指令可以包含所有的 CSS 规则,绝大部分 Sass 规则,甚至通过参数功能引入变 ...