1.项目架构的代码仓库使用gitlab托管

架构描述我不打算用过多文字描述了,来我们一起直接看图吧....

二.将测试代码上传到gitlab

1.注册gitlab账户

此处使用本地搭建仓库

2.创建仓库名称为"idiaoyan"

如下图所示,安装图解方式创建相应的用户即可。

在这里插入图片描述

3.将本地代码上传到"idiaoyan"仓库在这里插入图片描述

#(1)解压静态文件
上传代码到/data/code下
[root@master code]# unzip yiliaoqixie
#(2)Git本地提交代码到本地仓库
cd /data/code
git init
git config --global user.name "liuyan"
git config --global user.email "liuyan@qq.com"
git config --global credential.helper store  #后面拉取不要密码
mv yiliaoqixie/* idiaoyan/
cd idiaoyan/
#(3)git推送代码到gitlab的远程仓库
git add .
git commit -m "add code"
git push -u origin master

三.提交dockerfile文件

1.编写dockerfile

#(1)编写dockerfile内容如下
cat > Dockerfile <<EOF
FROM idy.com/harbor/alpine:latest

LABEL auther="idy.com"

LABEL school="oldboyedu" \
      class="linux" \
      address="北京,上海,深圳"

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
    apk update && \
    apk add nginx && \
    rm -rf /var/cache/ && \
    rm -rf /usr/share/nginx/html/*

# ADD idiaoyan.tar.gz /usr/share/nginx/html/
ADD . /usr/share/nginx/html/

EXPOSE 80

COPY default.conf /etc/nginx/http.d/default.conf

CMD ["nginx","-g","daemon off;"]
EOF
#(2)本地测试编译
[root@master idiaoyan]# docker build -t yiliao:v1 .

2.启动容器测试可用性

[root@master idiaoyan]# docker container run -itdp 80:80 yiliao:v1

在这里插入图片描述

3.推送dockerfile文件到仓库中

[root@master idiaoyan]# git add Dockerfile
[root@master idiaoyan]# git commit -m "add Dockerfile"
[master 6d3fc7b] add Dockerfile
 1 file changed, 16 insertions(+)
 create mode 100644 Dockerfile
[root@master idiaoyan]# git push -u origin master

4.部署Jenkins并配置项目源码管理(gitlab环境)

1.部署jenkins服务

Jenkins 快速部署

1.1上传Jenkins 相关文件

上传以下文件
在这里插入图片描述

1.2 部署jenkins 服务

cd /data/jenkins
jenkins.gz  && mv jenkins/* ./
unzip jenkins.tar.zip
docker load -i jenkins.tar

#直接启动:
docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 cr.idiaoyan.cn/public/jenkins:2.319.2-b17bf827
#docker-compose.yml启动
#可能遇到问题,检查对象的目录文件
version: '3.8'
services:
  myjenkins:
    container_name: myjenkins
    hostname: myjenkins
    image: cr.idiaoyan.cn/public/jenkins:2.319.2-b17bf827
    restart: unless-stopped
    ports:
      - 8080:8080
      - 50000:50000
    environment:
      - TZ=CST-8
    volumes:
      - /data/jenkins/mount/jenkins.yml:/var/jenkins_home/jenkins.yml  
      - /data/jenkins/mount/Dockerfile_openresty:/var/jenkins_home/tools/Dockerfile_openresty
      - /usr/bin/docker:/usr/bin/docker
      - /run/docker.sock:/run/docker.sock
      - /data/jenkins/mount/workspace/:/var/jenkins_home/workspace/

在这里插入图片描述

1.2 创建项目

在这里插入图片描述

1.2.1 添加项目的存储库RUL

在上一步完成之后,会弹出如下图所示对话框,依次点击"源码管理" ---> "Git" ---> "Repositories" ---> ”Repository URL"中添加项目的存储库RUL

在这里插入图片描述

1.2.2 添加凭证(Credentials)信息

依次点击上一步Credentials的"添加"按钮 ---> "jenkins",
就会弹出如下图所示的对话框,然后根据你的账号密码登录即可。

在这里插入图片描述

1.2.3 配置构建指令

如下图所示:
依次点击"构建" ---> "增加构建步骤" ---> 选择"执行shell" ---> "保存"

在这里插入图片描述

1.2.4 点击立即构建

如下图所示,点击"立即构建",就可以成功构建当前的"idiaoyan"这个工程了。

在这里插入图片描述

1.2.5 查看控制台输出

在这里插入图片描述

5.使用Jenkins实现自动构建镜像并推送到私有仓库

1.重新编辑"执行shell的命令"

#jenkins 认证harbor仓库
[root@jenkins jenkins]# docker login idy.com
Username (admin): admin
Password: idy123456
Login Succeeded
docker build -t idy.com/harbor/yiliao:$version .
docker image push  dy.com/harbor/yiliao:$version

在这里插入图片描述

2.添加字符参数

如下图所示:
依次点击"General" ---> "参数化构建过程" ---> "添加参数" ---> 选择"字符参数" ---> 填写"version"变量即可。

在这里插入图片描述
在这里插入图片描述

3.开始传入参数构建

如上图所示,依次点击"Build with Parameters" ---> 输入"version"变量的版本信息 ---> "开始构建"。
如下图所示,构建完成之后,我们可以依次点击"#2"的下拉菜单 ---> 选择查看"控制台输出"的信息。

在这里插入图片描述

4.构建完成后查看镜像是否生成

如下图所示,我们查看了"控制台输出",很明显能看到镜像推送成功了,而且在存储库的确有相关的tag记录哟。
温馨提示:
	我们假设私有仓库的存储卷路径为"$volume",则其对应的"yiliao"项目的tag存储为位于"$volume/docker/registry/v2/repositories/yiliao/_manifests/ta
gs/"

4.1 使用 jenkins pipline 实现 拉取,构建,推送

后面jenkins CICD均有pipline 完成,以下是pipline 脚本,其中添加字符参数与上方一至

pipeline{
    agent any
	// 参数化构建
    parameters {
    //string(defaultValue: '', description: '回滚到指定的版本,这里填入时间戳', name: 'rollback_version', trim: true)
	string(defaultValue: '', description: '回滚到指定的版本,这里填入时间戳', name: 'version', trim: true)
	}	
    // 丢弃旧的构建
	options {
		buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '15', numToKeepStr: '20'))
	}	
	// 定义环境变量
	 environment {
	    //gitlab相关信息	
		harbor_address="idy.com"
		work_space_yiliao="/var/jenkins_home/workspace/test-yiliao"
	 }	
    stages("Build") {
		stage('拉取代码'){
		steps {
			script{
			sh "cd ${work_space_yiliao}  &&  rm -r -f idiaoyan"
			//拉取代码的方式:ssh或者http,根据项目实际情况选择
			sh "git clone http://192.168.221.143:9000/liuyan/idiaoyan.git idiaoyan"
				}
			}
		
		}
			
		stage('构建镜像'){
		steps {
			script{
			sh "cd ${work_space_yiliao}/idiaoyan && docker build -t idy.com/harbor/yiliao:$version ."	       
			//sh "docker image push  idy.com/harbor/yiliao:$version"	  
				}
			}
		
		}	
			
		stage('推送镜像'){
		steps {
			script{   
			sh "docker image push  idy.com/harbor/yiliao:$version"	  
				}
			}
		
		}	
	}
}

4.2 查看推送结果

  • 查看harbor
    在这里插入图片描述

  • 查看Jenkins 推送结果
    在这里插入图片描述

5. k8s 持续集成

做到这里,发现自己K8s 知识很乱很不系统。学完K8s再继续编辑这部分;
其实简单的来做就是把K8S 命令(命令式)加入jenkins pipline 中

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