使用docker安装jenkins,然后使用jenkins本地发版和远程发版

news2024/11/15 11:08:17

使用docker安装jenkins,然后使用jenkins本地发版和远程发版

1、安装docker

1.安装必要的一些系统工具
sudo yum install docker-ce
2.添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.更新yum索引列表并安装Docker引擎
sudo yum makecache fast
4.yum索引列表没有更新可以直接使用yum makecache(若有报错请翻阅第四部分第二条)
docker-ce:社区版的,docker-ee:企业版的
sudo yum install docker-ce
5.安装过程中会提示确认,输入y以确认
6.开启Docker服务
sudo service docker start
或者 systemctl start docker
7.测试是否安装成功
docker version

2、使用安装jenkins

  1. 启动docker的jenkins
#拉取镜像
 docker pull jenkins/jenkins
# -p端口映射,-v挂载工作目录 --env 指定一些配置 如--prefix是我要使用nginx代理,所以给jenkins加上前缀
# 第二个-v是挂载的maven,需要先在官网下载一个maven,把配置文件改为阿里云镜像,服务器上的路径是/datadrive/software/docker-config/jenkins/maven,jenkins容器内对应的是/home/maven路径
# 挂载jenkins_home时可能在启动时会报Permission denied,可以进入文件目录,使用chmod 777 /datadrive/software/docker-config/jenkins/jenkins_home:/var/jenkins_home 给这个文件夹权限
# git和apache-maven-3.6.3可以到jenkins的全局工具中选择自动安装,当然jdk也可以,这样就可以不挂载了
 docker run --name jenkins \
      -p 8003:8080 -p 50000:50000 \
      -v /datadrive/software/docker-config/jenkins/jenkins_home:/var/jenkins_home \
      -v /datadrive/software/apache-maven-3.6.3:/datadrive/software/apache-maven-3.6.3 \
      -v /datadrive/software/jdk1.8.0_301:/datadrive/software/jdk1.8.0_301 \
      -v /datadrive/software/git:/datadrive/software/git \
      -v /datadrive/:/datadrive/ \
      -v /run/docker.sock:/var/run/docker.sock \
      -v /usr/bin/docker:/usr/bin/docker \
      -v "$HOME":/home \
      --env JENKINS_OPTS="--prefix=/jenkins -Xmx512m" \
      -d jenkins/jenkins
  1. 构建jenkins容器如果出现错误
    touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
    Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
    表示容器中的/var/jenkins_home路径对应的宿主机地址/datadrive/software/docker-config/jenkins/jenkins_home:/var/jenkins_home
    的权限不足,需要把宿主机的地址权限使用chmod 777 xxx更改下,再启动容器就可以了
  2. 进入jenkins容器内
#jenkins账号登录进入
   docker exec -it jenkins bash
 #root账号登录进入
   docker exec -u 0 -it jenkins bash
   whoami docker容器可以查看当前用户是否为root
 # 获取密码
   cat /var/jenkins_home/secrets/initialAdminPassword
  1. 构建流程

1.插件管理中选择Available plugins菜单搜索:Publish Over SSH插件下载
在这里插入图片描述
2.全局工具配置
 1.如果是自动安装它的安装路径是/datadrive/software/docker-config/jenkins/jenkins_home/tools,注意是docker的映射路径jenkins_home
 2.jdk安装,可以使用宿主机的jdk,但是启动docker的时候需要将宿主机的jdk映射到docker中;
在这里插入图片描述
 3.安装Git installations
在这里插入图片描述
 4.Maven安装,自动安装路径
在这里插入图片描述
3.cd /datadrive/software/docker-config/jenkins/jenkins_home/workspace这个路径是jenkins的存储路径,构建项目存储在这个路径下
4.凭据管理,新增git账号和linux账号的凭据
在这里插入图片描述
5.系统管理菜单
在这里插入图片描述
6.构建任务
 1.新建任务,填写任务名称,选择构建一个自由风格的软件项目
在这里插入图片描述
 2.配置git
在这里插入图片描述

 3.选择Build Steps,按照顺序添加下面两个构建步骤
在这里插入图片描述

  1.调用顶层 Maven 目标
在这里插入图片描述
   2.执行 shell
在这里插入图片描述

  1. 构建错误

1.git rev-parse --resolve-git-dir /var/jenkins_home/workspace/ai-admin/.git # timeout=10
  可以忽略
