CAE对接GitHub Actions实现自动CICD部署
在现代软件开发流程中,持续集成和持续部署(CICD)是提高开发效率、保证软件质量的重要手段。将CAE与GitHub Actions进行对接,能够实现代码的自动化构建、测试和部署,极大地简化部署流程,减少人为错误,加快软件交付速度。
前提条件
- 已注册华为账号并开通华为云,并登录成功。
- 已在CAE控制台创建好项目、环境、应用和组件,并获取到相应的ID。请参考快速体验CAE来创建环境、应用和组件,请参考获取项目ID、区域ID、环境ID、应用ID和组件ID来获取ID信息。
- 在GitHub官网注册账号,并创建一个GitHub仓库,配置好代码版本管理。
- 生成并妥善保管华为云的访问密钥ID(Access Key ID,AK)和访问密钥(Secret Access Key,SK),在本章节中需要将其配置为GitHub仓库的Secrets。请参考如何获取访问密钥AK/SK来获取AK和SK。
- 已获取容器镜像服务的镜像仓库的登录指令,在本章节中需要将其配置为GitHub仓库的Secrets。请参考获取长期有效登录或推拉镜像指令获取登录指令。
CICD操作流程
CICD持续集成与交付的基本操作流程如下:

- 持续集成(CI):
- 当开发人员将代码推送到主分支(或指定分支)时,GitHub Actions会自动触发。
- 进行代码的构建,生成可部署的工件(如容器镜像)。对于容器化的应用,使用Dockerfile构建镜像,并将其推送到容器镜像仓库(如本章节的示例配置中的swr.me-east-1.myhuaweicloud.com)。
- 持续部署(CD):
- 在CI成功完成后,触发CD流程。
- 使用配置好的huaweicloud/cae-deploy@main插件,将构建好的镜像部署到指定的CAE环境中,并等待任务执行完成。
GitHub Actions插件配置参数说明
以下是配置参数的详细说明:
|
参数名称 |
参数说明 |
|---|---|
|
ak |
华为云的访问密钥ID(Access Key ID,AK),用于身份验证。 |
|
sk |
访问密钥ID对应的访问密钥(Secret Access Key,SK),用于身份验证。 |
|
project-id |
需要部署CAE组件对应的华为云账号的项目ID。 |
|
region-id |
华为云的区域ID。在本示例中的区域为me-east-1。 |
|
environment-id |
部署的目标环境ID。 |
|
application-id |
应用的ID。 |
|
component-id |
组件的ID。 |
|
image-address |
容器镜像的地址,用于指定要部署的镜像。 格式:swr.[区域项目名称].myhuaweicloud.com/[组织名称]/[镜像名称]:[版本名称],区域项目名称就是region-id。 在本章节的示例中,image-address为“swr.me-east-1.myhuaweicloud.com/demo-cae/cae-frontend:1.0.0”。 |
|
component-version |
组件的版本号,便于版本管理和回滚。 |
步骤一:配置GitHub Actions的Secrets
为了安全地使用访问密钥和其他敏感信息,需要在GitHub仓库中配置Secrets。
在本章节中,需要将访问密钥ID、访问密钥(Secret Access Key,SK)和镜像仓库的登录指令添加到GitHub Actions的Secrets中。
配置完成后,GitHub Actions在运行时就可以通过${{ secrets.HUAWEI_SECRET_ACCESS_KEY }}、${{ secrets. HUAWEI_SECRET_SECRET_KEY }}和${{ secrets. HUAWEI_DOCKER_SECRE }}来获取对应的敏感信息,而不会在配置文件中暴露这些信息。
- 进入GitHub仓库,单击页面上方的“Settings”页签。
- 在左侧导航栏中,单击“Secrets and variables”,然后选择“Actions”。
- 单击“New repository secret”创建名称为HUAWEI_SECRET_ACCESS_KEY的secret:
在“Name”字段中输入HUAWEI_SECRET_ACCESS_KEY,在“Secret ”字段中输入实际的华为云访问密钥ID,然后单击“Add secret”。
- 再次单击“New repository secret”创建名称为HUAWEI_SECRET_SECRET_KEY的secret:
在“Name”字段中输入HUAWEI_SECRET_SECRET_KEY,在“Secret ”字段中输入实际的华为云访问密钥,然后单击“Add secret”。
- 再次单击“New repository secret”创建名称为HUAWEI_DOCKER_SECRET的secret:
在“Name”字段中输入HUAWEI_DOCKER_SECRET,在“Secret ”字段中输入实际的SWR登录密钥,然后单击“Add secret”。
- 全部创建完成后,可以在Repository secrets列表中查看刚才创建的secret信息。

