Jenkins与Docker的自动化CI/CD流水线实战

liusaisoso 2020-04-15

Jenkins与Docker的自动化CI/CD流水线实战

标签(空格分隔): docker的部分


  • 一:什么是CI/CD
  • 二: 发布流程设计
  • 三:部署Git仓库并上传测试代码

一:什么是CI/CD

持续集成(Continuous Integration,CI):代码合并、构建、部署、测试都在一起,不断地执行这个过程,并对结果反馈。
持续部署(Continuous Deployment,CD):部署到测试环境、预生产环境、生产环境。
持续交付(Continuous Delivery,CD):将最终产品发布到生产环境,给用户使用。
CI/CD 的 流水线特点:

高效的CI/CD环境可以获得:
? 及时发现问题
? 大幅度减少故障率
? 加快迭代速度
? 减少时间成本

二:发布流程设计

Jenkins与Docker的自动化CI/CD流水线实战


Jenkins与Docker的自动化CI/CD流水线实战

三:部署gitlab 并上传代码

参照文档:https://blog.51cto.com/flyfish225/2145495

在node05.flyfish 上面部署gitlab

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战


Git global setup
git config --global user.name "flyfish"
git config --global user.email ""

Create a new repository
git clone :flyfish/java-project.git
cd java-project
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

Push an existing folder
cd existing_folder
git init
git remote add origin :flyfish/java-project.git
git add .
git commit -m "Initial commit"
git push -u origin master

Push an existing Git repository
cd existing_repo
git remote rename origin old-origin
git remote add origin :flyfish/java-project.git
git push -u origin --all
git push -u origin --tags

Jenkins与Docker的自动化CI/CD流水线实战

四: 部署jenkins

在node06.flyfish 上面配置jenkins

tar -zxvf apache-tomcat-8.5.54.tar.gz
mv apache-tomcat-8.5.54 /usr/local/tomcat

cd /usr/local/tomcat/conf
vim context.xml 

---
在tomcat的/conf/context.xml中的<Context>中添加
<!--这里单位是 KB-->
<Resources cachingAllowed="true" cacheMaxSize="100000" />
---

rm -rf /usr/local/tomcat/webapps/* 

mv jenkins.war /usr/local/tomcat/webapps/jenkins.war

cd /usr/local/tomcat/bin/
./startup.sh

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战

http://192.168.100.16:8080/jenkins

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战


jenkins 安装插件
更换下载安装源
https://updates.jenkins-zh.cn/update-center.json。

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战

装一个Pipeline

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战


创建 一个从节点

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战


创建任务

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战


安装maven
node01.flyfish

tar -zxvf apache-maven-3.5.0-bin.tar.gz

mv apache-maven-3.5.0 /usr/local/maven

vim /etc/profile
---
export MAVEN_HOME=/usr/local/maven
export CLASSPATH=.:$MAVEN_HOME/jre/lib:$MAVEN_HOME/lib:$MAVEN_HOME/lib/tools.jar
PATH=$PATH:$HOME/bin:$MAVEN_HOME/bin:
---

配置maven 的 下载依赖包为阿里云的源

cd /usr/local/maven/conf

vim 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>
    </mirror>
----

mvn -version

Jenkins与Docker的自动化CI/CD流水线实战


无密码登录下载 代码

cd .ssh/

ssh-copy-id

Jenkins与Docker的自动化CI/CD流水线实战


pipline 流水线语法:

node ("jenkins-slave-100-11") {   // 指定Slave标签
   // 拉取代码
   stage(‘Git Checkout‘) { 
     git credentialsId: ‘71eb6de5-abea-4416-a3ef-753efcdcaa98‘, url: ‘http://node05.flyfish/flyfish/java-project.git‘  (这个地方需要用git 流水线生成用户名密码)
   }
   // 代码编译
   stage(‘Maven Build‘) {
        sh ‘‘‘
        export JAVA_HOME=/usr/local/jdk
        /usr/local/maven/bin/mvn clean package -Dmaven.test.skip=true
        ‘‘‘
   }
   // 项目打包到镜像并推送到镜像仓库
   stage(‘Build and Push Image‘) {
sh ‘‘‘
REPOSITORY=192.168.100.16/project/java-project:${Branch}
cat > Dockerfile << EOF
FROM 192.168.100.16/library/tomcat:v1
RUN rm -rf /usr/local/tomcat/webapps/ROOT.war
COPY target/*.war /usr/local/tomcat/webapps/ROOT.war
CMD ["catalina.sh", "run"]
EOF
docker build -t $REPOSITORY .
docker login -u flyfish -p Flyfish225 192.168.100.16
docker push $REPOSITORY
‘‘‘
   }
   // 部署到Docker主机
   stage(‘Deploy to Docker‘) {
        sh ‘‘‘
        REPOSITORY=192.168.100.16/project/java-project:${Branch}
        docker rm -f java-project |true
        docker image rm $REPOSITORY |true
        docker login -u flyfish -p Flyfish225 192.168.100.16
        docker container run -d --name java-project -p 89:8080 $REPOSITORY
        ‘‘‘
   }
}

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战

访问项目

Jenkins与Docker的自动化CI/CD流水线实战


相关推荐