首页 > 其他分享 >gitlab和Jenkins的CICD 流水线

gitlab和Jenkins的CICD 流水线

时间:2022-09-23 18:35:34浏览次数:46  
标签:git CICD gitlab echo sh Jenkins root stage

一、基于jenkins和gitlab的ci cd

1)基于docker安装gitlab

1.1)pull镜像

docker pull gitlab/gitlab-ce:latest  官方镜像
docker pull registry.cn-hangzhou.aliyuncs.com/imooc/gitlab-ce:latest  阿里云镜像

1.2)在固定位置。建立启动脚本

#!/bin/bash
HOST_NAME=gitlab.mooc.com
#GITLAB_DIR=`pwd`
GITLAB_DIR=/data/gitlab
docker stop gitlab
docker rm gitlab
docker run -d \
    --hostname ${HOST_NAME} \
    -p 9443:443 -p 9080:80 -p 2222:22 \
    --name gitlab \
    -v ${GITLAB_DIR}/config:/etc/gitlab \
    -v ${GITLAB_DIR}/logs:/var/log/gitlab \
    -v ${GITLAB_DIR}/data:/var/opt/gitlab \
        registry.cn-hangzhou.aliyuncs.com/imooc/gitlab-ce:latest
start.sh

执行sh start.sh 。生成持久化的存储的目录

[root@node01 ~]# ll /data/gitlab/
total 8
drwxrwxr-x  3 root root  239 Jun 28 18:01 config
drwxr-xr-x 18 root root 4096 Jun 28 17:56 data
drwxr-xr-x 19  998 root  314 Jun 28 17:56 logs
-rw-r--r--  1 root root  399 Jun 28 17:54 start.sh

1.2)访问gitlab

 

 第一次登陆,创建root账号的登陆密码

注册一个普通账户进行持久化的测试

1.3)普通用户创建一个私有仓库

1.4)创建好项目后,需要添加ssh-key。在需要使用git的服务器上面把id_rsa.pub添加进来

 

二、安装jenins

需要提前配置 java环境 mvn环境

1.1) 安装jenkins

https://jenkins.io/zh/doc/pipeline/tour/getting-started/

下载war包: http://mirrors.jenkins.io/war-stable/latest/jenkins.war

 

 java -jar jenkins.war --httpPort=8080 运行过程中会生成一个密码

 

1.2) 配置插件。选择插件安装

需要把 pipelines的都添加进来

 1.3)安装好插件后,创建账号

 2) 测试流水线

 

里面暂时什么也不做配置,直接构建任务,查看流水线 是否正常执行

 三、gitlab与jenkins

1)在jenkins中配置 job

钩子为JENKINS_URL/job/test/build?token=TOKEN_NAME ==》  http://192.168.1.5:8080/job/test/build?token=123456

1.1) 在全局设置中

去掉跨站点伪造保护

2)在gitlab中,选择 Intergrations,配置钩子,触发的条件。push代码就触发一些动作

 2.1)配置钩子地址(为jenins的地址令牌)

 2.2)此时配置该项,无法生效。无法向本地网络发送请求。请修改下面配置

 2.3)钩子配置了测试。模拟发送push请求

在jenins中可看到最新构建的任务

 四、编辑流水线语法

1)可查看流水线语法

2)流水线拉取代码编写

#!groovy
pipeline {
    agent any
    
    environment {
        REPOSITORY="[email protected]:root/myapp.git"
    }
    
    stages {
        stage('获取代码') {
            steps {
                echo "start fetch code from git:${REPOSITORY}"
                deleteDir()
                git "${REPOSITORY}"
            }
        }
    }
}

直接在jenkins上面构建查看是否能执行成功

 构建成功后会在Jenkins的服务器上生成一个文件

 五、流水线到k8s的镜像更新

