写点什么

以 Java 项目为例,实现 Jenkins 对接 CCE Autopilot 集群

  • 2024-07-03
    广东
  • 本文字数:1650 字

    阅读完需:约 5 分钟

以Java项目为例,实现Jenkins对接CCE Autopilot集群

本文分享自华为云社区《Jenkins对接CCE autopilot集群实战》,作者: 可以交个朋友。

一 背景


鉴于日趋流行的serverless技术架构、以及用户经常谈及的降本的需求。考虑 Jenkins 主从架构的特性,slave 节点可以在工作的时候部署在任意平台上执行 master 节点下发的任务,因此可以基于 CCE Autopilot 集群为 Jenkins 的 agent 节点设置运行平台。

二 简介


  • 以 java 项目为例,完成 java 业务从代码拉取、maven 编译、构建镜像、推送镜像、修改 yaml 文件推送到代码仓库等一系列 CI 流程。

  • jenkins agent 容器使用谷歌提供的Kaniko镜像

三 操作实践


提前安装好 jenkis,并配置 kubernetes 插件。

3.1 配置 jenkins 连接 autopilot 集群


创建 autopilot 集群的连接凭据


类型: 选择 secret file


file: 上传 autopilot 集群的 kubeconfig 配置文件



Clouds 中配置连接 autopilot 集群


在系统管理中选择 clouds,点击新增



Cloud name: 自定义即可


Type: 选择 Kubernetes



Kubernetes地址: 填写 autopilot 集群的 apiserver 连接地址


Kubernetes命名空间: 动态 agent 运行的命名空间,可自定义



凭据: 选择步骤 1 创建的凭据,选择完凭据之后点击测试连接,连接正常就能查看集群版本


jenkins地址: jenkins 的访问地址


jenkins通道: jenkins 访问的 50000 端口,需要创建 svc 开发该端口



配置完成,最后保存即可。

3.2 配置 pod 模板


在 Clouds 中选择 Pod Templates 然后点击创建



名称: 可自定义


命名空间: 选择和 Clouds 配置一样即可,如:default


用法: 默认即可。例如: 只允许运行绑定到这台机器的 job



配置基础镜像模版


名称: 填写 jnlp,固定写法


Docker镜像: inbound 镜像,执行 docker pull jenkins/inbound-agent,然后上传到 swr


工作目录: 自定义



配置 Maven 打包镜像


名称: 填写 maven,可自定义,写 pipeline 时会用到


Docker镜像: maven 镜像,docker pull maven:3.8.1-jdk-8,然后又推送到 swr 镜像仓库


工作目录: 自定义


运行命令: sleep


运行参数: 9999999



配置 build 镜像任务


名称: 填写 build,可自定义,写 pipeline 会用到


Docker镜像: kaniko 镜像,docker pull aiotceo/kaniko-executor,提前推送到 SWR


工作目录: 可以自定义


运行命令: /busybox/cat


3.3 其他配置


对 Maven 的打包目录进行缓存


前提:需要前提创建一个 PVC 存储


申明值:填写创建的 PVC 存储名称


挂载路径:固定填写/root/.m2



配置拉取镜像的 secret


名称:固定填写 default-secret



配置连接 swr 的 secret


登录 ECS 服务器,配置连接 autopilot 集群,执行如下代码:


yum install git -y kubectl create secret docker-registry swr-secret  \--docker-server=https://swr.cn-******.com \--docker-username=***** --docker-password=****** \--dry-run=client -o json |jq -r  \'.data.".dockerconfigjson"' |base64 -d > /tmp/config.jsonkubectl create secret generic swr-secret --from-file=config.json
复制代码


docker-server:填写 swr 的接口地址


docker-username:填写 region@ak,通过 AK,SK 获取长期登录指令。 例如: cn-north-7@HL9SLYV9UDY428M6TAJ5


docker-password:填写 SK,通过 AK,SK 获取长期登录指令。


配置 Secret Volume


Secret名称: 填写上面生成的 secret 名字


挂载路径: kaniko/.docker,固定写法


3.4 编写 pipeline


def repository_url = "swr.******.com"def git_repo = "https://******.git"def app_git_branch = "master"
podTemplate(inheritFrom: 'agent',cloud: 'test') { node(POD_LABEL) { stage('拉取代码'){‘ echo "pull clone"' git branch: "${app_git_branch}", url: "${git_repo}" } container('maven'){ stage('编译打包'){ echo "build package" sh "mvn clean package -DskipTests" } } container('build'){ stage('镜像构建'){ echo "build images and push images" sh "/kaniko/executor -f Dockerfile -c . -d ${repository_url}/tomcat:${BUILD_ID} --force" } } } }

复制代码

四 结果展示


jenkins agent 运行在 autopilot 集群中



推送镜像到 SWR 镜像仓库中



jenkins CI 阶段视图如下



点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 5
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
以Java项目为例,实现Jenkins对接CCE Autopilot集群_容器_华为云开发者联盟_InfoQ写作社区