Jenkins 创建一个 job , 用于单独执行脚本
===
目录
2.1.找到【Build Steps】,下拉菜单中选择「シェルの実行」 (执行Shell)
2.2.之后,会出现シェルスクリプト (Shell Script) 的 Area,在这里录入你想执行的 脚本
1.再容器内部执行ps 命令 ,为什么还能看到 其他容器 的信息
1.首先,在Jenkins中创建一个新的job
在Jenkins主页上,单击“新建项目”按钮。
输入项目名称,
并 选择【自由风格项目】。 (フリースタイル・プロジェクトのビルド)
====
2.之后,会进入配置页面,在配置页面进行配置。
====
2.1.找到【Build Steps】,下拉菜单中选择「シェルの実行」 (执行Shell)
===
=====
====
2.2.之后,会出现シェルスクリプト (Shell Script) 的 Area,在这里录入你想执行的 脚本
---
比如
docker ps
uname
id
ls -l ~/.ssh/
curl -m 5 yourTestServer
ssh -v -i ~/.ssh/id_rsa_XXXServerUse yourTestUserName@yourTestServer
===
保存之后,你刚才创建的工程,会出现在这里
==
3.运行,并查看Log
・设置脚本
----
docker ps
uname
uname -a
id
#ls -l ~/.ssh/
ls -l ~/
---
・运行
---
・查看Log
---
---
相关疑问
1.再容器内部执行ps 命令 ,为什么还能看到 其他容器 的信息
(在单位的环境中,在我自己的Jenkins上,执行 docker ps 命令,还能看到其他的容器信息)
在容器内部执行
ps
命令时,默认情况下,只会显示该容器内的进程信息,而无法看到其他容器的信息。但是有一些特殊情况下,你可能会看到其他容器的信息。
如果你在宿主机上使用
docker exec
命令来进入一个正在运行的容器,并在该容器内部执行ps
命令,你会看到其他容器的信息。这是因为docker exec
命令实际上是在宿主机上运行的,并会通过 Docker daemon 来访问容器的进程空间。如果多个容器之间共享了相同的
pid
命名空间,那么在其中一个容器内部执行ps
命令时,会看到所有共享同一命名空间的容器的进程信息。这种情况通常是通过 Docker Compose 或 Kubernetes 等工具来管理多个容器的情况下出现的。总而言之,一般情况下容器内部只能看到自己的进程信息,如果你能看到其他容器的信息,可能是因为你处于特殊的操作环境下,或者多个容器共享了相同的命名空间。
====
Docker daemon(也称为Docker引擎)是Docker的核心组件之一。它是一个在宿主机上运行的后台进程,负责管理和运行Docker容器。Docker daemon监听从Docker客户端发送的API请求,并根据这些请求来创建、启动、停止、删除等容器操作。
===
Docker daemon还负责管理Docker镜像的生命周期,包括从Docker仓库拉取镜像、构建镜像、推送镜像到仓库等。它还提供了网络和存储驱动程序,使容器可以与其他容器或主机进行通信,并能够通过Docker卷来持久化数据。
==
综上所述,Docker daemon是在后台运行的守护进程,用于管理和操作Docker容器和镜像。它是Docker的核心引擎,负责处理所有与Docker相关的操作,并提供Docker API供客户端使用。
2.在容器内部,能否查看容器被启动时,使用的命令
在容器内部,默认情况下是无法查看容器被启动时使用的命令的。它不会暴露容器启动时使用的命令。但是,你可以通过一些技巧来获取这些信息。
一种方法是查看容器的日志。使用
docker logs
命令可以查看容器的标准输出和标准错误输出。可以使用docker logs <container_id>
命令来查看容器的日志输出,以便了解容器启动时使用的命令。另一种方法是通过进入容器的方式来查看。使用
docker exec -it <container_id> bash
命令可以进入正在运行的容器的Shell环境,然后你可以查看容器内的文件系统中的一些相关信息,例如 /proc/cmdline 文件来获取启动命令。但是这种方法只适用于容器在运行时的情况。需要注意的是,这些方法都是在容器内部获取容器启动时使用的命令的方式,而不是在宿主机上获取。
===
其它
1.其它版本的图片
=============================
2.Pipeline流水线
xxxx
2.pipelene流水线
===
===
通常,我们会选择【参数化构建过程(ビルドのパラメータ化)】,指定各种参数,
比如,发布的环境,发布的branch等等
======
同时,参数也分好的中,上面选择的是【字符参数】
======
===
===
【TODO1】需要调查一下,为什么无法使用。
想定可以在这里填写Git的URL
Specify where to obtain a source code repository containing your Groovy script. It will be checked out somewhere on the Jenkins master and used to load your Pipeline script. (If you wish to use other files from the same repository during your Pipeline, you will need to check them out separately on some slave; this checkout cannot be reused.)
【TODO1:回答】
当前的 SCM 下面 显示的是【无】,
应该可以在这里选择【Git】或【Subversion】
比如选择【Git】之后,会出现配置リポジトリ的区域,可以输入「リポジトリURL」
但是,下拉菜单中,还是什么也看不到【TODO2:为什么什么都看不到】
【TODO2:回答】
解决方法,安装【GitHub插件】
安装后,问题解决,可以选择 【Git】
=============
3.自由风格 Job
===
===
===
===
===
4.Job一览画面
===
5.首页的显示
====
6.系统管理
上面选择【系统管理】就,进入下面的页面
=====
=====
7.插件管理
=====
===
===
8.重新启动Jenkins
URL/restart
===
9.一些警告
===
10.Jenkins凭证相关
Jenkins Pipeline 流水线 - withCredentials 使用 - VipSoft - 博客园 (cnblogs.com)
11.Jenkins凭证相关代码【Pipeline】
=======
「Jenkins Pipeline」- 凭证的处理 @20210425 - 研究林纳斯写的 - 博客园 (cnblogs.com)
在【run_register_jar_to_github_tags】中,可以用使用变量${GITHUB_API_TOKEN}
stage('Register To Github Tags') {steps {
withCredentials([usernamePassword(credentialsId: 'yourGitHubWebAPIToken', :variable: 'GITHUB_API_TOKEN')]) {
sh './jenkins/run_register_jar_to_github_tags.sh'
}}
}
绿色部分是自己定义的一个变量,后面的shell中,可以使用这个变量!
比如,调用github的webAPI
【run_register_jar_to_github_tags.sh】中的代码如下
curl -k -s -H "Authorization:token" ${GITHUB_API_TOKEN} -H"Content-Type:application/jar" --data-binary @xxxxx.jar " ${UPLOAD_URL}?name=xxxxx.jar
更多 pipeline相关代码
pipeline {
agent any
stages {
stage('withCredentials 使用凭证') {
steps {
withCredentials([usernamePassword(credentialsId: 'DockerServer', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
// available as an env variable, but will be masked if you try to print it out any which way
// note: single quotes prevent Groovy interpolation; expansion is by Bourne Shell, which is what you want
bat 'echo ${USERNAME}' //Linux 下 sh 'echo $USERNAME',TODO Windows 上怎么写,// also available as a Groovy variable
echo USERNAME// or inside double quotes for string interpolation
echo "username is $USERNAME"
}
echo 'Credentials SUCCESS'
}
}//指定 Docker 服务器节点。用于编译、上传镜像,指定K8S节点,用于升级程序
stage('指定节点中使用凭证') {
agent { label 'DockerAgent' }
steps {
withCredentials([usernamePassword(credentialsId: 'DockerServer', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
sh 'docker --version'
sh "echo 'docker login -u ${USERNAME} -p ${PASSWORD} image_url'"
}
echo 'Credentials SUCCESS'
}
}
}
}
====
12.Jenkins整体流程【Pipeline】
史上最全 Jenkins Pipeline流水线详解 - 知乎 (zhihu.com)
pipeline {
agent any
// 写在顶层环境变量,可以让所有stage下的step共享这些变量 // 里面键值对
environment {
appName = 'XXXX'
appVersion = '1.0.0'
}parameters {
gitParameter(name: 'MY_BRANCH', defaultValue: '', description 'GitHub branch', type: 'BRANCH')
choice(name: 'ENV', choices: ['IT', 'ST1', 'ST2', 'ST3'], description 'リリース環境')
booleanParam(name: 'FLAGXXX', defaultValue: false, description: '布尔值参数' )
}stages {
stage('xxxxxStep001'){.....}
stage('xxxxxStep002'){.....}
.....}
// Post 一般用于流水线结束后的进一步处理,比如错误通知等。
// Post 可以针对流水线不同的结果做出不同的处理,就像开发程序的错误处理,比如 Java 语言的 try catch。
post {
always {
// pipeline清理工作区方法 使用cleanWs 或 deleteDir()
cleanWs( cleanWhenAborted: true, cleanWhenFailure: true, cleanWhenNotBuilt: true, cleanWhenSuccess: true, cleanWhenUnstable: true, cleanupMatrixParent: true, disableDeferredWipeout: true, # 这个选项是关闭延时删除,立即删除。deleteDirs: true)
}
}
}
13.Jenkins参数使用【Pipeline】
史上最全 Jenkins Pipeline流水线详解 - 知乎 (zhihu.com)
...
parameters {
gitParameter(name: 'MY_BRANCH', defaultValue: '', description 'GitHub branch', type: 'BRANCH')
choice(name: 'ENV', choices: ['IT', 'ST1', 'ST2', 'ST3'], description 'リリース環境')
booleanParam(name: 'FLAGXXX', defaultValue: false, description: '布尔值参数' )
}
...
stage('step0001') {
when {
anyOf{
expresion{ param.ENV == 'ST1' }
expresion{ param.ENV == 'ST2' }
expresion{ param.ENV == 'ST3' }
}
} steps {
sh './jenkins/xxx.sh'
}
}
...
====
更多推荐
所有评论(0)