使用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.commit 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

相关推荐
ZHOU_WUYI7 小时前
3.langchain中的prompt模板 (few shot examples in chat models)
人工智能·langchain·prompt
lsjweiyi10 小时前
极简AI工具箱网站开源啦!
opencv·开源·微信支付·支付宝支付·百度ai·极简ai工具箱·ai图像处理
开源社11 小时前
一场开源视角的AI会议即将在南京举办
人工智能·开源
FreeIPCC11 小时前
谈一下开源生态对 AI人工智能大模型的促进作用
大数据·人工智能·机器人·开源
海害嗨11 小时前
阿里巴巴官方「SpringCloudAlibaba全彩学习手册」限时开源!
学习·开源
生命是有光的11 小时前
【开源风云】从若依系列脚手架汲取编程之道(八)
开源
Stara051112 小时前
Git推送+拉去+uwsgi+Nginx服务器部署项目
git·python·mysql·nginx·gitee·github·uwsgi
龙的爹233313 小时前
论文翻译 | RECITATION-AUGMENTED LANGUAGE MODELS
人工智能·语言模型·自然语言处理·prompt·gpu算力
HuggingFace13 小时前
Halo 正式开源: 使用可穿戴设备进行开源健康追踪
开源·健康追踪
不能只会打代码16 小时前
大学课程项目中的记忆深刻 Bug —— 一次意外的数组越界
java·github·intellij-idea·话题博客