Jenkins+Docker+Git+Harbor流水线打包


           Jenkins+Docker+Git+Harbor流水线打包


环境:

1
2
3
4
5
CentOS Linux release 7.6.1810 (Core)
192.168.247.214    Jenkins+docker
192.168.247.215    git+harbor
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld

Step1: 安装jdk环境(214)

下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html

1
2
3
4
5
6
7
8
9
10
11
tar -xf jdk-8u171-linux-x64.tar.gz
mv jdk1.8.0_171/ /usr/local/java
cat >>/etc/profile <<EOF
> JAVA_HOME=/usr/local/java
> PATH=$PATH:$JAVA_HOME/bin
> EOF
source /etc/profile
[root@localhost ~]# java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

Step2:安装Jenkins

tomcat下载地址:https://mirrors.aliyun.com/apache/tomcat/tomcat-8/v8.5.38/bin/apache-tomcat-8.5.38.tar.gz
Jenkins下载地址:http://mirrors.jenkins.io/war-stable/latest/jenkins.war

1
2
3
4
5
6
wget https://mirrors.aliyun.com/apache/tomcat/tomcat-8/v8.5.38/bin/apache-tomcat-8.5.38.tar.gz
tar -xf apache-tomcat-8.5.38.tar.gz
mv apache-tomcat-8.5.38 /usr/local/tomcat_jenkins
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
mv jenkins.war /usr/local/tomcat_jenkins/webapps/
bash /usr/local/tomcat_jenkins/bin/startup.sh

访问地址:http://192.168.247.214:8080/jenkins/

Step3:安装docker(2台都装)

官方文档地址:https://docs.docker.com/install/linux/docker-ce/centos/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
安装国内加速器: curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
 
$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
 
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
 
$ yum install docker-ce -y
 
$ sudo systemctl start docker && systemctl enable docker

Step4:安装docker-compose

下载地址:https://github.com/docker/compose/releases

1
2
curl -L https://github.com/docker/compose/releases/download/1.24.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

 Step5:安装Harbor

​    Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中,确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

下载Harbor地址:https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.4.tgz

1
2
3
4
5
6
7
8
9
tar -xf harbor-offline-installer-v1.7.4.tgz
cd harbor
#vim harbor.cfg
hostname = 192.168.247.215
./prepare
./install.sh
Harbor仓库的stop与start:
进入Harbor目录执行如下命令即可:
docker-compose stop/start

访问地址:http://192.168.247.215
默认用户密码是:admin/Harbor12345

  Step6:配置jenkins

1、创建pipeline项目

2、参数化构建

3、编写pipeline脚本

模板:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
node (){ //指定Slave标签
    //拉取代码
   stage('Git Checkout') {
      checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'git@code.aliyun.com:mtr-sscp/sscp-antipass.git']]])
   }
   //代码编译
   stage('Maven Build') {
        sh '''
        export JAVA_HOME=/usr/local/java
        /usr/local/maven/bin/mvn clean package -Dmaven.test.skip=true
        '''
   }
   stage('Build and Push Image') {
sh '''<br>TIME=$(date +%Y%m%d%H%M)<br>echo ${TIME} >TIME.txt
REPOSITORY=172.31.182.143/dev/sscp-antipass:${Tag}
cd target
cat >> Dockerfile <<EOF
# 以java:8为基础镜像
FROM java:8
MAINTAINER du.cn
# 告诉 Docker 服务端容器暴露的端口号
EXPOSE 8100
# 创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。
VOLUME /tmp
# 格式为 ADD <src> <dest>。
# 该命令将复制指定的 <src> 到容器中的 <dest>。 其中 <src> 可以是Dockerfile所在目录的一个相对路径;也可以是一个 URL;还可以是一个 tar 文件(自动解压为目录)。
ADD sscp-antipass.jar /app.jar
# 从命令本身看,是为了执行一个touch命令,前面的add命令把jar复制过去,后面touch命令的作用是修改这个文件的访问时间和修改时间为当前时间。
RUN bash -c 'touch /app.jar'
# container启动时执行的命令,但是一个Dockerfile中只能有一条ENTRYPOINT命令,如果多条,则只执行最后一条
ENTRYPOINT ["java","-jar","/app.jar"]
EOF
docker build -t $REPOSITORY .
docker login -u admin -p Harbor%12345 172.31.182.143
docker push $REPOSITORY
'''
}
    stage('Deploy to Docker') {
        sh '''
        REPOSITORY=172.31.182.143/dev/sscp-antipass:${Tag}
        docker rm -f antipass |true
        docker image rm $REPOSITORY |true
        docker login -u admin -p Harbor%12345 172.31.182.143
        docker run -p 8100:8100 -v /home/sscp/sscp-antipass/dockerDeploy/logs:/logs -d --name antipass  $REPOSITORY
        '''
    }
}

 Git Checkout在Pipeline Syntax自动生成。

6、完成构建

 发布到K8s pipeline模板:

 

posted @   西门运维  阅读(4706)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示