Arbess CICD实践(1) - 使用Arbess+GitPuk+Docker实现Java项目自动化部署

Arbess 是一款开源免费的 CI/CD 工具,包含流水线管理、流水线设计、流水线执行、测试报告、统计分析等模块。本文将详细介绍使用Arbess+GitPuk+Docker实现自动化构建部署。

1、GitPuk 安装与配置

本章节将介绍如何使用CentOS搭建GitPuk服务器,并将代码存放在GitPuk服务器,提供给Arbess拉取。

1.1 安装

本文以CentOS操作系统为例。

  • 下载,CentOS安装包下载地址:GitPuk下载,点击CentOS下载,下载完成后得到类似tiklab-gitpuk-x.x.x.rpm的文件。
  • 安装,上传到服务器上,在文件同级目录执行npm命令安装。

rpm -ivh --replacefiles --nodeps tiklab-gitpuk-x.x.x.rpm

  • 启动,系统默认安装路径为/opt目录,进入/opt/tiklab-gitpuk/bin目录下,执行sh startup.sh即可启动成功。

使用 http://ip:9800 进行访问。使用初始用户名密码admin\123456登录,首次登录需要修改管理员密码,修改完成之后成功登录。成功登录后展示GitPuk首页。

首页

1.2 配置

GitPuk登录成功,需要添加代码仓库,GitPuk支持新建仓库上传代码和从其他软件导入仓库两种方式。

  • 新建仓库

在仓库页面点击右上角“新建仓库”。

创建仓库

新建的仓库可通过HTTP和SSH方式按步骤上传代码。

上传代码

  • 导入仓库

GitPuk也支持从外部仓库导入。

导入仓库

以私有Gitlab为例,导入需要提供私有Gitlab地址,以及访问密钥。

添加GitLab信息

添加完成后,选择Gitlab的仓库,进行导入。

导入仓库

2、Arbess 安装与配置

2.1 安装

本文以CentOS操作系统为例。

  • 下载,服务端安装包含Agent安装,CentOS安装包下载地址:Arbess下载,点击CentOS下载,下载完成后得到类似tiklab-arbess-x.x.x.rpm的文件。
  • 安装,上传到服务器上,在文件同级目录执行npm命令安装。

rpm -ivh --replacefiles --nodeps tiklab-arbess-x.x.x.rpm

  • 启动,系统默认安装路径为/opt目录,进入/opt/tiklab-arbess/bin目录下,执行sh startup.sh即可启动成功。

启动Arbess

使用 http://ip:9200 进行访问。使用初始用户名密码admin\123456登录,首次登录需要修改管理员密码,修改完成之后成功登录。成功登录后展示Arbess首页。

首页

2.2 配置

Arbess流水线采用可视化设计,实现Java项目自动化部署,在流水线中可克隆GitPuk仓库代码、构建并部署Docker安装包。创建流水线,进入流水线设计页面进行操作。

2.2.1 配置GitPuk任务

  • 配置GitPuk服务集成

在配置GitPuk之前,需要先添加GitPuk服务集成,在系统设置→集成与开放→服务集成页面添加相关服务。授权类型选择GitPuk、填写名称、服务地址(即文章1部分安装的GitPuk地址)、用户名、密码。

添加源码集成

  • 添加GitPuk源码任务

服务集成完毕之后,进入流水线详情→设计,进行设计流水线,创建流水线会默认通用Git源码,一个流水线只能配置一个源码类型的的任务,修改其他类型的源码仓库,需要先删除之前的源码仓库。鼠标移动到通用Git源码,点击右侧删除按钮。

删除源码

删除后,点击流水线最左侧“+”号,添加任务,点击新阶段→源码→自建GitPuk。需要填入任务名称、Git版本、自检GitPuk服务、仓库、分支等信息。

添加源码

字段

描述

任务名称

任务名称清晰地标识项目或对象。

Git版本

Arbess所在服务器Git安装路径。

自建GitPuk服务

自建GitPuk服务地址。

仓库

选择授权信息后点击仓库,程序会自动获取凭证权限下的仓库列表,管理者只需选择需要配置的仓库即可。

分支

选择代码的分支。填写需要拉取远程仓库具体的分支,不填默认为master分支,填写错误会导致任务执行失败。

2.3.2 配置Docker构建

点击新阶段→构建→Docker构建。添加成功之后,弹出Docker构建配置。

Docker构建

字段

描述

任务名称

任务名称清晰地标识项目或对象。

DockerFile地址

定义和自动化构建Docker镜像的脚本文件地址。

执行命令

执行Docker构建的命令。

2.2.3 配置Docker部署

点击新阶段→部署→Docker部署。添加成功之后,弹出Docker部署配置。

编辑部署任务

字段

描述

任务名称

任务名称清晰地标识项目或对象。

主机地址Docker部署文件生成的主机,远程SSH认证凭证。

部署镜像名称

需要部署的镜像名称。

部署位置

生成部署文件的位置。

启动命令

镜像启动命令。

3、运行流水线

  • 运行流水线

流水线设计完毕之后,Arbess支持自动触发、Webhook触发、手动触发三种运行模式。点击右上角“运行”按钮,手动触发流水线。

运行流水线

流水线运行同时,点击认为标签右下角“日志”,可查看运行实时日志。

查看运行日志

流水线运行成功,使用docker images查看Docker部署结果。

查看部署结果

也可以通过日志来查看Docker项目生成安装包位置。

查看运行详细日志

  • 查看运行历史

可以在Arbess历史页面查看到流水线运行历史。点击运行历史序号,即可查看详细的运行日志。

