120、主动化摆设:使用GitHub Actions和GitLab CI/CD实现连续集成与连续交付

[复制链接]
发表于 2026-2-11 03:42:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Rust连续集成与连续摆设(CI/CD):使用GitHub Actions、GitLab CI/CD等工具实现主动化构建、测试和摆设

弁言

连续集成(Continuous Integration,CI)和连续摆设(Continuous Deployment,CD)是软件开发中非常紧张的环节。通过连续集成和连续摆设,可以实当代码的主动化构建、测试和摆设,从而进步开发服从、低落风险和资源。本文将先容怎样使用GitHub Actions和GitLab CI/CD等工具实现Rust项目标主动化构建、测试和摆设。
连续集成与连续摆设的概念

在先容怎样实现Rust项目标连续集成和连续摆设之前,我们先来明白一下这两个概念。
连续集成

连续集成是指在软件开发过程中,开发职员不停地将新的代码提交到代码堆栈中,然后主动构建、测试代码,以确保代码的质量和功能精确性。连续集成的目标是让代码的集成过程更加简朴、快速和可靠。
连续摆设

连续摆设是连续集成的下一步,它是指在连续集成的根本上,将通过测试的代码主动摆设到生产情况中。连续摆设的目标是让软件的发布过程更加主动化、快速和可靠。
GitHub Actions和GitLab CI/CD简介

GitHub Actions

GitHub Actions是GitHub提供的连续集成和连续摆设服务。它允许开发职员在GitHub堆栈中编写YAML设置文件,界说主动化构建、测试和摆设的过程。GitHub Actions支持多种编程语言,包罗Rust。
GitLab CI/CD

GitLab CI/CD是GitLab自带的连续集成和连续摆设工具。它也允许开发职员在GitLab堆栈中编写设置文件,界说主动化构建、测试和摆设的过程。GitLab CI/CD同样支持多种编程语言,包罗Rust。
Rust项目标连续集成与连续摆设

接下来,我们将分别使用GitHub Actions和GitLab CI/CD来实现Rust项目标连续集成与连续摆设。
使用GitHub Actions实现Rust项目标连续集成与连续摆设


  • 创建堆栈:起首,在GitHub上创建一个新的Rust项目堆栈。
  • 编写Cargo.toml:在堆栈根目次下创建Cargo.toml文件,界说项目标依靠和特性。
  • 编写代码:在堆栈中编写Rust代码。
  • 创建.github/workflows/ci.yml:在堆栈的.github目次下创建一个名为ci.yml的YAML设置文件,界说连续集成和连续摆设的过程。
示例:.github/workflows/ci.yml
  1. name: CI
  2. on:
  3.   push:
  4.     branches: [ main ]
  5.   pull_request:
  6.     branches: [ main ]
  7. jobs:
  8.   build:
  9.     runs-on: ubuntu-latest
  10.     steps:
  11.     - uses: actions/checkout@v2
  12.     - name: Set up Rust
  13.       uses: actions/setup-rust@v1
  14.       with:
  15.         rust-version: '1.52.1'
  16.     - name: Cache dependencies
  17.       uses: actions/cache@v2
  18.       with:
  19.         path: target
  20.         key: rust-${{ hashFiles('**/Cargo.toml') }}
  21.         restore-keys: |
  22.           rust-${{ hashFiles('**/Cargo.toml') }}
  23.     - name: Build
  24.       run: cargo build --release
  25.     - name: Test
  26.       run: cargo test
  27.     - name: Lint
  28.       run: cargo clippy --all-features -- -D warnings
  29.     - name: Deploy
  30.       if: github.event_name == 'push'
  31.       run: |
  32.         curl https://sh.rustup.rs -sSf | sh -s -- -y
  33.         source "$HOME/.cargo/env"
  34.         cargo publish
复制代码
在这个示例中,我们界说了一个名为CI的 workflow,它在发生push或pull_request事故时触发。workflow中界说了一个名为build的job,它会在Ubuntu最新版本上运行。在build job中,我们起首查抄代码堆栈,然后设置Rust版本,接着缓存依靠项,然后构建、测试和格式化代码,末了摆设代码到Registry。### 使用GitLab CI/CD实现Rust项目标连续集成与连续摆设

  • 创建堆栈:起首,在GitLab上创建一个新的Rust项目堆栈。
  • 编写Cargo.toml:在堆栈根目次下创建Cargo.toml文件,界说项目标依靠和特性。
  • 编写代码:在堆栈中编写Rust代码。
  • 创建.gitlab-ci.yml:在堆栈的根目次下创建一个名为gitlab-ci.yml的YAML设置文件,界说连续集成和连续摆设的过程。
