使用Github Action来辅助项目管理

github,action · 浏览次数 : 0

小编点评

GitHub Actions 是一个强大的持续集成和持续交付(CI/CD)工具,它可以帮助您自动化软件开发工作流程,确保代码质量和流程规范化。以下是 GitHub Actions 的一些主要功能: 1. **代码审查**:GitHub Actions 可以检查代码是否符合项目规范,例如代码风格、空格、缩进等。 2. **自动化测试**:在代码提交后,GitHub Actions 可以自动运行测试用例,确保代码更改不会影响应用程序的功能。 3. **构建和部署**:GitHub Actions 可以将源代码构建为可执行文件,并将其部署到测试或生产环境中。 4. **静态代码分析**:GitHub Actions 可以运行静态代码分析工具,如 SonarQube,以检测代码中的潜在错误和安全漏洞。 5. **通知和报告**:GitHub Actions 可以在关键事件发生时发送电子邮件或 Slack 通知,以便团队成员了解项目进展。 以下是一个简单的 YAML 配置示例,用于在 GitHub Actions 中构建和部署 Java 应用程序: ```yaml name: Java CI with Gradle on: push: branches: - main jobs: build-and-deploy: 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 - 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..." ``` 对于 Java 8 项目,您还需要添加代码静态检查、代码风格检查和 SonarLint 检查。以下是一个示例 YAML 配置,用于在 GitHub Actions 中添加这些检查: ```yaml name: Java CI with Gradle, SonarQube, and FindBugs on: push: branches: - main 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 - 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..." ``` 请注意,上述配置示例仅供参考,您可能需要根据您的具体项目和需求进行调整。

正文

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

使用 GitHub Action 自动更新 Sealos 集群的应用镜像

在 IT 领域,自动化无疑已成为提高工作效率和减少人为错误的关键。Sealos 作为一个强大的云操作系统,已经为许多企业和开发者提供了稳定可靠的服务。与此同时,随着技术不断发展,集成更多的功能和服务变得尤为重要。考虑到这一点,本文将介绍如何利用 GitHub Action 来进一步丰富 Sealos

【Azure Developer】在Github Action中使用Azure/functions-container-action@v1配置Function App并成功部署Function Image

问题描述 使用Github Action,通过 Azure/functions-container-action@v1 插件来完成 yaml 文件的配置,并成功部署Function Image 的过程记录。 操作步骤 第一步: 准备Function的镜像文件 如在VS Code中,通过Termina

04.使用 github actions+docker 自动部署前后端分离项目 zhontai (.net core+vue)

本文将分享使用 GitHub Actions 完成对一个.Net Core+Vue 的前后端分离项目 zhontai 的构建,并使用 docker 部署到云服务器(阿里云),及对docker部署.Net Core+Vue的一些经验分享。

【Azure Developer】Github Action使用Azure/login@v1插件登录遇见错误的替代方案

问题描述 在使用 Github Action - Azure/login@v1 的插件时候,登录中国区Azure遇见了问题。 Login YAML 内容: - name: 'Login via Azure CLI' uses: Azure/login@v1.4.6 with: creds: ${{

使用rem、动态vh自适应移动端

前言 这是我的 模仿抖音 系列文章的第六篇 第一篇:200行代码实现类似Swiper.js的轮播组件 第二篇:实现抖音 “视频无限滑动“效果 第三篇:Vue 路由使用介绍以及添加转场动画 第四篇:Vue 有条件路由缓存,就像传统新闻网站一样 第五篇:Github Actions 部署 Pages、同

【好玩】如何在github主页放一条贪吃蛇

本文通过github主页加入提交记录贪吃蛇为引,拓展分析了如何在github设置主页,并将提交记录生成贪吃蛇动画,以及github中action使用及如何运行workflow等。

Github Fork仓库的冲突与同步管理

在使用Github进行协作开发时,fork一个仓库并在本地进行开发是常见的工作流程。然而,当源仓库(上游仓库)有了更新时,如何同步这些更新并解决可能的合并冲突是一个关键问题。本文将详细介绍如何管理这些操作。 步骤一:Fork并克隆仓库 首先,fork你感兴趣的源仓库,并将其克隆到本地: git cl

【译】使用 GitHub Copilot 作为你的编码 GPS

GitHub Copilot 是一个改变游戏规则的人工智能助手,可以彻底改变您在 Visual Studio 中的编码流程。在我们的视频系列中,Bruno Capuano 探讨了这个智能编码伙伴如何帮助您更有效地编写代码,同时保持质量和准确性。 Copilot:是助手,而不是替代品 Bruno 强调

五分钟教你使用GitHub寻找优质项目

前言 经常会有同学会问如何使用GitHub找到自己想要的项目,今天咱们就出一期快速入门教程五分钟教你使用GitHub寻找优质项目。GitHub作为世界上最大的项目开源平台之一,上面有着无数优质的开源项目。善于使用它能够让你获得很多意想不到的惊喜。 首先解决访问慢的问题 FastGithub是GitH