前后端分离的架构下,前后端分别的CI/CD全流程-后端-2

262 阅读4分钟

首先我们通过ssh连接自己的远程服务器

在服务器上安装docker,centos7下安装docker的步骤:

  1. 安装需要的软件包, yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 设置 yum 源

    设置一个yum源,下面两个都可用

yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)
​
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)
  1. 选择docker版本并安装

    1. 查看可用版本有哪些
    yum list docker-ce --showduplicates | sort -r
    
    1. 选择一个版本并安装:yum install docker-ce-版本号
    yum -y install docker-ce-18.03.1.ce
    
    1. 启动 Docker 并设置开机自启
    systemctl start docker
    systemctl enable docker
    

OK,安装完成后我们就可以在服务器上使用docker了

WX20220203-151655@2x.png

首先,我们需要下载jenkins镜像,这里推荐大家使用蓝海版jenkins,原版jenkins因为qiang的原因会导致各种插件下载不下来,但是蓝海版不会出现这种问题。

docker pull jenkinsci/blueocean

安装完后我们可以docker images看一下

WX20220203-152309@2x.png

可以看到我们已经安装成功了,接下来我们就可以启动该镜像了

docker run 
--name jenkinsci-blueocean -u root 
--rm  -d -p 7005:8080 -p 50000:50000 
-v /data/jenkins:/var/jenkins_home 
-v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
  • -u root:以 root 权限启动,防止出现权限问题
  • -p 7005:8080:端口映射,服务器的 7005 端口映射容器的 8080 端口
  • -p 50000:50000:Jenkins代理默认通过TCP端口50000与Jenkins主机通信
  • -v /data/jenkins:/var/jenkins_home:把容器内的 Jenkins 目录挂载到服务器的 /data/jenkins 目录以防容器没了,数据也没了
  • -v /var/run/docker.sock:/var/run/docker.sock:保证容器内的 docker 与 服务器上 docker 的通讯

启动完后,我们就可以在浏览器上输入自己远程服务器的公网ip:7005访问自己的jenkins服务

jenkins首次打开会初始化一定时间,耐心等待,初始化完后需要输入密码

v2-ee86f418ba1c7ef94741491135c1aa25_1440w.jpeg

由于我们挂载映射到服务器,所以可以直接通过服务器路径找密码

cat /data/jenkins/secrets/initialAdminPassword

然后插件按推荐安装就可以,接着创建自己的账号

创建完成后我们就进入到jenkins的主界面

1643873423904.jpg

点击插件管理,我们需要再去额外下载几个插件

WX20220203-153122@2x.png

在可选插件这里搜 nodejs、 SSH Agent、 Publish Over FTP、 SSH2 Easy,安装

接着进入全局安全配置中

WX20220203-153517@2x.png

  1. 打开匿名用户具有可读权限

  2. 关闭跨站请求伪造保护

    1. 因为我们的jenkins是通过docker启动的,所以我们这里首先需要进入jenkins容器中
    2. docker exec -u root  -it 你的jenkins容器名称或id /bin/bash
      
    3. 接着修改jenkins.sh
    4. vi /usr/local/bin/jenkins.sh
      
    5. 找到exec java那行(大概是在第37行),添加-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
      最终的效果如下
      exec java -Duser.home="$JENKINS_HOME" -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true "${java_opts_array[@]}" -jar ${JENKINS_WAR} "${jenkins_opts_array[@]}" "$@"
      ​
      [root@44a32750c94c /]# exit
      exit
      [root@vms9 ~]#
      
    1. 然后重启jenkins容器
    2. docker restart 你的jenkins容器名称或id
      
    3. 再次登录到web界面查看 跨站点伪造请求的设置,已经是关闭状态了

现在我们就可以开始点击新建项目

新建项目前我们去用户列表中,点击自己创建的用户,点设置,添加一个API token

WX20220203-160357@2x.png

点击生成后,复制该token,保存好,离开此页面后将无法再次获取

WX20220203-160427@2x.png

输入一个任务名称,点击构建一个自由风格的软件项目,然后点确定

WX20220203-154255@2x.png

这里我们已经把后端项目推到了github上,我们把项目所在的github库的链接复制到这里

然后添加一个证书,用来连接github

WX20220203-154850@2x.png

这里我们选择使用公钥私钥的链接方式

id username这些都可以不用填,我们首先在本机或远程服务器上,创建一对公钥私钥

ssh-keygen -t rsa

接着我们把公钥配置到github上

cat /root/.ssh/id_rsa.pub

WX20220203-155412@2x.png

WX20220203-155439@2x.png

给秘钥起个名字并添加秘钥

查看私钥,并配置到jenkins中(记得复制全,不要遗漏)

cat /root/.ssh/id_rsa

WX20220203-155717@2x.png

粘贴到这里,接着点确定

WX20220203-155812@2x.png

然后我们在证书这里选择刚才配置好的

接着在这里配置自己的身份验证令牌(自己随意配置)

WX20220203-155857@2x.png

接下来我们去github配置webhooks

WX20220203-160030@2x.png

WX20220203-160149@2x.png

首先,这里payload url里我们输入

http://root:这里跟的是前面在root用户下设置的api token@这里填写自己的公网ip:7005/job/你刚才创建的项目名称/build?token=这里为自己配置的身份验证令牌

secret里我们填写的也是自己配置的那个身份验证令牌,跟token=后面填写的一样

接着就可以update 该webhook

WX20220203-161013@2x.png

WX20220203-161037@2x.png

点击进来后我们就可以看到该webhook成功连接到了我们的jenkins

接下来我们就可以准备在jenkins中做ci/cd了