示例:.gitlab-ci.yml
  1. stages:
  2.   - build
  3.   - test
  4.   - deploy
  5. variables:
  6.   REGISTRY_URL: "https://registry.example.com"
  7.   PROJECT_NAME: "my-rust-app"
  8. before_script:
  9.   - rustup update
  10.   - rustup install ${RUST_VERSION}
  11.   - source "$HOME/.cargo/env"
  12. build_job:
  13.   stage: build
  14.   script:
  15.     - cargo build --release
  16.   artifacts:
  17.     paths:
  18.       - target/release/${PROJECT_NAME}
  19.     expire_in: 1 week
  20. test_job:
  21.   stage: test
  22.   script:
  23.     - cargo test
  24. deploy_job:
  25.   stage: deploy
  26.   script:
  27.     - curl --silent --show-error --retry 5 https://sh.rustup.rs -sSf | sh -s -- -y
  28.     - source "$HOME/.cargo/env"
  29.     - cargo publish --registry ${REGISTRY_URL}
  30.   only:
  31.     - master
复制代码
在这个示例中,我们界说了一个名为build、test和deploy的stages。我们还为项目设置了一些变量,如注册表URL和项目名称。在before_script部门,我们更新了Rust版本并将其设置为情况变量。在build_job部门,我们构建了项目标release版本,并将其作为artifact生存。在test_job部门,我们运行了测试。在deploy_job部门,我们发布了项目到指定的注册表。
总结

通过使用GitHub Actions和GitLab CI/CD,我们可以轻松地实现Rust项目标连续集成与连续摆设。这不光可以进步开发服从,还可以低落发布风险。渴望本文可以或许资助你相识怎样使用这些工具来主动化你的Rust项目标构建、测试和摆设过程。## 实用本事和案例
1. 使用情况变量

在GitHub Actions和GitLab CI/CD中,情况变量黑白常有用的工具,它们可以资助你在差异的情况中保持同等性,而不必要在代码中硬编码敏感信息。比方,你可以使用情况变量来存储你的API密钥大概摆设暗码。
示例:在GitHub Actions中使用情况变量

在ci.yml中,你可以如许设置情况变量:
  1. env:
  2.   REGISTRY_URL: "https://registry.example.com"
  3.   PROJECT_NAME: "my-rust-app"
复制代码
在GitHub Actions的工作流运行期间,你可以通过${{ env.REGISTRY_URL }}来引用这些情况变量。
示例:在GitLab CI/CD中使用情况变量

在gitlab-ci.yml中,你可以如许设置情况变量:
  1. variables:
  2.   REGISTRY_URL: "https://registry.example.com"
  3.   PROJECT_NAME: "my-rust-app"
复制代码
在GitLab CI/CD的作业中,你可以通过$REGISTRY_URL和$PROJECT_NAME来引用这些情况变量。
2. 并行运行作业

在某些情况下,你大概想要并行运行多个作业以进步构建、测试和摆设的速率。在GitHub Actions和GitLab CI/CD中,你可以通过在设置文件中界说多个并列的作业来实现这一点。
示例:在GitHub Actions中并行运行作业
  1. jobs:
  2.   - name: Build
  3.     runs-on: ubuntu-latest
  4.     steps:
  5.     - uses: actions/checkout@v2
  6.     - name: Set up Rust
  7.       uses: actions/setup-rust@v1
  8.       with:
  9.         rust-version: '1.52.1'
  10.     - name: Cache dependencies
  11.       uses: actions/cache@v2
  12.       with:
  13.         path: target
  14.         key: rust-${{ hashFiles('**/Cargo.toml') }}
  15.         restore-keys: |
  16.           rust-${{ hashFiles('**/Cargo.toml') }}
  17.     - name: Build
  18.       run: cargo build --release
  19.     # 其他步骤...
  20.   - name: Test
  21.     runs-on: ubuntu-latest
  22.     steps:
  23.     - uses: actions/checkout@v2
  24.     - name: Set up Rust
  25.       uses: actions/setup-rust@v1
  26.       with:
  27.         rust-version: '1.52.1'
  28.     - name: Cache dependencies
  29.       uses: actions/cache@v2
  30.       with:
  31.         path: target
  32.         key: rust-${{ hashFiles('**/Cargo.toml') }}
  33.         restore-keys: |
  34.           rust-${{ hashFiles('**/Cargo.toml') }}
  35.     - name: Test
  36.       run: cargo test
  37.     # 其他步骤...
复制代码
在GitLab CI/CD中,你可以通过在.gitlab-ci.yml中使用&符号来并行运行作业:
  1. stages:  - build  - testvariables:
  2.   REGISTRY_URL: "https://registry.example.com"
  3.   PROJECT_NAME: "my-rust-app"
  4. build_job:  stage: build  script:    - cargo build --release  artifacts:    paths:      - target/release/${PROJECT_NAME}    expire_in: 1 weektest_job:  stage: test  script:    - cargo testbuild_&_test_job:  stage: build  script:    - cargo build --release  only:    - mastertest_&_deploy_job:  stage: test  script:    - cargo test  only:    - master
复制代码
3. 使用Artifacts存储构建结果

在GitHub Actions和GitLab CI/CD中,你可以使用artifacts关键字来存储构建、测试或其他步调天生的文件。这些文件可以用于后续的摆设步调。
示例:

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表