2.构建项目出现错误:Exception:Auth fail for methods ‘publickey,gssapi-keyex,gssapi-with-mic,password’
 chmod 700 /root/.ssh
 chmod 600 /root/.ssh/authorized_keys
3.com.jcraft.jsch.JSchException: Session.connect: java.net.SocketTimeoutException: Read timed
  timeout延长到100
4.symbol class base64encoder location package sun.misc
 到全局工具中把jdk设置为1.8,指定jdk的 JAVA_HOME=/datadrive/software/jdk1.8.0_301,宿主机的映射路径
5.jenkins cp: cannot create regular file xxx Permission denied
 使用sudo
6./tmp/jenkins17356870084788890789.sh: line 71: sudo: command not found
 找不到sudo命令,需要使用root账号登录容器docker exec -u 0 -it jenkins bash,进行yum下载命令
7.bash: docker: command not found
  -v /run/docker.sock:/var/run/docker.sock
 -v /usr/bin/docker:/usr/bin/docker
8.dial unix /var/run/docker.sock: connect: permission denied
  重启失效:sudo chmod 666 /var/run/docker.sock
9.bash: /usr/bin/docker: Permission denied
 sudo chmod 777 /usr/bin/docker
10.Step 1/7 : FROM java:8
 manifest for java:8 not found: manifest unknown: manifest unknown
 DockerFile中的FROM镜像有问题
11.E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denied)
 这里是权限报错,在exec进来的时候加上 -u 0 即可:
  docker exec -u 0 -it jenkins bash
12.bash: yum: command not found
 apt-get update
  apt-get install sshpass 安装sshpass命令
13.jenkins执行shell执行完成后无法停止
 是因为使用sshpass登录需要执行exit退出指令
14.stderr: fatal: unable to access ‘https://gitee.com/hahaha9/ai-project.git/’:Failed to connect to gitee.com port 443 after 255971 ms: Couldn’t connect to server
 git仓库地址Repository URL有误,如果是gitee仓库有时候可以不稳定,到本地拉取提交下项目再试试
8.Dockerfile和ssh脚本
 1.Dockerfile

# 指定是基于哪个基础镜像
FROM openjdk:8-jdk

# 作者信息
MAINTAINER wwj

# 挂载点声明
VOLUME /tmp

# 将本地的一个文件或目录,拷贝到容器的文件或目录里,这里注意目录结构,前面的是对应宿主机的目录
ADD ai-toc-service-1.0-SNAPSHOT.jar ai-toc-service-1.0-SNAPSHOT.jar

#shell脚本
RUN bash -c 'touch /ai-toc-service-1.0-SNAPSHOT.jar'

# 将容器的8222端口暴露,给外部访问。
EXPOSE 8222

ENV JVM_PARAMS = "-XX:MetaspaceSize=512m","-XX:MaxMetaspaceSize=512m","-Xms2048m","-Xmx2048m","-Xmn256m","-Xss256k","-XX:SurvivorRatio=8","-XX:+UseConcMarkSweepGC"

# 当容器运行起来时执行使用运行jar的指令
 ENTRYPOINT ["java","-Dserver.port=8222","-Dfile.encoding=utf-8","-jar","ai-toc-service-1.0-SNAPSHOT.jar","--spring.cloud.bootstrap.location=/datadrive/mnt/ai/ai-toc-service/config/bootstrap.yml","&"]

CMD ["${JVM_PARAMS}"]

 2.ssh脚本

#!/bin/bash -ilex
cd /datadrive/software/docker-config/jenkins/jenkins_home/workspace/ai-payment-service/ai-service/ai-payment-service
sshpass -p 'xxx' scp -q -o StrictHostKeyChecking=no target/ai-payment-service-1.0-SNAPSHOT.jar root@x.x.x.x:/datadrive/mnt/ai/ai-payment-service/ai-payment-service-1.0-SNAPSHOT.jar
echo "后端服务上传成功!"
sshpass -p 'xxx' ssh -tt root@x.x.x.x << EOF
echo '登录成功!准备执行命令'

cd /datadrive/mnt/ai/ai-payment-service
docker rm -f ai-payment-service
sleep 1
docker rmi -f ai-payment-service:1.0
sleep 1
docker build -t ai-payment-service:1.0 -f /datadrive/mnt/ai/ai-payment-service/Dockerfile .
sleep 1
docker run -d \
-p 8223:8223 \
-v /datadrive/mnt/ai/ai-payment-service/config/bootstrap.yml:/datadrive/mnt/ai/ai-payment-service/config/bootstrap.yml \
-v /datadrive/mnt:/datadrive/mnt \
--name ai-payment-service ai-payment-service:1.0
exit

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

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

