介绍

本文主要通过docker+gitlab+jenkins来实现自动化集成和部署的全过程,并不会详细的去介绍各种工具的功能。

流程结构

jenkins-gitlab CI流程

准备工作

  1. 1台测试服务器,用于安装docker, 并在docker中配置jenkins,部署代码等。(公司准备的是内网测试机)
  2. 新建一个vue项目,然后推送到gitlab仓储。

开始配置工作

docker

1. 在服务器上安装docker
  1. 更新软件库
yum update -y
  1. 安装docker
yum install docker -y
  1. 启动docker
 service docker start
  1. docker相关命令
 service docker restart  // 重启docker服务
 service docker stop     // 停止docker服务
1. 在docker中安装jenkins

一般我们习惯性的从docker远程仓储直接pull 镜像的最新版,而安装最新版的jenkins镜像, 镜像启动后, 在安装jenkins一系列的plugin 时, 重重受阻, 各种失败, 原因是docker hub 上最新的jenkins 只有2.60.1 版本,很多plugin 都是不支持的。
在jenkins 的官方docker 镜像博客里: docker hub 里面的jenkins 镜像已经不再维护, 建议使用: Jenkins/jenkins 。

  1. 拉取jenkins镜像
 docker pull jenkins/jenkins
  1. 启动jenkins
sudo docker run -d -u 0 --privileged  --name jenkins_gitlab -p 49003:8080 -v /root/jenkins_gitlab:/var/jenkins_home  jenkins/jenkins
  • -u 0

指的是传入root账号ID,覆盖容器中内置的账号

  • -v /root/jenkins_gitlab:/var/jenkins_home
    指的是 将docker容器内的目录/var/jenkins_home映射到宿主机
    /root/jenkins_gitlab目录上

  • –name jenkins_gitlab

将容器命名为 jenkins_gitlab

  • -p 49003:8080

端口映射,将容器的8080端口映射到宿主机的49003端口

  • –privileged

赋予最高权限

  • 整体含意
    运行一个镜像为jenkins/jenkinst的容器,命名为jenkins_gitlab,使用账root号覆盖容器中的账号,赋予最高权限,将容器的
    /var/jenkins_home映射到宿主机的
    /root/jenkins_gitlab目录下,映射容器中8080端口到宿主机49003端口
  1. 查看jenkins

执行完成后,等待几十秒,等待jenkins容器启动初始化。
可以查看宿主机 ’ /root/jenkins_gitlab ’ 下是否多了很多文件
这里访问http://服务器ip:49003 查看jenkins是否启动成功
看到如下界面说明启动成功:
jenkins.png

  • 上图需要输入管理员密码,以下命令查看,然后点击continue继续
cat /root/jenkins_gitlab/secrets/initialAdminPassword
  • 点击安装
    install.png
    install.png

  • 安装成功后,创建管理员账户
    creatAccount.png

  • 输入账号密码信息后点击保存(信息要填完),来到首页
    image.png

  • 配置jenkins, 首先安装相应的插件
    点击系统配置,如果这个页面有许多错误出现, 按照提示,去安装缺失的插件即可,如果安装特别慢也可以选择手动安装,插件安装方法如下:
    manageJenkins.png
    点击插件管理
    manageJenkins2.png.png

manageJenkins3.png.png

  • 安装ssh插件
    image.png
    成功安装后,进入系统管理–系统配置
    manageJenkins4.png
    configureSystem.png

选择高级,输入服务器IP,用户名,密码,然后点击 Test Configuration

  • 安装gitlab、gitlab hook插件(安装步骤同上,具体讲一些配置)
Jenkins-to-GitLab authentication

configureSystem2.jpeg

点击add,填写相应的gitlab api token
configureSystem3.png
获取gitlab的 access token
accessToken.png

系统配置好后,我们进行项目的配置
  1. 首先,新建一个项目
    creat-item.png
  2. 创建成功后,进入项目的配置页面,选择Source Code Management 进行代码仓库的配置
    gitlab.png
注意
  • 如果仓库地址选择http方式,一定要写服务器的ip地址,使用域名时会报错
    source-code.png

  • 认证的时候,可以选择username,password或者是gitlab api token的方式进行,点击add进行认证配置。如果是前者,配置完成后一定要重新去选择一下你刚才配置的用户名和密码,因为默认选中的不是你新填写的。

用户名,密码认证
credential.png
gitlab api token认证

  1. 源码管理配置完成后,我们可以移步 Build Environment,我们来搭建构建环境,选择Send files or execute commands over SSH after the build runs,输入我们需要执行的ssh脚本,同时服务器上进行相关的nginx配置
    build-environment.png
    事例的shell脚本如下
sudo docker stop nodeapp || true \
 && sudo docker rm nodeapp || true \ 
cd /root/jenkins_gitlab/workspace/vuejenkinsdemo  \
&& ls \
 && sudo docker run -d --privileged=true --name nodeapp -p 3000:3000 -v /root/jenkins_gitlab/workspace/vuejenkinsdemo:/home/project/ node \
&& pwd \
&& cd /root/jenkins_gitlab/workspace/vuejenkinsdemo \
&& ls \
&& npm i \
&& npm run build \
&& ls \

  1. 配置完成后,点击save,进入到项目的执行页面
    build.png
    console-output.png

  2. 到此,我们已经实现了手动一键部署

  3. 接下来我们配置GitLab webhook,实现自动部署

GitLab-to-Jenkins authentication
  • 进入到项目配置页面,选择build triggers,配置如下,gitlab webhook url 如图所示,然后点击advanced,找到secret token,点击生成,获得secret token的值
    build-triggers.png
    secreat-token.png
  • 移步gitlab, 找到项目,选择setting–>integrations,配置完成后选择add webhook,然后点击下方test,提示成功后,去jenkins构建页面可以看到有任务正在构建,也可以根据构建结果进行错误排查
    gitlab-webhook1.png
    gitlab-webhook2.png
    gitlab-webhook3.png
注意
  • 当点击test时,由于本地化的原因,报了500错误,修改方式是应该允许来自钩子和服务的对本地网络的请求,
    方式一:
    gitlab-configuration.png
    方式二:
curl -X PUT --header "PRIVATE-TOKEN:pKt5yVfsysShHg_r4xkT" http://gitlab.univ.com/api/v4/application/settings?allow_local_requests_from_hooks_and_services=true

其中,PRIVATE-TOKEN是在gitlab中获取的access token.但是这个需要权限。如果没有权限设置的话,让gitlab的管理员帮忙设置一下就可以了。
7. 到此,我们已经完成了一个简单的项目自动化部署过程。

Logo

前往低代码交流专区

更多推荐