建木-进阶使用-自动化部署-流程自动化部署-节点化部署-将jar包运行在指定的服务器上-ssh文件书写-docker镜像创建

news/2024/12/23 9:02:26/

阿丹:

        建木的搭建以及在jar包中的dockerfile文件的书写。已经完毕。现在开始使用建木的流程化部署来完成自动化部署。

进入我们自己配置的建木页面

新建一个分组,方便我们不同项目的管理

  起名要求见名知意

 使用图形项目 

开始新建一个流程,用来自动化部署我们的项目。 

 建木提供了很多个官方节点

选择触发器等,通过一个个节点来形成通道实现自动化部署。

开始构建一个流程

逐个介绍一下:

1、webhook触发器:用来开始整个流程(后面会将用处)

2、 git clone从git上拉取代码进行操作

3、maven构建节点:可自定义执行maven指令

4、docker构建镜像:可操作文件中的dockerfile文件来进行定制执行。

5、ssh:执行自定义的命令

webhook触发器

在这里进行配置

点击获取到webhook。 

 

去自己的代码管理上配置webhook

对webhook进行配置,将刚才的连接保存在URL中

 配置触发事件

建议关闭ssl认证 

 添加webhook即可。在代码管理平台的代码触发上述勾选的时间之后。webhook就会根据这个链接来触发这个流程

git clone

        执行对应的git动作

必须填写的内容:

        1、用户名和密码是之前设置的密钥
        2、需要我们去gitee或者在gitLab上面的

 复制这里的克隆填入节点的git地址。

 3、注意自己的分支是否正确

看到我们的分支main

更改下面的分支,默认为master

 

maven构建节点

在使用节点版本前的准备工作,准备对应版本的openjdk

docker pull openjdk:17-ea-slim
docker save -o opendjdk:17-ea-slim.tar openjdk:17-ea-slim

这里可以根据我们的需求来自己构建maven指令。

 workspace:

 

mvn action:要使用的maven动作

因为我们要在线上自动化部署所以这里使用package 

 

 nexus:这里是与私服建立连接,如果没有可以不选

 

docker构建镜像 

dockerhub与私服相关:不是必填选项 

 

镜像名称:建议使用如图所示 

 

镜像标签:推荐使用版本 

 

镜像构建目录:

使用克隆下来的目录 

 

禁用缓存:推荐开启

 

ssh

这里我先提供一个我写好的ssh文件

在使用的时候需要注意参数的修改,其中的注释写的很详细。

#!/bin/bash# 定义所需参数
export repo="adn-ask"
export name=""
export tag=""# 获取所有sh参数
# r 仓库地址 n 镜像名称 t 镜像标签
while getopts "r:n:t:" opt; # 进行参数赋值
docase ${opt} inr )repo=$OPTARG;;n )name=$OPTARG;;t )tag=$OPTARG;;\? )echo "Invalid option: $OPTARG" 1>&2exit 1;;: )echo "Invalid option: $OPTARG requires an argument" 1>&2exit 1;;esac
done
# 检查必要参数是否已经输入
if [ -z "${name}" ]; thenecho "-n 镜像名称  为必传参数"exit 1
fi
if [ -z "${tag}" ]; thenecho "-t 镜像标签 为必传参数"exit 1
fi
shift $((OPTIND -1))
# 最后得到docker镜像
export dockerImage="${repo}/${name}:${tag}"# 停止并删除之前的容器
docker rm -f ${name}# 删除镜像
docker rmi ${dockerImage}# 重新下载之前镜像
docker pull ${dockerImage}# 启动镜像
docker run -d \--name ${name} \--network dev \--privileged=true \--restart=always \-v $SIXIANG_LOGS/${name}:/home/adn-ask/logs/${name} \${dockerImage}

将写好的sh文件放在服务器的文件夹下面。 

代码如下: 

sh /usr/local/docker/yunseven/restartServer.sh -n -t

 中间的参数是根据sh中的文件进行书写的。

 

 一定要看好自己的路径时候正确。

到这里一个流程就构建完毕了。

流程启动测试

第一次运行因为要下载很多依赖所以有点慢,需要耐心等待一下。

 

 前面都完成了但是在docker镜像这里出现了错误。查看错误日志。

这里是错误日志。

 这个问题表示没有找到dockerfile文件。

 问题的原因是这里的点没有去掉。各位一定要注意。