查看运行历史

至此,使用Arbess成功搭建流水线,用来拉取GitPuk源码、Docker部署并构建安装包。

<think>好的,我现在需要帮助用户实现前后端分离的SpringBoot项目自动化CI/CD流程,使用Docker和GitLab。首先,我得回顾一下用户提到的引用内容,虽然这些引用可能不完全相关,但需要从中提取有用的信息。用户提到GitLab Runner的安装和注册,以及SSH免密登录的问题。这说明在配置过程中,Runner的安装和权限设置是关键步骤。同时,用户希望使用Docker,所以需要考虑如何在CI/CD流程中集成Docker镜像的构建和推送。接下来,我需要分步骤来规划整个流程。首先,安装和配置GitLab Runner,这包括在服务器上安装Runner,并注册到GitLab项目中。然后,编写.gitlab-ci.yml文件,定义不同的阶段,比如构建、测试、打包、部署等。对于前后端分离的项目,可能需要分别处理前端和后端的部分。 前端部分,通常使用npm或yarn进行构建,生成静态文件,然后通过Docker镜像部署到Nginx之类的服务器。后端SpringBoot项目则需要打包成Jar文件,构建Docker镜像,并推送到镜像仓库,最后部署到目标服务器。另外,用户提到了Docker的缓存问题,需要优化构建过程,比如使用Maven的缓存来加速构建。同时,SSH免密登录可能用于自动化部署,确保GitLabRunner能够访问目标服务器执行部署脚本。 还需要考虑环境变量的配置,比如数据库连接信息、API密钥等,这些可以通过GitLab的CI/CD变量功能来管理,避免硬编码在配置文件中。 最后,测试整个流程,确保每个阶段都能正确执行,处理可能出现的错误,比如网络问题、权限不足等,特别是502Bad Gateway的问题,可能需要检查Runner和服务器之间的通信是否正常。总结下来,步骤大致是:1.安装配置GitLabRunner;2.编写CI/CD配置文件,定义前后端的构建和部署流程;3.集成Docker构建和推送;4.配置环境变量和SSH免密登录;5.测试和优化流程。</think>### 分步实现 Docker+GitLab 的 SpringBoot 前后端分离 CI/CD 流程 #### 一、基础环境准备 1. **安装 GitLab Runner** 在 CentOS 服务器上执行以下命令: ```bash # 添加 GitLab 官方仓库 curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash # 安装 GitLab Runner sudo yum install gitlab-runner # 注册 Runner(需替换 YOUR_GITLAB_URL 和 REGISTRATION_TOKEN) sudo gitlab-runner register --url YOUR_GITLAB_URL --token REGISTRATION_TOKEN --executor docker --description "Docker Runner" ``` *提示:注册时选择 `docker` 执行器,并指定基础镜像如 `alpine:latest`[^3]。* 2. **配置 Docker 权限** 确保 Runner 用户有 Docker 操作权限: ```bash sudo usermod -aG docker gitlab-runner ``` --- #### 二、后端 SpringBoot 项目配置 1. **编写 Dockerfile** 在项目根目录创建 `Dockerfile`: ```dockerfile FROM maven:3.8.6-jdk-11 AS build WORKDIR /app COPY . . RUN mvn clean package -DskipTests FROM openjdk:11-jre-slim COPY --from=build /app/target/*.jar app.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","/app.jar"] ``` 2. **定义 `.gitlab-ci.yml` 阶段** ```yaml stages: - build - test - deploy variables: DOCKER_IMAGE: registry.example.com/backend:latest build-backend: stage: build script: - docker build -t $DOCKER_IMAGE . - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD registry.example.com - docker push $DOCKER_IMAGE only: - main deploy-backend: stage: deploy script: - ssh -o StrictHostKeyChecking=no user@server "docker pull $DOCKER_IMAGE && docker-compose up -d" ``` *注:需在 GitLab 设置 `CI_REGISTRY_USER` 和 `CI_REGISTRY_PASSWORD` 变量[^1]。* --- #### 三、前端 Vue/React 项目配置 1. **前端 Dockerfile** ```dockerfile FROM node:16 AS build WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build FROM nginx:alpine COPY --from=build /app/dist /usr/share/nginx/html EXPOSE 80 ``` 2. **CI/CD 前端任务** ```yaml build-frontend: stage: build script: - docker build -t registry.example.com/frontend:latest . - docker push registry.example.com/frontend:latest artifacts: paths: - dist/ deploy-frontend: stage: deploy script: - ssh user@server "docker-compose -f /path/to/frontend-compose.yml up -d" ``` --- #### 四、关键问题解决方案 1. **SSH 免密登录配置** ```bash # 在 GitLab Runner 服务器生成密钥 ssh-keygen -t rsa -b 4096 -C "gitlab-runner" # 将公钥复制到目标服务器 ssh-copy-id user@target-server ``` 在 GitLab CI 变量中设置 `SSH_PRIVATE_KEY`,并在脚本中加载: ```yaml before_script: - mkdir -p ~/.ssh - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa ``` 2. **Maven/Gradle 缓存优化** 在 `.gitlab-ci.yml` 中添加缓存配置: ```yaml cache: paths: - .m2/repository - target/ ``` --- #### 五、完整流程验证 1. **触发条件** - 代码推送到 `main` 分支自动触发流水线 - 手动触发回滚部署 2. **监控与日志** 通过 GitLab Pipeline 界面实时查看构建状态,失败时可通过日志定位问题(如 Docker 镜像推送权限错误或 SSH 连接超时)。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值