别再手动敲 kubectl 了!华为云 DevCloud 联动 GitHub Actions 打造零干预流水线
·
在云原生时代,手动执行 mvn package、docker build 和 kubectl apply 这套“组合拳”不仅消耗开发者的创造力,还极易因人为操作失误导致生产环境故障。将华为云 DevCloud 与 GitHub Actions 结合,利用 GitHub Actions 作为“胶水”串联云端资源,可以搭建一套零干预的自动化 CI/CD 流水线,实现从代码提交到生产环境更新的无缝衔接,特别适合资源有限但追求工程效能的小型团队,做到“30分钟配置,永久解放双手”。
以下是打造该自动化流水线的完整实战指南:
一、 工具链职责设计
在开始搭建流水线前,我们需要明确各工具的职责边界,使其各司其职:
- 华为云 DevCloud (CloudBuild):负责提供可靠的企业级 Maven 云端构建环境。
- 容器镜像服务 (SWR):作为私有镜像仓库,存储构建产物。
- 云应用引擎 (CAE) / 云容器引擎 (CCE):提供生产级无服务器容器运行环境或 Kubernetes 集群。
- GitHub Actions:扮演“胶水”角色,响应代码提交事件,将构建、推送、部署等服务串联成自动化工作流。
二、 环境准备与前提条件
在配置流水线前,需完成以下前置工作:
- 基础账号与服务:注册华为云账号并开通 DevCloud、SWR、CAE/CCE 服务;注册 GitHub 账号并创建代码仓库。
- 本地工具链验证:推荐本地配置 JDK 11+、Maven 3.6+ 以及 Docker 20.10+ 环境。
- 获取云端资源 ID:在华为云 CAE 控制台创建项目、环境、应用和组件,并记录相应的 Project ID、Region ID、Environment ID、Application ID 和 Component ID,以便后续部署调用。
- 区域规划:华为云 SWR 建议选择与 CAE/CCE 集群相同的区域(如华北-北京四),以避免跨区拉取镜像带来的网络延迟。
三、 配置 GitHub Actions 的 Secrets
为了安全地使用访问密钥等敏感信息,避免在配置文件中暴露明文,需要在 GitHub 仓库的 Settings > Secrets and variables > Actions 中配置以下 Repository secrets:
HUAWEI_SECRET_ACCESS_KEY:华为云的访问密钥 ID (AK)。HUAWEI_SECRET_SECRET_KEY:访问密钥 ID 对应的访问密钥 (SK)。HUAWEI_DOCKER_SECRET:SWR 容器镜像仓库的长期登录指令或密码。
配置完成后,GitHub Actions 在运行时即可通过 ${{ secrets.HUAWEI_SECRET_ACCESS_KEY }} 等方式安全获取敏感信息。
四、 编写零干预工作流文件
在代码仓库的 .github/workflows/ 目录下创建 YAML 工作流文件。以下为整合 DevCloud 企业级 Maven 构建与容器化部署的核心配置:
name: Java CI/CD Pipeline to Huawei Cloud
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# 1. 检出代码
- name: Checkout code
uses: actions/checkout@v4
# 2. 企业级 Maven 构建打包
- name: Set up JDK 11
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
cache: maven
- name: Build with Maven
run: |
mvn clean package -DskipTests
cp target/*.jar docker/
# 3. Docker 镜像构建与 SWR 登录
- name: Build Docker image
run: |
cd docker
docker build -t ${{ secrets.SWR_URL }}/${{ secrets.NAMESPACE }}/my-app:${{ github.sha }} .
- name: Login to Huawei SWR
run: |
docker login -u ${{ secrets.REGION }}@${{ secrets.HUAWEI_SECRET_ACCESS_KEY }} \
-p ${{ secrets.HUAWEI_DOCKER_SECRET }} \
${{ secrets.SWR_URL }}
# 4. 推送镜像至私有仓库
- name: Push to SWR
run: |
docker push ${{ secrets.SWR_URL }}/${{ secrets.NAMESPACE }}/my-app:${{ github.sha }}
# 5. 下载并安装华为云 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
# 6. 配置华为云 CLI
- name: Configure HuaweiCloud CLI
run: |
sudo hcloud configure set --cli-profile=testAKSK --cli-mode=AKSK \
--cli-region=${{ secrets.REGION }} \
--cli-access-key=${{ secrets.HUAWEI_SECRET_ACCESS_KEY }} \
--cli-secret-key=${{ secrets.HUAWEI_SECRET_SECRET_KEY }} \
--cli-project-id=${{ secrets.PROJECT_ID }}
# 7. 部署到华为云 CAE
- name: Deploy to CAE
run: |
echo y | sudo hcloud CAE ExecuteAction \
--cli-region="${{ secrets.REGION }}" \
--project_id="${{ secrets.PROJECT_ID }}" \
--X-Enterprise-Project-ID="0" \
--X-Environment-ID="${{ secrets.ENVIRONMENT_ID }}" \
--application_id="${{ secrets.APPLICATION_ID }}" \
--component_id="${{ secrets.COMPONENT_ID }}" \
--api_version="v1" \
--kind="Action" \
--metadata.name="upgrade" \
--metadata.annotations.version="${{ github.sha }}" \
--spec.source.type="image" \
--spec.source.url="${{ secrets.SWR_URL }}/${{ secrets.NAMESPACE }}/my-app:${{ github.sha }}"
五、 流水线运行机制解析
当开发人员将代码推送到主分支时,GitHub Actions 会自动触发上述工作流:
- 持续集成 (CI):流水线拉取代码后执行 Maven 构建指令,生成可部署的 JAR 包并拷贝至 Docker 目录,随后使用 Dockerfile 构建容器镜像。
- 镜像托管:通过先前配置的 Secrets 登录华为云 SWR,并为镜像打上标签推送到私有镜像仓库(如
swr.me-east-1.myhuaweicloud.com/demo-cae/cae-frontend:1.0.0)。 - 持续部署 (CD):CI 成功完成后,流水线自动下载并配置华为云 CLI (hcloud),随后调用 CAE 的
ExecuteAction接口,将最新构建的镜像部署到指定的 CAE 环境中,并等待任务执行完成。除了使用 CLI,也可以直接使用官方提供的huaweicloud/cae-deploy@main插件来执行 CD 流程。
通过这套方案,开发团队可以彻底告别手动敲打运维命令的繁琐,将精力重新聚焦于业务代码的创新与交付。
更多推荐



所有评论(0)