Linux中Git设置;Jenkins中添加git配置;Jenkins中配置Maven;写Git流水线;写maven流水线

一,Linux中安装Git

1、上传文件

将git压缩包上传到服务器上,git-2.33.0.tar.gz

2、解压压缩包

tar -zxvf git-2.33.0.tar.gz

3、安装所需依赖

 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

【输入 y 】

若执行“安装所需依赖”的命令时,报错!报错信息如下:

更改一下目录中文件,其实是更改yum的配置源 网址。

4、编译

进入解压后的目录,执行make命令。

make prefix=/usr/local/git all

5、安装

make prefix=/usr/local/git install

6、修改环境变量

#打开配置文件
vim /etc/profile

(将下面一行的代码,复制粘贴到上面的配置文件里)
#set git
export PATH=$PATH:/usr/local/git/bin

#加载一下配置文件
source /etc/profile

7、检查git

git --version

8、在Jenkins中添加git配置

二、写Git流水线

初识流水线。从git上拉取代码到虚拟机。

【第一步:创建一个新的流水线】

【第二步:定义名字】

#上面的操作生成出来的代码:
node {
    git branch: 'develop', credentialsId: '9a19cd80-bb02-4e8b-b126-f023bdebea7b', url: 'https://gitee.com/wztsl/dz12-demo01.git'
}

三,Linux中Maven设置

【配置maven,把刚才下载的项目代码,打包发布出来,在宿主机上访问,就算成功。】

1、安装

1.1、上传压缩包

上传文件apache-maven-3.3.9-bin.tar.gz

1.2、解压
tar -zxvf apache-maven-3.3.9-bin.tar.gz

1.3、配置环境变量

#第一个命令,编辑/etc/profile
vim /etc/profile

#set maven
MAVEN_HOME=/usr/local/maven/apache-maven-3.3.9
PATH=${MAVEN_HOME}/bin:${PATH}
export PATH
1.4、加载环境变量
source /etc/profile

1.5、测试maven安装是否成功
mvn -v

1.6、替换maven源

去掉注解

#打开setting文件,修改中央仓库为阿里的,不然速度太慢
vim /usr/local/maven/apache-maven-3.3.9/conf/settings.xml

# 找到<mirrors></mirrors>标签对,添加以下内容
<mirror>
   <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
   <releases>
      <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
    </releases>
    <snapshots>
      <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
    </snapshots>
</mirror>

# 指定下载源位置
<localRepository>/usr/local/maven/apache-maven-3.3.9/repository</localRepository>

【注意:需要自己创建/usr/local/maven/apache-maven-3.3.9/repository目录】

2、Jenkins中配置Maven

四,写maven流水线

目的

        拉取最新代码,将代码打包好,做成镜像,上传到docker中,然后启动容器,外部可以访问。

  • 通过git拉取代码

  • 用Dockerfile检查是否存在容器和镜像,如果存在则删除

  • 编译,打包

  • 创建docker镜像

  • 启动docker容器

第一段流水线:git拉取代码

【一步一步测试流水线代码:】

node {
    stage('pull code'){
       git credentialsId: '8bea9def-ba4d-433c-a4b3-14c26be75f1b', url: 'https://gitee.com/mayang3366/jenkins-demo1.git'
    }
}

第二段流水线:将下载的项目进行打包

node {
	stage('compile'){
#jenkinsDemo1的名字一定要是虚拟机里 /var/lib/jenkins/workspace 路径下存在的。该流水线的目的在于打包该项目。
        dir('/var/lib/jenkins/workspace/jenkinsDemo1'){   
            sh 'mvn clean install'
        }
    }
}

【通过下面的命令操作,查看一下/var/lib/jenkins/workspace 里的项目名】

第三段流水线:将打包后的项目做成docker镜像

【以上操作,完成第二段流水线就可以实现】

【注意:停掉服务后,删除掉workspace目录下的该项目,希望通过流水线来实现效果。】

【流水线代码如下:】

checkout=0
node {
    stage('pull code'){
       git credentialsId: '8bea9def-ba4d-433c-a4b3-14c26be75f1b', url: 'https://gitee.com/mayang3366/jenkins-demo1.git'
    }
	stage('compile'){
        dir('/var/lib/jenkins/workspace/jenkinsDemo1'){   
            sh 'mvn clean install'
        }
    }
    stage('make docker container'){
        dir('/var/lib/jenkins/workspace/jenkinsDemo1/target'){
            sh "echo FROM openjdk:8 > Dockerfile"
            sh "echo ADD testNginx-1.0-SNAPSHOT.jar /app.jar >> Dockerfile"
            sh "echo RUN bash -c '\"'touch /app.jar'\"' >> Dockerfile"
            sh "echo ENTRYPOINT ['\"'java'\"','\"'-jar'\"','\"'/app.jar'\"'] >> Dockerfile"
            sh "echo  RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime >> Dockerfile"
            sh "docker build -t jenkinsdemo1 ."    
        }
    }
}
## 注意注意:docker build -t jenkinsdemo1 . 命令中的镜像名不能有大写字母。

