docker+gitlab+jenkins从零搭建自动化部署

2020-02-24  本文已影响0人  AndreaH

介绍

本文主要通过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

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

将容器命名为 jenkins_gitlab

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

赋予最高权限

  1. 查看jenkins

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


jenkins.png
cat /root/jenkins_gitlab/secrets/initialAdminPassword
manageJenkins3.png.png

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

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
注意

用户名,密码认证


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
注意
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的管理员帮忙设置一下就可以了。

  1. 到此,我们已经完成了一个简单的项目自动化部署过程。
上一篇下一篇

猜你喜欢

热点阅读