#!groovy
pipeline {
    agent any
    
    environment {
        REPOSITORY="[email protected]:root/myapp.git"
        MODULE="user-edge-service"
        SCRIPT_PATH="/opt/scripts"
    }
    
    stages {
        stage('获取代码') {
            steps {
                echo "start fetch code from git:${REPOSITORY}"
                deleteDir()
                git "${REPOSITORY}"
            }
        }
        
        stage('代码静态检查') {
            steps {
                echo "start code check"
            }
        }    
    
        stage('编译') {
            steps {
                echo "start compile"
                sh "mvn -U -pl ${MODULE} -am clean package"
            }
        }
        
        stage('构建镜像') {
            steps {
                echo "start build image"
                sh "${SCRIPT_PATH}/build-images.sh ${MODULE}"
            }
        }
        
        stage('发布系统') {
            steps {
                echo "start deploy"
                sh "${SCRIPT_PATH}/deploy.sh user-service-deployment ${MODULE}"
            }
        }
    }
}
View Code

在构建镜像需要执行脚本

#!/bin/bash

MODULE=$1
TIME=`data "+%Y%m%d%H%M"`
GIT_REVISION=`git log -1 --pretty=format:"%h"`
IMAGE_NAME=harbor.com:8080/test/${MODULE}:${TIME}_${GIT_REVISION}

cd ${MODULE}

docker build -t ${IMAGE_NAME} .

cd -

docker push ${IMAGE_NAME}
echo "${IMAGE_NAME}" > IMAGE_NAME
build-images.sh

chmod 755 build-images.sh 

在服务进行镜像更新时

#!/bin/bash

IMAGE=`cat IMAGE_NAME`
DEPLOYMENT=$1
MODULE=$2
echo "updata image to:${IMAGE}"
kubect set image deployments/${DEPLOYMENT} ${MODULE}=${IMAGE}
deploy.sh

chmod 755 deploy.sh

 六、纯粹调用shell脚本

1)创建自由风格

 

 2)构建触发器,直接调用shell脚本进行部署代码

 

 

 

 

 

 

 

 

 

 

 

gitlab的ci工具

stages:
  - build
  - test
  - deploy
  
job1:
  stage: test
  tags:
    - demo
  script:
    - echo "I am job1"
    - echo "I am in test stage"
    
job2:
  stage: build
  tags:
    - demo
  script:
    - echo "I am job2"
    - echo "I am build stage"
    
job3:
  stage: deploy
  tags:
    - demo
  script:
    - echo "I am job3"
    - echo "I am deploy stage"

 

标签:git,CICD,gitlab,echo,sh,Jenkins,root,stage
From: https://www.cnblogs.com/linu/p/11080777.html

相关文章

  • jenkins主从部署
    参考:https://www.jianshu.com/p/8f2d27c38373前提:1、主服务按照常规方式部署jenkins服务2、主从服务器均安装jdk(建议版本一致)3、主服务ip:10.0.1.100,从服务ip:10.0.1.2......
  • jenkins pipeline notes
    获取触发用户:defBUILDER_USER="${currentBuild.getBuildCauses()[0].userId}"由上游项目触发时获取上游项目构建信息和触发用户:post{always{script......
  • gitlab部署
    目录gitlab部署gitlab管理gitlab部署//关闭防火墙和selinux[root@localhost~]#systemctldisable--nowfirewalld.serviceRemoved/etc/systemd/system/multi-use......
  • jenkins构建触发器定时任务
    定时器构建语法*****星号中间用空格隔开第一个*表示分钟,取值0~59第二个*表示小时,取值0~23第三个*表示一个月的第几天,取值1~31第四个*表示第几月,取值1~12第五......
  • jenkins发版绑定钉钉机器人报警
    使用场景:每次dev,rls或线上发版时,都能第一时间提醒通知发版的开发测试人员知悉。解决方案:1.在钉钉群里创建钉钉机器人,钉钉群=>  群设置  => 智能群助手  => 添......
  • Jenkins 20220922笔记本2
                                  ......
  • 版本控制gitlab
    版本控制gitlab目录版本控制gitlab版本控制介绍常用的版本控制工具:gitlab部署版本控制介绍版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更......
  • gitlab部署
    目录gitlab部署gitlab部署安装所需得包[[email protected]]#dnf-yinstallepel-releasegitopenssh-serveropenssh-clientspostfixcronie设置postfi......
  • gitlab
    gitlab目录gitlabgitlab仓库管理系统gitlab特点gitlab部署gitlab仓库管理系统GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的......
  • gitlab
    版本控制gitlab目录1.版本控制介绍2.gitlab部署1.版本控制介绍版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核......