基于Jenkins构建生产CICD环境(第三篇)

目录

基于Jenkins自动打包并部署docker环境

1、安装docker-ce

2、阿里云镜像加速器

3、构建tomcat 基础镜像 

4、构建一个Maven项目

基于Jenkins自动化部署PHP环境

基于rsync部署


基于Jenkins自动打包并部署docker环境

1、安装docker-ce

在192.168.2.123 机器上,构建 tomcat基础镜像。在构建基础镜像之前需要先安装 Docker 与 JDK。

[root@docker ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo[root@docker ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
[root@docker ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo[root@docker ~]# ls /etc/yum.repos.d/
backup  CentOS-Base.repo  CentOS-Media.repo  docker-ce.repo[root@docker ~]# yum -y install docker-ce
[root@docker ~]# systemctl start docker
[root@docker ~]# systemctl enable docker
[root@docker ~]# docker versionClient: Docker Engine - CommunityVersion:           24.0.5API version:       1.43Go version:        go1.20.6Git commit:        ced0996Built:             Fri Jul 21 20:39:02 2023OS/Arch:           linux/amd64Context:           defaultServer: Docker Engine - CommunityEngine:Version:          24.0.5API version:      1.43 (minimum version 1.12)Go version:       go1.20.6Git commit:       a61e2b4Built:            Fri Jul 21 20:38:05 2023OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          1.6.22GitCommit:        8165feabfdfe38c65b599c4993d227328c231fcarunc:Version:          1.1.8GitCommit:        v1.1.8-0-g82f18fedocker-init:Version:          0.19.0GitCommit:        de40ad0

2、阿里云镜像加速器

centos包提取链接:https://pan.baidu.com/s/1QXYUjocx14PHGg9VsK-Utg?pwd=r346 
提取码:r346

[root@docker ~]# cat << END > /etc/docker/daemon.json
{"registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]
}
END
[root@docker ~]# systemctl daemon-reload
[root@docker ~]# systemctl restart docker[root@tomcat ~]# cat centos-7-x86_64.tar.gz | docker import - centos:7
sha256:976f9f3fda9623a99264a1a57df6a028672d90d6016d8d26ccfbea7d00c5b444[root@tomcat ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
centos       7         976f9f3fda96   21 seconds ago   589MB

3、构建tomcat 基础镜像 

[root@tomcat ~]# mkdir docker-tomcat[root@tomcat ~]# mv apache-tomcat-8.5.40.tar.gz docker-tomcat/[root@tomcat ~]# mv jdk-8u191-linux-x64.tar.gz docker-tomcat/[root@tomcat ~]# cd docker-tomcat/[root@tomcat docker-tomcat]# ls
apache-tomcat-8.5.40.tar.gz  jdk-8u191-linux-x64.tar.gz[root@tomcat docker-tomcat]# vim DockerfileFROM centos:7
MAINTAINER from crushlinux <crushlinux@163.com>#copy jdk and tomcat into image
ADD ./apache-tomcat-8.5.40.tar.gz /usr/local/
ADD ./jdk-8u191-linux-x64.tar.gz /usr/local#set variable
ENV JAVA_HOME /usr/local/jdk1.8.0_191
ENV PATH $JAVA_HOME/bin:$PATH#container starts up
ENTRYPOINT /usr/local/apache-tomcat-8.5.40/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.40/logs/catalina.out[root@tomcat docker-tomcat]# docker build -t tomcat:v1 .[+] Building 4.8s (8/8) FINISHED                                                                                        docker:default=> [internal] load build definition from Dockerfile                                                                              0.0s=> => transferring dockerfile: 508B                                                                                              0.0s=> [internal] load .dockerignore                                                                                                 0.0s=> => transferring context: 2B                                                                                                   0.0s=> [internal] load metadata for docker.io/library/centos:7                                                                       0.0s=> CACHED [1/3] FROM docker.io/library/centos:7                                                                                  0.0s=> [internal] load build context                                                                                                 0.1s=> => transferring context: 9.69MB                                                                                               0.1s=> [2/3] ADD ./apache-tomcat-8.5.40.tar.gz /usr/local/                                                                           0.2s=> [3/3] ADD ./jdk-8u191-linux-x64.tar.gz /usr/local                                                                             3.1s=> exporting to image                                                                                                            1.2s=> => exporting layers                                                                                                           1.2s=> => writing image sha256:a2828f5c15bd893c5f428dbb46cc816827cd73ff2610a7f99944b9308bb74a9d                                      0.0s=> => naming to docker.io/library/tomcat:v1                                             [root@tomcat docker-tomcat]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
tomcat       v1        a2828f5c15bd   About a minute ago   1e+03MB
centos       7         976f9f3fda96   14 minutes ago       589MB

4构建一个Maven项目

在以上配置完成后,回到 Jenkins 首页,选择“新建任务”,然后输入一个任务名称 “probe-docker”,并选择“Maven project”配置项,点击当前页面下方的“确定”按钮。

 

 在点击“确定”按钮,选择“源码管理”并选中“Git”,设置“Repository URL”地址。

 选择“Build”-> clean package -Dmaven.test.skip=true

 在上一步后面选择“构建后操作”中的“Send build artfacts over SSH”选项并进行。

scp 192.168.2.122:/root/.jenkins/workspace/proble/psi-probe-web/target/probe.war /data/
docker run -itd --name tomcat-test -p 8090:8080 -v /data:/usr/local/apache-tomcat-8.5.40/webapps tomcat:v1

 

         以上全部配置完成后,点击保存即可。然后点击刚才创建的工程任务“probe-docker“->” Build new”直至任务构建完成。开始构建过程中可以点击进度条查看

 

 可以看到此工程任务已构建成功,并且在构建后,创建用于docker项目的 Docker Web 环境命令也执行成功。

[root@tomcat ~]# docker psCONTAINER ID   IMAGE       COMMAND                   CREATED         STATUS         PORTS                                       NAMES
b411b42687eb   tomcat:v1   "/bin/sh -c '/usr/lo…"   4 minutes ago   Up 4 minutes   0.0.0.0:8090->8080/tcp, :::8090->8080/tcp   tomcat-test

 

基于Jenkins自动化部署PHP环境

准备git仓库

[root@git ~]# su - git上一次登录:四 8月 24 11:32:12 CST 2023从 192.168.2.122pts/3 上[git@git ~]$ mkdir php.git[git@git ~]$ cd php.git[git@git php.git]$ git --bare init已初始化空的 Git 仓库于 /home/git/php.git/[git@git php.git]$ exit登出

上传代码到仓库

[root@git ~]# git clone git@192.168.2.121:/home/git/php.git正克隆到 'php'...
git@192.168.2.121's password:             #密码是123456
warning: 您似乎克隆了一个空仓库。[root@git ~]# cd php/[root@git php]#  cat << EOF > index.php
> <?php
> phpinfo();
> ?>
> EOF[root@git php]# git add .[root@git php]#  git commit -m "all"[master(根提交) 677669d] all1 file changed, 3 insertions(+)create mode 100644 index.php[root@git php]# git push origin mastergit@192.168.2.121's password: 枚举对象: 3, 完成.
对象计数中: 100% (3/3), 完成.
写入对象中: 100% (3/3), 215 bytes | 215.00 KiB/s, 完成.
总共 3 (差异 0),复用 0 (差异 0)
To 192.168.2.121:/home/git/php.git* [new branch]      master -> master

部署web主机环境

[root@tomcat ~]# yum install -y httpd mariadb-server mariadb mariadb-devel php php-mbstring php-mysql php-bcmath php-gd php-xmlrpc php-ldap php-xml libevent libevent-devel net-snmp net-snmp-devel libxml2 libxml2-devel ntpdate[root@tomcat ~]# systemctl start httpd
[root@tomcat ~]# systemctl start mariadb

 Jenkins主机将密钥发布到web主机

[root@jenkins ~]# su -s /bin/bash jenkinsbash-4.2$ ssh-keygenbash-4.2$ ssh-copy-id root@192.168.2.123/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/var/lib/jenkins/.ssh/id_rsa.pub"
The authenticity of host '192.168.2.123 (192.168.2.123)' can't be established.
ECDSA key fingerprint is SHA256:Obx7t3j/yRda0ptEZ8jPqaf0aMWNgwYhxuCTS+UaXNY.
ECDSA key fingerprint is MD5:bc:8b:84:8d:18:89:43:3f:2b:b8:fe:3c:02:29:e2:6d.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.2.123's password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'root@192.168.2.123'"
and check to make sure that only the key(s) you wanted were added.

基于rsync部署

创建一个Freestyle project

 

 rsync -avz --delete * root@192.168.2.123:/var/www/html/

 

 

 

[root@tomcat ~]# ls /var/www/html/index.php[root@tomcat ~]# cat /var/www/html/index.php <?php
phpinfo();
?>

 基于ansible部署

epel包提取链接:https://pan.baidu.com/s/1Ss3dN23LtKlmCP5LKrmRmw?pwd=t9w6 
提取码:t9w6

[root@jenkins ~]# rpm -ivh epel-release-latest-7.noarch.rpm [root@jenkins ~]# yum -y install ansible[root@jenkins ~]# vim /etc/ansible/hosts
[webserver]
192.168.2.123

修改jenkins运行用户

[root@jenkins ~]# vim /usr/lib/systemd/system/jenkins.service 34 User=root[root@jenkins ~]# jenkins start

 

 

 

[root@jenkins ~]# ssh-keygen
[root@jenkins ~]# ssh-copy-id git@192.168.2.121
[root@jenkins ~]# ssh-copy-id root@192.168.2.123

 src=${WORKSPACE} dest=/var/www/html rsync_opts=--exclude=.git

 

 

[root@tomcat ~]# cat /var/www/html/proble-ansible/index.php 
<?php
phpinfo();
?>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/56107.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【linux命令讲解大全】007.现代技术中的差异比较工具——diff

文章目录 diff补充说明语法选项参数实例以正常模式比较差异 从零学 python diff 比较给定的两个文件的不同 补充说明 diff命令在最简单的情况下&#xff0c;用于比较给定的两个文件的不同。如果使用 “-” 代替 “文件” 参数&#xff0c;则要比较的内容将来自标准输入。dif…

Qt——Qt 开发中所涉及的所有控件(基本控件、容器控件、布局控件、高级控件、其他控件、多媒体控件、定制控件)

Qt 开发中所涉及的所有控件 一、基本控件 二、容器控件 三、布局控件 四、高级控件 五、其他控件 六、多媒体控件 七、定制控件 Qt开发中提供了许多控件&#xff08;Widgets&#xff09;供开发者使用&#xff0c;用于构建图形用户界面&#xff08;GUI&#xff09;应用程序。以…

Go 第三方库引起的线上问题、如何在线线上环境进行调试定位问题以及golang开发中各种问题精华整理总结

Go 第三方库引起的线上问题、如何在线线上环境进行调试定位问题以及golang开发中各种问题精华整理总结。 01 前言 在使用 Go 语言进行 Web 开发时&#xff0c;我们往往会选择一些优秀的库来简化 HTTP 请求的处理。其中&#xff0c;go-resty 是一个被广泛使用的 HTTP 客户端。…

React Diff算法原理

文章目录 前言Diff算法原理 前言 &#x1f449;点此&#xff08;想要了解Diff算法&#xff09; Diff算法原理 React Diff算法是React用于更新虚拟DOM树的一种算法。它通过比较新旧虚拟DOM树的差异&#xff0c;然后只对有差异的部分进行更新&#xff0c;从而提高性能。 Reac…

如何有效进行RLHF的数据标注?

编者按&#xff1a;随着大语言模型在自然语言处理领域的广泛应用&#xff0c;如何从人类反馈进行强化学习&#xff08;RLHF&#xff09;已成为一个重要的技术挑战。并且RLHF需要大量高质量的人工数据标注&#xff0c;这是一个非常费力的过程。 本文作者在数据标注领域具有丰富经…

JWT工具类,SpringBoot整合Jwt使用

引入依赖 <!-- JWT依赖 --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency><!-- JWT相关依赖&#xff0c;jdk1.8以上版本还需引入以下依赖 --&…

解决jupyter notebook可以使用pytorch而Pycharm不能使用pytorch的问题

之前我是用的这个目录下的Python 开始更新目录 1、 2、 3、

使用Python内置模块加速SQL查询

大家好&#xff0c;假设你正在查阅一本书的页面&#xff0c;你想要更快地找到你正在寻找的信息。那么你可能会查找术语索引&#xff0c;然后跳转到引用特定术语的页面&#xff0c;SQL中的索引与书籍中的索引工作原理类似。 在大多数实际系统中&#xff0c;都将对包含大量行的数…

【javaweb】学习日记Day6 - Mysql 数据库 DDL DML

之前学习过的SQL语句笔记总结戳这里→【数据库原理与应用 - 第六章】T-SQL 在SQL Server的使用_Roye_ack的博客-CSDN博客 目录 一、概述 1、如何安装及配置路径Mysql&#xff1f; 2、SQL分类 二、DDL 数据定义 1、数据库操作 2、IDEA内置数据库使用 &#xff08;1&…

Python3 列表

Python3 列表 序列是 Python 中最基本的数据结构。 序列中的每个值都有对应的位置值&#xff0c;称之为索引&#xff0c;第一个索引是 0&#xff0c;第二个索引是 1&#xff0c;依此类推。 Python 有 6 个序列的内置类型&#xff0c;但最常见的是列表和元组。 列表都可以进…

飞腾uboot命令简单介绍

飞腾uboot和开源uboot并无大差异,故飞腾uboot固件命令可以直接从网上搜索开源uboot相关命令。 这里为了便于大家调试,将一些可能用到的命令说明一下。 在 Uboot 命令行下,输入 help 将打印所有的可用命令,复杂命令操作,通过命令 help 的方式获取具体说明。 1.help命令 …

时序预测 | MATLAB实现DBN-SVM深度置信网络结合支持向量机时间序列预测(多指标评价)

时序预测 | MATLAB实现DBN-SVM深度置信网络结合支持向量机时间序列预测(多指标评价) 目录 时序预测 | MATLAB实现DBN-SVM深度置信网络结合支持向量机时间序列预测(多指标评价)效果一览基本描述程序设计参考资料 效果一览 基本描述 MATLAB实现DBN-SVM深度置信网络结合支持向量机…

校招算法题实在不会做,有没有关系?

文章目录 前言一、校招二、时间复杂度1、单层循环2、双层循环 三、空间复杂度四、数据结构五、校招算法题实在不会做&#xff0c;有没有关系&#xff1f;六、英雄算法集训 前言 英雄算法联盟八月集训 已经接近尾声&#xff0c;九月算法集训将于 09月01日 正式开始&#xff0c;目…

.NET 8 Preview 7 中的 ASP.NET Core 更新

作者&#xff1a;Daniel Roth 排版&#xff1a;Alan Wang .NET 8 Preview 7 现在已经发布&#xff0c;其中包括了对 ASP.NET Core 的许多重要更新。 以下是预览版本中新增功能的摘要&#xff1a; 服务器和中间件 防伪中间件 API 编写 最小 API 的防伪集成 Native AOT 请求委托…

市值暴跌后,每日优鲜能否靠2亿融资“续命”?

濒临破产退市的每日优鲜&#xff0c;靠转型实现“自救”&#xff1f; 作为“生鲜电商第一股”&#xff0c;每日优鲜在上市1年后爆发生存危机。 8月4日&#xff0c;每日优鲜(NDAQ:MF)公布了2022年报&#xff0c;尽管去年7月其宣布关闭营收占比约90%的DWM业务&#xff0c;全面终…

Kafka 消费者“group_name”组正在永远重新平衡

目录 一、场景1.1、场景应用环境1.2、 问题重现二、问题分析三、解决方案一、场景 1.1、场景应用环境 卡夫卡:2.11-1.0.1。主题:并发度为 5 且分区为 5 。1.2、 问题重现 当应用程序重新启动并且在分区分配之前在主题上发布消息时,主题的 5 个消费者找到组协调器并向组协调…

如何对MySQL和MariaDB中的查询和表进行优化-提升查询效率

前言 MySQL和MariaDB是数据库管理系统的流行选择。两者都使用SQL查询语言来输入和查询数据。 尽管SQL查询是简单易学的命令&#xff0c;但并不是所有的查询和数据库函数都具有相同的效率。随着你存储的信息量的增长&#xff0c;如果你的数据库支持一个网站&#xff0c;随着网…

【80天学习完《深入理解计算机系统》】第十一天 3.5 过程(函数调用)

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

RK3568 安卓源码编译

一.repo安卓编译工具 项目模块化/组件化之后各模块也作为独立的 Git 仓库从主项目里剥离了出去&#xff0c;各模块各自管理自己的版本。Android源码引用了很多开源项目&#xff0c;每一个子项目都是一个Git仓库&#xff0c;每个Git仓库都有很多分支版本&#xff0c;为了方便统…

gradio使用transformer模块demo介绍2:Images Computer Vision

文章目录 图像分类 Image Classification图像分割 Image Segmentation图像风格变换 Image Transformation with AnimeGAN3D模型 3D models 图像分类 Image Classification import gradio as gr import torch import requests from torchvision import transformsmodel torch.…