0
点赞
收藏
分享

微信扫一扫

第2集(GItlab+Jenkins+SonarQube+Docker+Harbor+Selenium实现CI/CD之LNMP项目准备)

​​第1集,环境搭建​​

​​第3集,WebHook触发mvn打包​​

​​第4集,SonarQube实现CodeReview​​

​​第5集,build image​​

​​第6集,部署到测试环境,Selenium自动测试​​

​​第7集,模拟版本更新,在测试环境验证​​

​​第8集,部署到生产环境​​

​​第9集,流水线部署到测试环境​​

一、在gitlab上创建项目dev_lnmp

​1.创建项目​

第2集(GItlab+Jenkins+SonarQube+Docker+Harbor+Selenium实现CI/CD之LNMP项目准备)_docker
第2集(GItlab+Jenkins+SonarQube+Docker+Harbor+Selenium实现CI/CD之LNMP项目准备)_docker_02
第2集(GItlab+Jenkins+SonarQube+Docker+Harbor+Selenium实现CI/CD之LNMP项目准备)_git_03

​2.在jenkins机器上克隆该项目​

第2集(GItlab+Jenkins+SonarQube+Docker+Harbor+Selenium实现CI/CD之LNMP项目准备)_mysql_04

sudo -i
yum -y install git
git config --global user.name "root"
git config --global user.email "anqixiang@163.com"

git clone http://172.16.38.31/root/dev_lnmp.git

二、准备LNMP环境(在jenkins机器上做)

​1.拉取mysql、richarvey/nginx-php-fpm镜像​

mysql_v8.0.18镜像下载地址:

链接:https://pan.baidu.com/s/1aEk0YjnFPKpGsa_Z7kX2SQ 
提取码:cumy

nginx-php-fpm镜像下载地址:

链接:https://pan.baidu.com/s/1IO9abY8PuTWgiQLgBB2Mnw 
提取码:at3j
docker pull mysql
docker pull richarvey/nginx-php-fpm:latest
docker images

第2集(GItlab+Jenkins+SonarQube+Docker+Harbor+Selenium实现CI/CD之LNMP项目准备)_mysql_05

​2.在dev_lnmp下创建目录,目录结构如下​

第2集(GItlab+Jenkins+SonarQube+Docker+Harbor+Selenium实现CI/CD之LNMP项目准备)_linux_06
第2集(GItlab+Jenkins+SonarQube+Docker+Harbor+Selenium实现CI/CD之LNMP项目准备)_mysql_07

​3.docker-compose-module.yml内容:​

version: '3.7'

services:
mysql:
image: 172.16.38.202:8010/library/mysql:8.0.18
container_name: lnmp_mysql
hostname: lnmp_mysql
restart: always
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8
environment:
MYSQL_ROOT_PASSWORD: 123456
ports:
- 3306:3306
volumes:
- /data/docker_volume/mysql/mysql_data:/var/lib/mysql
networks:
- lnmp
security_opt:
- seccomp:unconfined

lnmp_web:
image: #tag#richarvey/nginx-php-fpm:latest
container_name: lnmp_web
hostname: lnmp_web
restart: always
depends_on:
- mysql
ports:
- 80:80
- 443:443
networks:
- lnmp

networks:
lnmp:
name: lnmp_network
driver: bridge

​4.构建代码镜像的材料(以搭建wordpress为例)​

Dockerfile内容:

FROM richarvey/nginx-php-fpm
MAINTAINER nsd_anqixiang@163.com

#用于版本控制
ENV WORDPRESS_VERSION 4.9
COPY index.html /var/www/html
ADD wordpress-${WORDPRESS_VERSION}-zh_CN.tar.gz /var/www/html

index.html内容:(用于验证版本的变化)

test_1.0

下载wordpress包

wget https://cn.wordpress.org/wordpress-4.7.4-zh_CN.tar.gz

​5.docker_volume数据卷,用于数据持久化​

存储的是数据库的初始化数据,init_data.tgz是docker_volume目录的归档,用于后期的部署

第2集(GItlab+Jenkins+SonarQube+Docker+Harbor+Selenium实现CI/CD之LNMP项目准备)_git_08

​6.构建镜像脚本build_image.sh​

#!/bin/bash

set +e
current_dir=$(cd `dirname $0` && pwd) #当前工作目录

#Harbor仓库信息
harbor_ip=172.16.38.202
harbor_port=8010
harbor_user=admin
harbor_pwd=admin
harbor_project=lnmp

set -e
docker login http://${harbor_ip}:${harbor_port} -u admin -p admin
#构建镜像
Build_Image(){
image_name=nginx-php-fpm
image_tag=ver1.0_$(date "+%Y%m%d")
image_path=${harbor_ip}:${harbor_port}/${harbor_project}/${image_name}:${image_tag}
cd ${current_dir}/dockerfiles/nginx/
docker build -t ${image_path} .
docker push ${image_path}
}

#更改docker-compose.yml文件
Update_Compose(){
compose_module_file=${current_dir}/docker-compose-module.yml
compose_file=${current_dir}/docker-compose.yml
\cp ${compose_module_file} ${compose_file}
#local base_tag=$1 #jenkins传进来的参数
new_tag=${image_path}
base_tag=$(sed -n '/#tag#/p' ${compose_file} |awk -F'#' '{print $3}') #提取docker-compose.yml的镜像tag
sed -ri "/#tag#/ s@^(.*)(#tag#)(.*)@\1${new_tag}@" ${compose_file} #替换为新的tag
}

######################主函数######################
Build_Image
Update_Compose

set +e

​7.将整个项目上传到gitlab​

cd dev_lnmp
sudo git add .
git commit -m "add c1"
git push

第2集(GItlab+Jenkins+SonarQube+Docker+Harbor+Selenium实现CI/CD之LNMP项目准备)_linux_09

三、Harbor创建项目

第2集(GItlab+Jenkins+SonarQube+Docker+Harbor+Selenium实现CI/CD之LNMP项目准备)_mysql_10
第2集(GItlab+Jenkins+SonarQube+Docker+Harbor+Selenium实现CI/CD之LNMP项目准备)_docker_11

四、将公共镜像如mysql镜像上传到library项目(Jenkins机器操作)

​1.配置docker信任仓库​

sudo vim /etc/docker/daemon.json

"insecure-registries": ["172.16.38.202:8010"]

第2集(GItlab+Jenkins+SonarQube+Docker+Harbor+Selenium实现CI/CD之LNMP项目准备)_mysql_12

sudo systemctl restart docker

​2.打标签​

docker tag  mysql:8.0.18   172.16.38.202:8010/library/mysql:8.0.18

​3.上传镜像​

docker login http://172.16.38.202:8010 -u admin -p admin
docker push 172.16.38.202:8010/library/mysql:8.0.18

​4.仓库查看​

第2集(GItlab+Jenkins+SonarQube+Docker+Harbor+Selenium实现CI/CD之LNMP项目准备)_docker_13


举报

相关推荐

0 条评论