相关文章

电子行业最全【芯片标签二维码】知识剖析

电子行业最全【芯片标签二维码】知识剖析 本文为辰逸绅士小编原创&#xff0c;未经许可请勿私下复制转载 长 文 预 警 目录 ★01--------前言 ★02--------关于电子元器件协会ECIA ★03--------关于矩阵二维码 3.1--------矩阵二维码 构成 3.2--------矩阵二维码 种类 3.…

【数学分析笔记】第3章第1节 函数极限(3)

3. 函数极限与连续函数 3.1 函数极限 3.1.1 函数极限的性质 【局部有界性】若 lim ⁡ x → x 0 f ( x ) A \lim\limits_{x\to x_{0}}f(x)A x→x0​lim​f(x)A&#xff0c;则 ∃ δ > 0 , ∀ x ( 0 < ∣ x − x 0 ∣ < δ ) : m ≤ f ( x ) ≤ M \exists \delta>…

BUUCTF Crypto wp--RSA1

第一步 查看下载文件 我们发现出现了dp dq&#xff0c;属于dp、dq泄露攻击 上述方程本来是用于在加密中进行快速解密的&#xff0c;但是如果二者发生泄露&#xff0c;就有可能进行对密文的解密。 当我们知道了 dp、 dq、p、q、c,在不知道e的情况下&#xff0c;也可以求解明文。…

社交达人秘籍:巧妙维护你的人脉关系!

在这个人脉为王的时代&#xff0c;微信不仅连接了亲朋好友&#xff0c;更成为了拓展职业网络、深化人际关系的重要平台。如何巧妙地在微信上维护并优化你的人脉关系&#xff0c;成为了每位社交达人必修的功课。今天&#xff0c;就让我们一起探索那些让社交关系更加稳固与活跃的…

【DSP】无法在线仿真无法进入main()函数

DSP无法在线仿真无法进入main()函数 1.问题描述 ​ 接手前人的DSP代码&#xff0c;硬件平台是DSP C6701&#xff0c;软件IDE是CCS 12.3.0。仿真器版本是XDS 560V2。 ​ 在进行在线仿真时&#xff0c;经常出现“伪在线”的情况。简单来说&#xff0c;正常的在线过程&#xff…

使用Python的Elasticsearch客户端 elasticsearch-py 来完成删除现有索引、重新创建索引并测试分词的示例代码

以下是一个使用Python的Elasticsearch客户端 elasticsearch-py 来完成删除现有索引、重新创建索引并测试分词的示例代码 一、安装依赖 pip install elasticsearch二、运行效果 三、程序代码 from elasticsearch import Elasticsearch, NotFoundError# 连接到Elasticsearch es…

基本滤波器响应(低通+高通+带通+带阻)+滤波器的响应特性(阻尼系数+截止频率下降率)

2024-9-4&#xff0c;星期三&#xff0c;20:40&#xff0c;天气&#xff1a;晴&#xff0c;心情&#xff1a;多云。又是上班的一天&#xff0c;至于心情为什么多云&#xff0c;是因为女朋友换季感冒了&#xff0c;我有上班回不去&#xff0c;难受&#xff0c;赶紧到周五吧&…

多模态:DetCLIPv3解析

文章目录 前言一、介绍二、方法2. Open vocabulary detector2.1 encoder2.2 decoder 3. Object captioner 三、数据工程1. Auto-annotation data pipeline 四、训练策略五、实验总结 前言 目前多模态目标检测逐渐成为检测领域的主要发力方向&#xff0c;从最初的检测大模型gro…

2024年最新版Ajax+Axios 学习【包含原理、Promise、报文、接口等...】

基础知识 AJAX概念 AJAX概念&#xff1a;是浏览器与服务器进行数据通信的技术。 认识URL 定义&#xff1a;统一资源定位符&#xff0c;简称网址&#xff0c;用于访问网络上的资源。 组成&#xff1a; http协议&#xff1a;超文本传输协议&#xff0c;规定浏览器和服务器之…

C++系统教程001

