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

news2025/1/15 17:50:46

目录

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

 

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

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

相关文章

QT初始学习中的个人基础认知

整体感觉 安装的时候感觉更像python的库安装和编译器版本的配合安装。进入创建工程时&#xff0c;感觉是c语言的创建工程的感觉&#xff0c;而且可以看到main和h的头文件&#xff0c;整体来看是C来编写的程序。完成整个工程个人感觉是C编写功能&#xff0c;使用VB实现界面设计…

没有办公室,种子轮却融了4个亿的开源机器学习框架AI表——MindsDB

近日,一条融资消息引起了我的关注,一家将机器学习(ML)引入数据库的开源机器学习(ML)初创公司,成功获得英伟达旗下NVentures的投资。至此,这家被英伟达、Benchmark,以及Mayfield等众多机构投资的种子轮,总额达到5410万美元(近4亿元)。 这家公司叫MindsDB,成立于2017年,…

C 语言编程规范 -- 华为

1. 代码总体原则 1.1 清晰第一&#xff0c;清晰性是易于维护&#xff0c;易于重构的程序必须具备的特征 代码首先是给人读的&#xff0c;好的代码应当可以像文章一样发生朗诵出来&#xff0c;“程序必须为阅读它的人而编写&#xff0c;只是顺便用于机器执行” – Harold Abel…

js深拷贝三种方法

使用递归函数实现深拷贝 const obj {name: zzz,age: 18,hobby: [篮球, 足球],family: {baby: baby}} // 深拷贝 数组 对象 一定要先筛数组再筛对象,因为万物皆对象function deepcopy(newObj, oldObj) {for (const k in oldObj) {// 判断值是否属于array类if (oldObj[k] i…

linux搭建minIO对象存储服务,springBoot整合

minIO 服务搭建 1. 创建安装目录 mkdir -p /usr/local/minio2. 进入安装目录 cd /usr/local/minio3.下载安装包 (wget 如果下载太慢,可以手动下载并上传安装包) wget https://dl.minio.io/server/minio/release/linux-amd64/minio4.创建数据存储文件夹 mkdir -p /usr/loca…

gradle 环境配置

环境变量 # gradle 构建工具目录 export GRADLE_HOME/Users/tangjianghua5/software/gradle-6.0 export PATH$PATH:$GRADLE_HOME/bin # gradle 本地仓库目录 export GRADLE_USER_HOME/Users/tangjianghua5/.m2/repository export PATH$PATH:$GRADLE_USER_HOME全局配置 init.gr…

【LeetCode】437.路径总和Ⅲ

题目 给定一个二叉树的根节点 root &#xff0c;和一个整数 targetSum &#xff0c;求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始&#xff0c;也不需要在叶子节点结束&#xff0c;但是路径方向必须是向下的&#xff08;只能从父节点到子节…

继承抽象类习题答案

基础题目 第一题&#xff1a;概念辨析 什么叫做类与类的继承&#xff0c;作用是什么&#xff1f; 就是子类继承父类的属性和行为&#xff0c;使得子类对象具有与父类相同的属性、相同的行为。作用是子类复用父类内容。 继承后&#xff0c;父类与子类之间&#xff0c;各成员有…

融合CDN 如何有效的抵抗DDoS攻击

绝大部分对外网站所有者都离不开CDN的支持&#xff0c;据统计&#xff0c;全球高达70%的互联网流量都是通过CDN来进行缓存和加速的&#xff0c;不论是国外知名的CDN厂商&#xff1a;如Cloudflare、AWS、Akamai等&#xff0c;还是国内主流的CDN厂商阿里云华为云腾讯云等&#xf…

vue 实现word文档预览和下载 docx-preview 和 vue-office

1.先下载引入 npm i docx-preview --save import { renderAsync } from docx-preview;2.使用 fetch(url) .then((response) > {let docData response.blob(); //将文件转换成bolb形式//选择要渲染的元素let childRef document.getElementsByClassName("childRef&qu…

【ulimit 命令】LINUX单进程能够打开的最大文件句柄数

Linux系统如何查看修改最大打开文件数,这个问题对于很多刚刚学习linux的小伙伴来说觉得有点奇怪。Linux系统和windows不同之处在于更强的多任务多线程,由于文件系统结构的不同linux针对不同进程不同用户都可以设置最打打开文件数。 查看当前系统最大的文件打开数,如下图 在…

5165. CCC单词搜索

题目链接&#xff1a;https://www.acwing.com/problem/content/5168/ 题目&#xff1a; 给定一个 RC 的大写字母矩阵。 请你在其中寻找目标单词 W。 已知&#xff0c;目标单词 W 由若干个不同的大写字母构成。 目标单词可以遵循以下两种规则&#xff0c;出现在矩阵的水平、…

c++11 标准模板(STL)(std::basic_istringstream)(四)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_istringstream;(C11 前)template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allo…

电脑桌面日历提醒怎么设置?设置日期提醒的简单方法

在我们使用电脑办公或学习时&#xff0c;为了避免忘记重要事项&#xff0c;例如会议、截止日期等&#xff0c;我们常常希望能在电脑桌面设置日历提醒。一般来说&#xff0c;电脑系统自带的日历上可以新增日程并设置提醒日期。那么电脑桌面日历提醒怎么设置呢&#xff1f; 很多人…

RocketMQ-(7-1)-可观测-Metrics

RocketMQ 以 Prometheus 格式公开以下指标。您可以使用这些指标监视您的集群。 服务端 Metrics 指标生产者 Metrics 指标消费者 Metrics 指标 版本支持&#xff1a;以下指标 Metrics 是从 5.1.0 版本开始支持。 Metrics 指标详情​ Metric types​ 消息队列 RocketMQ 版定义…

微调llama2模型教程:创建自己的Python代码生成器

本文将演示如何使用PEFT、QLoRa和Huggingface对新的lama-2进行微调&#xff0c;生成自己的代码生成器。所以本文将重点展示如何定制自己的llama2&#xff0c;进行快速训练&#xff0c;以完成特定任务。 一些知识点 llama2相比于前一代&#xff0c;令牌数量增加了40%&#xff0…

CentOS7.9安装Java11

文章目录 Java11版本介绍安装步骤查看并卸载已有版本安装Java11最新版本配置生效 openjdk介绍 Java11版本介绍 Java 11是Java编程语言的一个重要版本&#xff0c;于2018年9月发布Java 11在语言特性、性能优化和安全性方面都有一些显著的改进&#xff0c;为Java开发者提供了更多…

.NetCore之log4net的使用

1.首先下载log4ne的包&#xff1a; 2.添加配置文件log4net.config <?xml version"1.0" encoding"utf-8" ?> <configuration><!-- This section contains the log4net configuration settings --><log4net><appender name&q…

初探函数式编程---以Map/Reduce/Filter为例

如函数式编程--酷壳[1] 总结&#xff0c; 函数式编程的三大特性; 数据不可变性 函数作为一等公民(函数可以像变量一样来创建/修改/传递 等) 尾递归优化(重用stack,减轻栈的压力) 函数式编程用到的几个技术&#xff1a; 函数式编程的理念&#xff1a;把函数当成变量来用&#xf…

亚马逊电咖啡壶UL1082测试标准

UL1082标准是适用于额定电压为120V,按照国家电气编码进行使用的便携式电咖啡壶&#xff0c;咖啡渗漏壶及其它酿造类器具&#xff0c;除了咖啡壶外&#xff0c;本标准也适用于荼壶、水煲、玻璃水煲、汤保温壶及其它类似器具。这些器具都具有以下特点&#xff1a; &#xff08;1…