注意:还有一个问题就是需要dockerHub,这里的dockerHub要么使用私服要么使用官方的dockerHub。这里我们使用dockerHub.

这里第一次会出现这个问题

 根据错误信息来看,这个问题可能是由于在新的服务器上没有登录到私服并创建允许的连接引起的。私服可能需要进行一些特定的身份验证或配置才能与其建立连接。

你可以尝试以下步骤来解决这个问题:

  1. 确保你已经在新的服务器上登录到了私服。你可能需要提供有效的身份验证凭据(用户名和密码、访问令牌等)才能成功登录。

  2. 如果你已经登录到私服但仍然无法连接,请检查服务器的网络设置以确保服务器可以访问私服的地址和端口。你可以尝试使用常见的网络工具(如ping或telnet)来测试服务器与私服之间的连通性。

  3. 如果你使用了代理服务器来访问私服,请确保代理服务器的配置正确,并且服务器能够通过代理访问私服。

配置Docker信任地址
私服采用的是http协议,默认不被Docker信任,所以需要做一个配置

#打开要修改的文件
vi /etc/docker/daemon.json
#添加内容:
{"insecure-registries":["http://192.168.0.101:81"]
}
#重新加载
systemctl daemon-reload
#重启docker
systemctl restart docker

配置之后在两个服务器上登录到私服的地址一定要重启

使用代码

 docker login https://ip地址:16000/v2/

输入私服的账号和密码来建立连接!一定要记得重启!

出现这个错误在docker镜像push的时候


http://www.ppmy.cn/news/987664.html

相关文章

JAVA基础-多线程入门(详解)

目录 引言 一,线程概念 二,创建线程 2.1,继承Thread类,重写run方法 2.2,实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函 数的target 2.3,通…

带你读论文第三期:微软研究员、北大博士陈琪,荣获NeurIPS杰出论文奖

Datawhale干货 来源:WhalePaper,负责人:芙蕖 WhalePaper简介 由Datawhale团队成员发起,对目前学术论文中比较成熟的 Topic 和开源方案进行分享,通过一起阅读、分享论文学习的方式帮助大家更好地“高效全面自律”学习&…

论文分享:PowerTCP: Pushing the Performance Limits of Datacenter Networks

1 原论文的题目(中英文)、题目中包含了哪些关键词?这些关键词的相关知识分别是什么? 题目:PowerTCP: Pushing the Performance Limits of Datacenter Networks PowerTCP:逼近数据中心的网络性能极限 2 论…

HTML5 特性

HTML5 特性 1. 语义化标签 <header>&#xff1a;表示网页或某个区域的页眉部分&#xff0c;通常包含网站的标志、导航菜单等内容。<nav>&#xff1a;表示导航区域&#xff0c;用于包含网站的主要导航链接。<main>&#xff1a;表示网页的主要内容区域&#…

QMediaPlayer播放视频

简介 使用QT的QMediaPlayer类播放MP4格式的视频。 代码示例 头文件 Ui::MainWindow *ui; QMediaPlaylist *playlist; QMediaPlayer *player; QVideoWidget *videoWidget;方式一 应用窗体外播放视频。 .cpp文件 playlist new QMediaPlaylist;playlist->addMedia(QUrl(…

Form1单例模式与互斥锁

一、使用mutex来解决。 如何让窗体Form1也是一个单例模式呢&#xff1f; 在窗体项目中找到Program.cs&#xff0c;双击。找到入口点&#xff0c;更改如下&#xff1a; [STAThread]private static void Main(){string mutexName "MyapplicatonMutexApp1121";usin…

Vue2 第三节 数据代理和事件处理

1.Object.defineProperty 方法 2.数据代理 3.Vue中的数据代理 4.事件的基本使用 5.事件修饰符 6.键盘事件 一.Object.defineProperty 方法 &#xff08;1&#xff09;学习Object.defineProperty为下一节数据代理做准备 &#xff08;2&#xff09;更加高级的给对象添加属…

誉天程序员-2301-3-day07

文章目录 知识回顾实现一个业务功能点所需要小的技术点&#xff0c;这些点功能组成就完成整个功能1、声明一个菜单项&#xff08;配置路由&#xff09;2、去写菜单 menu.vue动态加载组件 3、创建/admin/user.vue4、常用的页面组件 知识回顾 实现一个业务功能点所需要小的技术点…