关于docker相关知识能够看我之前写的一篇文章,这里就不叙述了

流程图

vue 用docker+gitlab+jenkins完成自动化布置

  • 开发推送/合并代码到gitlab布置分支
  • 代码推送到布置分支后,触发推送事件,然后调用jenkins的布置任务
  • jenkins经过git插件拉取gitlab对应分支的代码
  • maven打包
  • maven打包完成后,如果是布置在宿主机服务器,则经过ssh推送jar包到对应的服务器上,并履行重启指令

nginx 装置

拉取nginx镜像

version: '3.8'
services:
  nginx:
    image: nginx:latest
    container_name: nginx
    volumes:
      # 装备文件
      - ./nginx/conf:/etc/nginx/conf.d
      - ./nginx/logs:/var/log/nginx
      # 静态资源文件
      - ./dist/:/usr/share/nginx/html
    ports:
      - 9001:80
    privileged: true
    restart: always
    networks: 
      - app-network
networks:
  app-network:
    driver: bridge
  • 履行docker-compose up -d

nginx 装备

  • 在项目nginx/conf文件夹创立default.conf
server {
    listen       80;
    server_name  localhost;
    access_log  /var/log/nginx/host.access.log  main;
    error_log  /var/log/nginx/error.log  error;
    location / {
        # 代理到你的前端项目
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
  • vue 服务就搭建完成了
    vue 用docker+gitlab+jenkins完成自动化布置

jenkins装置

拉取jenkins镜像

version: '3.8'
services:
  jenkins: 
    image: jenkins/jenkins:lts
    container_name: jenkins
    volumes:
      - /home/jenkins_home:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker   #能够在容器内运用docker指令 
      - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose   #能够在容器内运用docker-compose指令 
    user: root
    ports:
      - 9002:8080
    privileged: true
    restart: on-failure  # 自动重启
    environment:
      - TZ=Asia/Shanghai  # 处理容器 时区的问题
    networks: 
      - blog-network
  • 履行docker-compose up -d

vue 用docker+gitlab+jenkins完成自动化布置

解锁jenkins

# 检查jenkins容器logs
docker logs jenkins

vue 用docker+gitlab+jenkins完成自动化布置

仿制红色框解锁字符串粘贴到jenkins中管理员暗码输入框中进行解锁

装置jenkins插件

  • 挑选装置推荐的插件即可,或许会有装置失败的插件,重试即可
    vue 用docker+gitlab+jenkins完成自动化布置

创立jenkins用户

vue 用docker+gitlab+jenkins完成自动化布置

vue 用docker+gitlab+jenkins完成自动化布置

晋级站点

  • 如果打不开 jenkins,将装备文件里边的url换成国内的即可
# 将红线部分修正为下面的url 
http://mirror.xmission.com/jenkins/updates/update-center.json

vue 用docker+gitlab+jenkins完成自动化布置

  • 也能够在jenkins系统管理-插件中心-高级-晋级站点
https://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

vue 用docker+gitlab+jenkins完成自动化布置

gitlab装置

拉取gitlab镜像

version: '3.8'
services:
  gitlab:
    image: 'gitlab/gitlab-ee:latest' 
    container_name: gitlab
    # 将容器的数据复制存到主机中
    volumes:
      - ./gitlab/config:/etc/gitlab
      - ./gitlab/data:/var/opt/gitlab
      - ./gitlab/logs:/var/log/gitlab
    ports:
      - 9003:9003
    privileged: true
    restart: always
    hostname: 'www.mygitlab.com'
    environment:
      TZ: 'Asia/Shanghai'
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.0.102:9003' # web站点访问地址
    logging:
      driver: 'json-file'
      options:
        max-size: '2g'
    networks: 
      - blog-network
  • 履行docker-compose up -d

vue 用docker+gitlab+jenkins完成自动化布置

gitlab 常用指令

  • gitlab-ctl start:启动一切 gitlab 组件

  • gitlab-ctl stop:停止一切 gitlab 组件

  • gitlab-ctl restart:重启一切 gitlab 组件

  • gitlab-ctl status:检查服务状况

  • gitlab-ctl reconfigure:从头编译gitlab的装备

  • gitlab-rake gitlab:check SANITIZE=true --trace:检查gitlab

  • gitlab-ctl tail:检查日志

修正root用户暗码

  • 进入gitlab容器
docker exec -it gitlab bash
  • 履行指令获取用户数据,这个进程有点慢
gitlab-rails console -e production
  • 修正暗码
user = User.where(id: 1).first
user.password='12345678'
user.password_confirmation='12345678'
user.save!
quit

vue 用docker+gitlab+jenkins完成自动化布置

  • 然后再用root输入设置暗码12345678登录即可

vue 用docker+gitlab+jenkins完成自动化布置

gitlab 与 jenkins 相关

  • 进入容器
docker exec -it jenkins bash
  • 生成密钥
# 一路回车, 默认途径和文件名, 不要暗码
ssh-keygen -t rsa -C vhen@vhen.com
  • 检查密钥
ls ~/.ssh

vue 用docker+gitlab+jenkins完成自动化布置

  • docker桌面jenkins容器中找到id_rsa.pub

vue 用docker+gitlab+jenkins完成自动化布置

  • 将生成的密钥id_rsa.pub仿制粘贴到gitlab中SSH Keys设置秘钥

vue 用docker+gitlab+jenkins完成自动化布置

  • docker桌面jenkins容器中找到id_rsa

vue 用docker+gitlab+jenkins完成自动化布置

  • 将生成的密钥id_rsa仿制粘贴到jenkins中的凭证
    vue 用docker+gitlab+jenkins完成自动化布置

自动化布置

gitlab创立项目

vue 用docker+gitlab+jenkins完成自动化布置

  • 相关远程仓库指令 :git remote add origin 远程仓库地址
  • 提交本地项目

vue 用docker+gitlab+jenkins完成自动化布置

Jenkins装置插件

vue 用docker+gitlab+jenkins完成自动化布置

jenkins装备JDK

  • 进入Jenkins容器,检查java装置途径
docker exec -it jenkins bash
$JAVA_HOME

vue 用docker+gitlab+jenkins完成自动化布置

vue 用docker+gitlab+jenkins完成自动化布置

  • 新版jenkins不需要装备途径了,正告不能用于商业用途哦

vue 用docker+gitlab+jenkins完成自动化布置

jenkins装置Git

vue 用docker+gitlab+jenkins完成自动化布置

jenkins装置Maven

vue 用docker+gitlab+jenkins完成自动化布置

jenkins装置Node

vue 用docker+gitlab+jenkins完成自动化布置

jenkins装备凭据

vue 用docker+gitlab+jenkins完成自动化布置

vue 用docker+gitlab+jenkins完成自动化布置

vue 用docker+gitlab+jenkins完成自动化布置

装备全局gitlab

  • 增加凭据
    vue 用docker+gitlab+jenkins完成自动化布置
  • gitlab 个人中心获取token

vue 用docker+gitlab+jenkins完成自动化布置

  • 输入框粘贴token

vue 用docker+gitlab+jenkins完成自动化布置
vue 用docker+gitlab+jenkins完成自动化布置

装备 Publish over SSH

vue 用docker+gitlab+jenkins完成自动化布置

vue 用docker+gitlab+jenkins完成自动化布置

  • SSH Server
    • Name:用于给 jenkins 用户识别的用户名(随意界说)
    • Hostname:方针机器的 IP 地址(服务器ip)
    • Username:方针机器的 OS 用户(用户名)
    • Remote Directory:需要把文件发送到的方针机器的目录地址(服务器下寄存静态文件地址)

jenkins 创立任务

新建项目

vue 用docker+gitlab+jenkins完成自动化布置

General

vue 用docker+gitlab+jenkins完成自动化布置

  • 装备参数

vue 用docker+gitlab+jenkins完成自动化布置

源码装备

vue 用docker+gitlab+jenkins完成自动化布置

构建触发器

vue 用docker+gitlab+jenkins完成自动化布置

  • 点击高级选项找到secret token>Generate生成一个token值
    vue 用docker+gitlab+jenkins完成自动化布置
  • 前往gitlab项目中创立webhook
    vue 用docker+gitlab+jenkins完成自动化布置

构建环境

vue 用docker+gitlab+jenkins完成自动化布置

Build Steps

  • 第一步,点击增加构建过程挑选shell

vue 用docker+gitlab+jenkins完成自动化布置

vue 用docker+gitlab+jenkins完成自动化布置

node -v
npm install --registry=https://registry.npm.taobao.org
npm install -g yarn -registry=https://registry.npm.taobao.org
yarn -v
yarn install --pure-lockfile
yarn build
tar -zcvf dist.tar ./dist
  • 第二步,点击增加构建过程挑选发送SSH

vue 用docker+gitlab+jenkins完成自动化布置

vue 用docker+gitlab+jenkins完成自动化布置

cd ~
mv ./dist.tar.gz /usr/share/nginx/html/
tar zxvf dist.tar.gz
rm -rf dist.tar.gz

vue 用docker+gitlab+jenkins完成自动化布置
vue 用docker+gitlab+jenkins完成自动化布置