容器 之搭建 jenkins ci 平台
1 部署 gitlab
docker run -d \
--name gitlab \
-p 8443:443 \
-p 80:80 \
-p 9998:22 \
-v $PWD/config:/etc/gitlab \
-v $PWD/logs:/var/log/gitlab \
-v $PWD/data:/var/opt/gitlab \
-v /etc/localtime:/etc/localtime \
lizhenliang/gitlab-ce-zh:latest
访问地址: http://ip
用户名 root 密码 刚设置的
2 创建项目 提交测试代码
gitlab 创建一个仓库地址
# 克隆仓库地址
git clone http://10.0.0.70/root/java-demo.git
# 解压测试代码
#提交代码
3 部署 Harbor
https://www.cnblogs.com/augustyang/p/11912688.html
4 jenkins 安装
# 安装jdk
# tar zxvf jdk-8u45-linux-x64.tar.gz
ln -s /usr/local/jdk1.8.0_45/ /usr/local/jdk
#安装maven
# tar zxf apache-maven-3.5.0-bin.tar.gz
ln -s /usr/local/apache-maven-3.5.0/ /usr/local/maven
docker run -d --name jenkins -p 80:8080 -p 50000:50000 -u root \
-v /opt/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
-v /usr/local/apache-maven-3.5.0:/usr/local/maven \
-v /usr/local/jdk1.8.0_45:/usr/local/jdk \
-v /etc/localtime:/etc/localtime \
--name jenkins jenkins/jenkins:lts
#使用/root/.ssh中私钥访问gitlab
ssh-keygen -t rsa
cat .ssh/id_rsa.pub
#安装 git pipeline 插件
# 配置国内镜像地址
sed -i 's@http://updates.jenkins-ci.org/download@https://mirrors.tuna.tsinghua.edu.cn/jenkins@g' default.json
sed -i 's@http://www.google.com@https://www.baidu.com@g' default.json
5 jenkins 发布
① Pipline 脚本
#!/usr/bin/env groovy def registry = "10.0.0.60"
def project = "dev"
def app_name = "java-demo"
def image_name = "${registry}/${project}/${app_name}:${Branch}-${BUILD_NUMBER}"
def git_address = "http://10.0.0.70/root/java-demo.git"
def docker_registry_auth = "5f86fdc6-dc2f-4cd5-9740-a7bbf6b9b1f9"
def git_auth = "db953d02-d4f3-4acc-837b-ee580e71901b" pipeline {
agent any
stages {
stage('拉取代码'){
steps {
checkout([$class: 'GitSCM', branches: [[name: '${Branch}']], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]])
}
} stage('代码编译'){
steps {
sh """
JAVA_HOME=/usr/local/jdk
PATH=$JAVA_HOME/bin:/usr/local/maven/bin:$PATH
mvn clean package -Dmaven.test.skip=true
"""
}
} stage('构建镜像'){
steps {
withCredentials([usernamePassword(credentialsId: "${docker_registry_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {
sh """
echo '
FROM ${registry}/library/tomcat:v1
LABEL maitainer lizhenliang
RUN rm -rf /usr/local/tomcat/webapps/*
ADD target/*.war /usr/local/tomcat/webapps/ROOT.war
' > Dockerfile
docker build -t ${image_name} .
docker login -u ${username} -p '${password}' ${registry}
docker push ${image_name}
"""
}
}
} stage('部署到Docker'){
steps {
sh """
REPOSITORY=${image_name}
docker rm -f tomcat-java-demo |true
docker container run -d --name tomcat-java-demo -p 88:8080 ${image_name}
"""
}
}
}
}
添加选择的 This project is parameterized --> String parameter

② 添加凭据
1 添加拉取git代码凭据,并获取id替换到上面git_auth变量值。
2 添加拉取harbor镜像凭据,并获取id替换到上面docker_registry_auth变量值。
容器 之搭建 jenkins ci 平台的更多相关文章
- DevOps实践之一:基于Docker构建企业Jenkins CI平台
基于Docker构建企业Jenkins CI平台 一.什么是CI 持续集成(Continuous integration)是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来 ...
- 基于 Docker 构建企业 Jenkins CI平台
持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈. 持续部署(Continuous Deployment,CD):部 ...
- 使用Docker构建企业Jenkins CI平台
在如今的互联网时代,随着软件开发复杂度的不断提高,软件开发和发布管理也越来越重要.目前已经形成一套标准的流程,最重要的组成部分就是持续集成(Continuous Integration,CI)及持续部 ...
- 基于Docker构建Jenkins CI平台
1.部署gitlab 1.1 部署gitlab docker run -d \ --name gitlab \ -p 8443:443 \ -p 9999:80 \ -p 9998:22 \ -v $ ...
- 基于Docker构建企业Jenkins CI平台
- Docker搭建Jenkins+Maven/Gradle——代码自动化运维部署平台(二)
一.简介 1.Jenkins 概述: Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins ...
- Docker搭建Jenkins+Gogs+Maven/Gradle——代码自动化运维部署平台(三)
一.简介 1.CI/CD CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法.CI/CD 的核心概念是持续集成.持续交付和持续部署.作为一个面向开发和运营团队的解决方案,CI/C ...
- SonarQube+Jenkins,搭建持续交付平台
前言 Kurt Bittner曾说过,如果敏捷仅仅只是开始,那持续交付就是头条! "If Agile Was the Opening Act, Continuous Delivery is ...
- 基于docker搭建Jenkins+Gitlab+Harbor+Rancher架构实现CI/CD操作(续)---Harbor的安装
前期安装文档:https://www.cnblogs.com/lq-93/p/11828626.html Harbor的作用: 开发提交代码至gitlab容器中,Jenkins拉取代码构建镜像 ...
- 【译文】用Spring Cloud和Docker搭建微服务平台
by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...
随机推荐
- post方法易错地方
<body> <h1>登录</h1> <input type="text" placeholder="请输入用户名" ...
- 初始rust
安装rust 访问rust 按照步骤操作即可,安装很慢,请耐心等待 安装成功之后,请注意在命令行测试 rustc --version,cargo --version看看输出版本信息是否正常,如果不正常 ...
- DataX插件二次开发指南
一. DataX为什么要使用插件机制? 从设计之初,DataX就把异构数据源同步作为自身的使命,为了应对不同数据源的差异.同时提供一致的同步原语和扩展能力,DataX自然而然地采用了框架 + 插件 的 ...
- 编程哲学之 C# 篇:003——为什么选择 C#
国内开设C#课程的学校或培训机构是越来越少,使用C#作为开发的语言企业也是越来越少.企业要招C#的开发人员越来越难,会C#的要开发人员要找工作也是越来越难,然后我还是选择C#作为本系列的主要语言,我给 ...
- C# 如何部分加载“超大”解决方案中的部分项目
在有的特有的项目环境下,团队会将所有的项目使用同一个解决方案进行管理.这种方式方面了管理,但是却会导致解决方案变得非常庞大,导致加载时间过长.那么,如何部分加载解决方案中的部分项目呢?就让我们来借用微 ...
- 线程基础知识06 synchronized---使用javap查看相关指令
1 示例-简单同步代码块 public class SychTest9 { public static void main(String[] args) { Object o = new Object ...
- Spring事务失效原因分析解决
文章目录 1.方法内部调用 2.修饰符 3.非运行时异常 4.try-catch捕获异常 5.多线程调用 6.同时使用@Transactional和@Async 7.错误使用事务传播行为 8.使用的数 ...
- .net 多地点计算中心点
1.需求产生 快到周末了,几个远在各个区的朋友想要聚餐,为了照顾到彼此的距离,决定计算一下所有人的中心点,至此需求产生,下面开始编写代码. 2.编写代码 1)新建一个控制台程序 在NuGet程序包管理 ...
- vue+element 返回数组或json数据自定义某列显示的处理--两种方法
本文是作者开发一个业务需求时,将返回数据列表的其中一个数据长度很长的字段处理成数组,并将其作为子表显示的过程,具体样式如下(数据做了马赛克处理) 返回的过长字段数据处理(用分号分隔的一个长字段): t ...
- 郁金香5 分析游戏内npc 数据
004D4BAE | CC | int3 | 004D4BAF | CC | int3 | 004D4BB0 | 55 | push ebp | 004D4BB1 | 8BEC | mov ebp,e ...