基于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 version

Client: Docker Engine - Community
 Version:           24.0.5
 API version:       1.43
 Go version:        go1.20.6
 Git commit:        ced0996
 Built:             Fri Jul 21 20:39:02 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.5
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.6
  Git commit:       a61e2b4
  Built:            Fri Jul 21 20:38:05 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.22
  GitCommit:        8165feabfdfe38c65b599c4993d227328c231fca
 runc:
  Version:          1.1.8
  GitCommit:        v1.1.8-0-g82f18fe
 docker-init:
  Version:          0.19.0
  GitCommit:        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 Dockerfile

FROM 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 ps

CONTAINER 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] all
 1 file changed, 3 insertions(+)
 create mode 100644 index.php

[root@git php]# git push origin master

git@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 jenkins

bash-4.2$ ssh-keygen

bash-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: 1

Now 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();
?>

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQLI-labs-第三关

目录 知识点&#xff1a;单括号)字符get注入 1、判断注入点&#xff1a; 2、判断当前表的字段数 3、判断回显位置 4、爆库名 5、爆表名 6、爆字段名&#xff0c;以users表为例 7、爆值 知识点&#xff1a;单括号)字符get注入 思路&#xff1a; 1、判断注入点&#xff1…

HTML学习笔记02

HTML笔记02 页面结构分析 元素名描述header标题头部区域的内容&#xff08;用于页面或页面中的一块区域&#xff09;footer标记脚部区域的内容&#xff08;用于整个页面或页面的一块区域&#xff09;sectionWeb页面中的一块独立区域article独立的文章内容aside相关内容或应用…

测试理论与方法----测试流程的第四个步骤:执行测试,提出缺陷

8、执行测试—–>提交缺陷报告 测试流程&#xff1a;执行测试—–>提交缺陷报告 1、缺陷的概述&#xff08;回顾&#xff09; 结果角度&#xff1a;实际结果和预期结果不一致 需求角度&#xff1a;所有不满足需求或超出需求的&#xff0c;都是缺陷 2、缺陷的相关属性…

Glide分析和总结

1. Glide概述 Glide是一款图片处理的框架&#xff0c;从框架设计的角度出发&#xff0c;最基本要实现的就是 加载图片 和 展示。 它把一个图片请求封装成一个Request对象&#xff0c;里面有开启、暂停、关闭、清除网络请求、以及载体生命周期的监听等操作。然后通过RequestBu…

【Java基础增强】Stream流

1.Stream流 1.1体验Stream流【理解】 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合&#xff0c;存储多个字符串元素 把集合中所有以"张"开头的元素存储到一个新的集合 把"张"开头的集合中的长度为3的元素存储到一个新的集合 遍历上一步得…

ELK原理和介绍

为什么用到ELK&#xff1a; 一般我们需要进行日志分析场景&#xff1a;直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景中&#xff0c;此方法效率低下&#xff0c;面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化…

CTFhub-文件上传-无验证

怎样判断一个网站是 php asp jsp 网站 首先&#xff0c;上传用哥斯拉生成 .php 文件 然后&#xff0c;用蚁剑测试连接 找到 flag_1043521020.php 文件&#xff0c;进去&#xff0c;即可发现 flag ctfhub{ee09842c786c113fb76c5542}

Android Native Code开发学习(三)对java中的对象变量进行操作

Android Native Code开发学习&#xff08;三&#xff09; 本教程为native code学习笔记&#xff0c;希望能够帮到有需要的人 我的电脑系统为ubuntu 22.04&#xff0c;当然windows也是可以的&#xff0c;区别不大 对java中的对象变量进行操作 首先我们新建一个java的类 pub…

(二十)大数据实战——Flume数据采集的基本案例实战

前言 本节内容我们主要介绍几个Flume数据采集的基本案例&#xff0c;包括监控端口数据、实时监控单个追加文件、实时监控目录下多个新文件、实时监控目录下的多个追加文件等案例。完成flume数据监控的基本使用。 正文 监控端口数据 ①需求说明 - 使用 Flume 监听一个端口&am…

python爬虫14:总结

python爬虫14&#xff1a;总结 前言 ​ python实现网络爬虫非常简单&#xff0c;只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点&#xff0c;方便以后复习。 申明 ​ 本系列所涉及的代码仅用于个人研究与讨论&#xff0c;并不会对网站产生不好…

Ansible学习笔记6

stat模块&#xff1a;获取文件的状态信息&#xff0c;类似Linux的stat状态。 获取/etc/fstab文件的状态。 [rootlocalhost tmp]# ansible group1 -m stat -a "path/etc/fstab" 192.168.17.106 | SUCCESS > {"ansible_facts": {"discovered_inter…

Vector 动态数组(迭代器)

C数据结构与算法 目录 本文前驱课程 1 C自学精简教程 目录(必读) 2 Vector<T> 动态数组&#xff08;模板语法&#xff09; 本文目标 1 熟悉迭代器设计模式&#xff1b; 2 实现数组的迭代器&#xff1b; 3 基于迭代器的容器遍历&#xff1b; 迭代器语法介绍 对迭…

在css中设计好看的阴影

在css中设计好看的阴影 在本文中&#xff0c;我们将学习如何将典型的盒子阴影转换为更好看的的阴影。 统一角度 当我们想要一个元素有阴影时&#xff0c;会添加box-shadow属性并修改其中的数字&#xff0c;直到满意为止。 问题是&#xff0c;通过像这样单独创建每个阴影&…

22-扩展

一 进程与线程;同步与异步任务;宏任务与微任务 一、进程与线程 一个程序只有一个进程,一个进程包含多个线程,单线程和多线程 二、同步与异步任务 同步任务:是指在主线程上排队执行的任务,只有前一个任务执行完毕,才能继续执行下一个任务。按顺序执行,可以看做单线程,…

C++之“00000001“和“\x00\x00\x00\x01“用法区别(一百八十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

入职字节外包一个月,我离职了

有一种打工人的羡慕&#xff0c;叫做“大厂”。 真是年少不知大厂香&#xff0c;错把青春插稻秧。 但是&#xff0c;在深圳有一群比大厂员工更庞大的群体&#xff0c;他们顶着大厂的“名”&#xff0c;做着大厂的工作&#xff0c;还可以享受大厂的伙食&#xff0c;却没有大厂…

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

基于Jenkins自动打包并部署Tomcat环境 传统网站部署的流程 在运维过程中&#xff0c;网站部署是运维的工作之一。传统的网站部署的流程大致分为:需求分 析-->原型设计-->开发代码-->提交代码-->内网部署-->内网测试-->确认上线-->备份数据-->外网更新…

标准库STL容器使用值语义

C自学精简实践教程 目录(必读) 标准库STL的容器都是值语义的。 即&#xff0c;无法将一个变量放到容器里。容器里存放的只是我们放进去的变量的拷贝&#xff08;副本&#xff09;。 示例&#xff1a; #include <iostream> #include <vector> using namespace s…

2023年高教社杯 国赛数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 最短时…