CI/CD 基础知识

CI/CD 基础知识

持续集成Continuous Integration (CI) + 持续交付Continuous Delivery (CD)

持续集成:软件开发团队成员经常整合他们各自的工作。
持续交付: 频繁地按照流水线生产软件,以确保软件可以随时可靠地发布。

我们为什么要使用 CI/CD?
• 可以随时获得最新的集成软件。
• 无需等待单个组件的开发完成。
• 在任何时候,您都可以看到软件开发的状态。

两个重要方面:
• 构建自动化
• 测试自动化

工作流程
• 工作流是您将定义的可配置自动化过程。
• 必须在存储库的.github/workflows 目录中定义工作流。
活动
• 事件是存储库中触发工作流运行的特定活动。
• 例如,事件可以是“拉取请求”或“将提交推送到主分支”
工作
• 作业是在同一运行器上执行的一组工作流步骤。
• 每个步骤要么是将要执行的shell 脚本,要么是将要运行的预定义操作。
运行
• 运行器是在触发时运行您的工作流的服务器。
• GitHub 提供Ubuntu Linux、Microsoft Windows 和macOS 运行器。

第 1 部分:设置
这部分是搭建自己的repository,了解repository中的代码。
第 1 步:克隆您的存储库
首先,将此存储库克隆到您的本地计算机.
第二步:看代码

src/main/java/example/project/Main.java

a class including a simple main function.

src/test/java/example/project/TestMain.java

a class including a simple test case for the main function.

pom.xml

a maven configuration file.

第 3 步:在本地计算机上运行 maven 命令(mvn package)

第 2 部分:GitHub CI/CD
在第 1 部分中,您确认项目使用给定的 maven 配置文件正确构建和测试。但是,您必须手动运行命令 mvn package 来确认这一点。现在,我们将使用 GitHub CI/CD 管道将其自动化。这意味着,只要满足特定的触发条件,预定义的工作流就会自动在 CI/CD 管道上运行,并会在出现任何问题时告诉您。

第 1 步:检查工作流程
我已经在模板存储库中创建了一个工作流程。工作流在 .github/workflows/maven.yml 中定义。让我们来看看吧。

name: Java CI with Maven

on:
  push:
    branches: [ "main" ]

jobs:
  build-and-test:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Set up JDK 11
      uses: actions/setup-java@v3
      with:
        java-version: 11
        distribution: 'temurin'
        cache: maven
    - name: Build with Maven
      run: mvn -B package

第 2 步:更新工作流以在使用不同 JDK 的不同机器上运行
让我们更进一步。实际上,用户可能拥有不同的 JDK 版本是很常见的。我们想确保我们的代码是否可以在具有不同 JDK 的不同机器上正常运行。

(任务)我们想为不同的配置组合运行相同的工作流程。具体来说,两个 JDK 版本(11 和 17)和两种机器类型(Ubuntu 和 MacOS)。更新 .github/workflows/maven.yml 以实现此目的。最后,我们希望看到以下结果。

name: Java CI with Maven

on:
  push:
    branches: [ "main" ]

jobs:
  build-and-test:

    strategy:
      matrix:
        jdk_version: ['11', '17']
        machine: ['ubuntu-latest', 'macos-latest']
        
    runs-on: ${{ matrix.machine }}

    steps:
    - uses: actions/checkout@v3
    - name: Set up JDK ${{ matrix.jdk_version }}
      uses: actions/setup-java@v3
      with:
        java-version: ${{ matrix.jdk_version }}
        distribution: 'temurin'
        cache: maven
    - name: Build with Maven
      run: mvn -B package
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值