1. 安装 Dev-C编程软件 2. 熟悉 Dev-C的界面 3. cout 输出语句的使用 4. 学会 C程序的编译运 一、认识编译器 我们平时所说的程序&#xff0c;一般指双击后就可以直接运行的程序&#xff0c;这样的程序又称为可执行程序。Windows系统下&#xff0c;可执行程序的后缀一般为.ex…

【C++】手动实现栈的封装

完成了以下功能的封装 目录 代码实现&#xff1a; 输出结果如下&#xff1a; 代码实现&#xff1a; #include <iostream> #include <cstring>using namespace std;class Static { private:int *arr; //动态分配栈int top; //指向栈顶元素i…

Docker中的容器内部无法使用vi命令怎么办?

不知道你是否遇到过,在修改容器内部的配置的时候,有时候会提示vi命令不可用。尝试去安装vi插件,好像也不是很容易,有什么办法可以帮助我们修改这个配置文件呢? 解决办法 这时候,我们就需要用到docker cp 命令了,它可以帮助我们把容器内部的文件复制到宿主机上,也可以将…

深入探究 RocketMQ:分布式消息中间件的卓越之选》

《深入探究 RocketMQ&#xff1a;分布式消息中间件的卓越之选》 一、引言 在当今复杂的网络通讯环境中&#xff0c;传统的 Http 请求同步方式存在诸多弊端。当客户端与服务器进行通讯时&#xff0c;客户端必须等待服务端完成处理后返回结果才能继续执行&#xff0c;这种同步调…

万字详解 Redis

1 Redis 是什么 1.1 定义 Redis是一种开源的、基于内存的数据结构存储系统&#xff0c;可以用作数据库、缓存、消息队列等。它支持多种数据结构&#xff0c;如字符串&#xff08;String&#xff09;、哈希&#xff08;Hash&#xff09;、列表&#xff08;List&#xff09;、集…

黑马点评2——商户查询缓存(P37店铺类型查询业务添加缓存练习题答案)redis缓存、更新、穿透、雪崩、击穿、工具封装

文章目录 什么是缓存&#xff1f;添加Redis缓存店铺类型查询业务添加缓存练习题 缓存更新策略给查询商铺的缓存添加超时剔除和主动更新的策略 缓存穿透缓存空对象布隆过滤 缓存雪崩解决方案 缓存击穿解决方案基于互斥锁方式解决缓存击穿问题基于逻辑过期的方式解决缓存击穿问题…

DrissionPage设置启动浏览器为edge

1.查看浏览器启动路径 在浏览器地址栏输入下面地址&#xff0c;拿到可执行文件的路径 。 edge://version/ 2.替换路径 打开DrissionPage._configs. chromium_options.py文件&#xff0c;找到def browser_path(self)这个函数&#xff0c;将返回内容替换为edge的启动路径&#x…

xacro->urdf->pdf

在ROS 2系统中&#xff0c;要将xacro文件转换为PDF文件&#xff0c;可以按照以下步骤操作&#xff1a; 步骤1&#xff1a;将Xacro文件转换为URDF文件 首先&#xff0c;需要将xacro文件转换为urdf文件。可以使用ROS 2提供的xacro工具来完成这个转换。 ros2 run xacro xacro p…

6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)

目录 一.堆(Heap)的基本介绍 二.堆的常用操作&#xff08;以小根堆为例&#xff09; 三.实现代码 3.1 堆结构定义 3.2 向下调整算法* 3.3 初始化堆* 3.4 销毁堆 3.4 向上调整算法* 3.5 插入数据 3.6 删除数据 3.7 返回堆顶数据 四.下篇内容 1.堆排序 2.TopK问题 一…

案例-KVM+GFS分布式存储系统构建KVM高可用(虚拟化实战)

NFS GlusterFS 基于共享存储 采用GFS做共享存储&#xff1b; 实验环境&#xff1a;101 102 103 104 做gfs集群&#xff1b;201 202做虚拟机&#xff1b; 同步一下会话&#xff1b; 为了方便使用主机名进行通信&#xff0c;修改hosts文件&#xff1b; 为了使用GlusterFS的仓库…

国内独家首发 | OpenCSG开源中文版fineweb edu数据集

01 背景 近年来&#xff0c;人工智能&#xff08;AI&#xff09;技术&#xff0c;特别是自然语言处理&#xff08;NLP&#xff09;的飞速发展深刻影响着各个行业。从智能客服到内容生成&#xff0c;从语音识别到翻译工具&#xff0c;NLP的应用已经无处不在。在这一领域中&…