#创建容器并运行,d1是容器名,
docker run --name d1 -p 8888:8888 -d jenkinsdemo1

第四段流水线:通过镜像创建容器并启动

checkout=0
node {
    stage('pull code'){
       git credentialsId: '8bea9def-ba4d-433c-a4b3-14c26be75f1b', url: 'https://gitee.com/mayang3366/jenkins-demo1.git'
    }
    stage('check docker container'){
        if(fileExists('/var/lib/jenkins/workspace/jenkinsDemo1/target/Dockerfile')){
            sh 'docker stop d1'
            sh 'docker rm d1'
            sh 'docker rmi jenkinsdemo1'
        }
    }
	stage('compile'){
        dir('/var/lib/jenkins/workspace/jenkinsDemo1'){   
            sh 'mvn clean install'
        }
    }
    stage('make docker container'){
        dir('/var/lib/jenkins/workspace/jenkinsDemo1/target'){
            sh "echo FROM openjdk:8 > Dockerfile"
            sh "echo ADD testNginx-1.0-SNAPSHOT.jar /app.jar >> Dockerfile"
            sh "echo RUN bash -c '\"'touch /app.jar'\"' >> Dockerfile"
            sh "echo ENTRYPOINT ['\"'java'\"','\"'-jar'\"','\"'/app.jar'\"'] >> Dockerfile"
            sh "echo  RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime >> Dockerfile"
            sh "docker build -t jenkinsdemo1 ."    
        }
    }
    stage('start'){
        sh 'docker run --name d1 -p 8888:8888 -d jenkinsdemo1'
    }
}

注意:/var/lib/jenkins/workspace/jenkinsDemo1    “jenkinsDemo1”是项目名,可以有大写字母
     docker rmi jenkinsdemo1   jenkinsdemo1 是镜像名,不可以有大写字母

node:节点,Jenkins支持分布式,可以给节点命名,master是主节点,不要修改。

stage:声明步骤

fileExists:判断文件是否存在

dir:进入某个目录

第五段流水线:删除已存在的容器和镜像

        checkout是用于判断是否存在镜像和容器的标识,上面的流水线中并未操作它,不声明也不会报错。但是,如果在mvn install时报错,会导致流水线不继续运行,就不会生成Dockerfile文件,那么再次执行流水线时,还是会因为已经有了d1这个容器而启动报错。

研究用什么办法解决这个问题?

5.1.手动操作解决方式

5.2.流水线代码解决方式
checkout=0
node {
    stage('pull code'){
       git credentialsId: '33f634b9-9f08-43f0-9620-d538fee2c7f5', url: 'https://gitee.com/star-snake/my-self.git'
    }
    stage('check docker container'){
       script{
          checkout=sh(
                script: 'docker ps | grep d1',
                returnStatus: true
          )
      }	
    }
    stage('compile'){
        dir('/var/lib/jenkins/workspace/learnjenkinsgitee'){   
            sh 'mvn clean install'
        }
    }

    stage('remove docker container'){
        if(checkout==0){
            sh 'docker stop d1'
            sh 'docker rm d1'
            sh 'docker rmi jenkinsdemo1'
        }
    }

    stage('make docker container'){
        dir('/var/lib/jenkins/workspace/learnjenkinsgitee/target'){
            sh "echo FROM openjdk:8 > Dockerfile"
            sh "echo ADD Nginx-1.0-SNAPSHOT.jar  /app.jar >> Dockerfile"
            sh "echo RUN bash -c '\"'touch /app.jar'\"' >> Dockerfile"
            sh "echo ENTRYPOINT ['\"'java'\"','\"'-jar'\"','\"'/app.jar'\"'] >> Dockerfile"
            sh "echo  RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime >> Dockerfile"
            sh "docker build -t jenkinsdemo1 ."    
        }
    }
    stage('start'){
        sh 'docker run --name d1 -p 8888:8888 -d jenkinsdemo1'
    }
}

说明:

git拉起代码:第一步

检查是否有容器和镜像存在:第二步

打包代码:第三步

删除已存在的容器和镜像:第四步

把打包后的代码做成镜像:第五步

通过镜像创建容器并运行:第六步

以上代码为所有流水线代码综合;

结果如下,Maven流水线设置成功

补:以下标记处,以实际情况进行符合自身的修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值