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

环境:

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

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

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/

安装国内加速器: 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

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

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脚本

模板:

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 '''
TIME=$(date +%Y%m%d%H%M)
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模板:

node (){ //指定Slave标签
//拉取代码
stage('Git Checkout') {
checkout([$class: 'GitSCM', branches: [[name: '*/k8s']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'git@code.aliyun.com:mtr-sscp/sscp-transaction.git']]])
}
//代码编译
stage('Maven Build') {
sh '''
export JAVA_HOME=/usr/local/java
/usr/local/maven/bin/mvn clean package -Pk8s -Dmaven.test.skip=true
'''
}
stage('Build and Push Image') {
sh '''
TIME=latest
echo ${TIME} >TIME.txt
REPOSITORY=172.31.182.143/k8s/sscp-transaction:${TIME}
cp Dockerfile target/
cd target
docker build -t $REPOSITORY .
docker login -u admin -p Harbor%12345 172.31.182.143
docker push $REPOSITORY
'''
}
stage('Deploy to k8s') {
sh 'K8S_MASTER="172.31.182.152";APP="sscp-transaction";ssh ${K8S_MASTER} kubectl delete deployment.apps/${APP};ssh ${K8S_MASTER} istioctl kube-inject -f /root/sscp/${APP}/${APP}.yaml "|" kubectl apply -f -'
}
}

Jenkins+Docker+Git+Harbor流水线打包的更多相关文章

  1. jenkins+docker+git+harbor构建及代码回滚(未完)

    目录 一.部署 环境工作流程介绍 部署harbor 一.部署 前提环境说明 192.168.111.3 该机器为git本地仓库,及git远程仓库(git用户创建),及Harbor镜像仓库 192.16 ...

  2. 基于 Jenkins+Docker+Git 的CI流程初探

    在如今的互联网时代,随着软件开发复杂度的不断提高,软件开发和发布管理也越来越重要.目前已经形成一套标准的流程,最重要的组成部分就是持续集成(Continuous Integration,CI)及持续部 ...

  3. 从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布

    一.前言 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件.Jenkins 支持各种运行方式,可通过系统包.Docker 或者通过一个独立的 Java ...

  4. Jenkins+Docker+Git+Registry

    从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布   笔者:@拿着保温瓶的年轻人 目录: 一.前言 二.发布流程 三.环境准备 四.部署思路梳理 五.三台机器上操作 ...

  5. Jenkins+Docker+Git 自动化部署

    Jenkins+Docker+Git 自动化部署图文教程 https://blog.csdn.net/qq_38252039/article/details/89791247 前言: 通过几天的学习和 ...

  6. Jenkins + Docker + dockerfile-maven-plugin + Harbor CI/CD spring-boot项目的最轻量级配置

    说明 本文只为方便日后查阅,记录一些关键性的步骤和踩坑的情况. dockerfile-maven-plugin构建镜像配置 <plugin> <groupId>com.spot ...

  7. jenkins+docker+git+etcd实现应用配置文件管理

    两台机器: 一台机器安装gitlab: http://www.cnblogs.com/cjsblogs/p/8716932.html 另一台机器安装etcd+docker+jenkins jenkin ...

  8. Jenkins使用Git Parameter插件打包

    一. 下载Git Parameter插件: 二. 项目配置: Shell脚本: #!/bin/bash -l echo $deploy_envcase $deploy_env in deploy) e ...

  9. jenkins+docker持续集成实验

    在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署.交付(CD).本文基于Jenkins+Docker+Git实现 ...

随机推荐

  1. Excel VBA解读(54):排序——Sort方法

    Excel VBA解读(54):排序——Sort方法 看看下面的Excel界面截图,“排序”和“筛选”往往在一起,这大概是很多数据需要先排序后筛选吧  首先以“性别”作为排序字段,升序排列,并且第一行 ...

  2. FineReport简单部署

    一.部署方式 1.官网发布包部署 2.自定义tomcat部署 二.发布包部署 1.下载一个发布包:https://www.finereport.com/product/download 解压后打开bi ...

  3. Network Lock Manager Protocol (NLM)

    资料来源 https://wiki.wireshark.org/Network_Lock_Manager 目的 The purpose of the NLM protocol is to provid ...

  4. notepad++去掉红色波浪线

    1 在notepad++的首页上找到插件菜单,并点击打开插件设置的下拉菜单.   2 下拉菜单中有一个菜单项是DSpellCheck,这个菜单项的子项中有一项是Spell Check Document ...

  5. SpringMVC基本

    SpringMVC和Struts2的区别 SpringMVC与Struts2区别 对比项目 SrpingMVC Struts2 优势 国内市场情况 有大量用户,一般新项目启动都会选用springmvc ...

  6. K8S使用入门-创建第一个容器

    前面两个教程我们已经使用kubekit将K8S搭建起来了.但是,没有将实际使用中需要在K8S上部署我们的容器创建起来的教程,都是耍流氓.所以,经过几番折腾,我回来给自己洗白了.之前一直卡在创建第一个容 ...

  7. UltraISO制作启动U盘

    使用UltraISO可以制作纯净版本启动U盘 下载 下载地址https://cn.ultraiso.net/ 打开ISO镜像 下载后双击安装完成以后打开软件 文件-打开-选择一个ISO镜像,例如win ...

  8. FTP 客户端工具(支持 Windows/Unix/Linux)

    FTP 客户端工具,支持 Windows/Unix/Linux

  9. mysql8.0 caching_sha2_password的坑

    先来解释一下为什么会报这个错,在mysql8之前的版本使用的密码加密规则是mysql_native_password,但是在mysql8则是caching_sha2_password. 解决方案有很多 ...

  10. Linux系统下的SSH 使用总结

    对于linux运维工作者而言,使用ssh远程远程服务器是再熟悉不过的了!对于ssh的一些严格设置也关系到服务器的安全维护,今天在此,就本人工作中使用ssh的经验而言,做一些总结记录来下. -bash: ...