步骤二:配置GitHub Actions工作流文件,查看运行结果
以下示例展示使用huawei cli配置GitHub Actions工作流文件,用于自动化构建、测试、打包Node.js应用并将其部署CAE。实际配置过程中,需根据实际情况调整。
name: Node.js Package
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
cache: npm
cache-dependency-path: node_modules/.package-lock.json
node-version: 16
- name: npm install and build
run: |
chmod 777 node_modules/.bin/vue-cli-service
npm install
npm run build
- name: npm install and build
run: |
chmod 777 node_modules/.bin/vue-cli-service
npm install
npm run build
- name: build images
run: docker build -t cae-frontend:1.0.0 .
- name: Login to SWR
run: docker login -u me-east-1@${{ secrets.HUAWEI_SECRET_ACCESS_KEY}} -p ${{ secrets.HUAWEI_DOCKER_SECRET }} swr.me-east-1.myhuaweicloud.com
- name: Push to SWR
run: |
docker tag cae-frontend:1.0.0 swr.me-east-1.myhuaweicloud.com/demo-cae/cae-frontend:1.0.0
docker push swr.me-east-1.myhuaweicloud.com/demo-cae/cae-frontend:1.0.0
# 下载并安装华为云 CLI
- name: Install HuaweiCloud CLI
run: |
curl -sSL https://cn-north-4-hdn-koocli.obs.cn-north-4.myhuaweicloud.com/cli/latest/hcloud_install.sh -o ./hcloud_install.sh && sudo bash ./hcloud_install.sh -y
# 配置华为云 CLI
- name: Configure HuaweiCloud CLI
run: |
sudo hcloud configure set --cli-profile=testAKSK --cli-mode=AKSK --cli-region=me-east-1 --cli-access-key={{ secrets.HUAWEI_SECRET_ACCESS_KEY}} --cli-secret-key={{ secrets.HUAWEI_SECRET_SECRET_KEY}} --cli-project-id=00248baf96984aecac0f8a976fa7ac00 --cli-domain-id=5a9e34472c434dcabaf1d0c0d51e4efd --cli-read-timeout=20 --cli-connect-timeout=10
# 部署到华为云 CAE
- name: Deploy to CAE
id: cli-command
run: |
echo y | sudo hcloud CAE ExecuteAction --cli-region="me-east-1" --project_id="00248baf96984aecac0f8a976fa7ac00" --X-Enterprise-Project-ID="0" --X-Environment-ID="811db361-727e-4b57-b247-584433244394" --application_id="8f179f8e-f914-4ae2-bbe8-c629973c7f50" --component_id="4b3998c3-9771-4337-a653-d90132d2dd77" --api_version="v1" --kind="Action" --metadata.name="upgrade" --metadata.annotations.version="1.0.0" --spec.source.type="image" --spec.source.url="swr.me-east-1.myhuaweicloud.com/demo-cae/cae-frontend:1.0.0"
- name: Print CLI command result
run: |
echo "华为云 CLI 命令的返回结果: ${{ steps.cli-command.outputs.result }}"
查看运行结果:

获取项目ID、区域ID、环境ID、应用ID和组件ID
请参考下表获取项目ID(project-id)、区域ID(region-id)、环境ID(environment-id)、应用ID(application-id)和组件ID(component-id)。
|
ID名称 |
获取方式 |
|---|---|
|
项目ID |
登录管理控制台,鼠标悬浮在右上角登录用户名上,在下拉菜单选择“我的凭证”。 在API凭证页面的“项目列表”中,在项目ID列查看项目ID。
|
|
区域ID |
登录管理控制台,鼠标悬浮在右上角登录用户名上,在下拉菜单选择“我的凭证”。 在API凭证页面的“项目列表”中,在项目列查看区域ID
|
|
环境ID |
登录CAE控制台,进入组件列表页面,当鼠标悬停在“环境”时,显示环境名称和环境ID。
|
|
应用ID |
登录CAE控制台,进入组件列表页面,当鼠标悬停在“应用”时,显示应用名称和应用ID。
|
|
组件ID |
登录CAE控制台,进入组件列表页面,当鼠标悬停在“组件”时,显示组件名称、组件版本和组件ID。
|




