onk*_*roh 5 groovy jenkins jenkins-pipeline
我目前正在努力改进我的 Jenkins Pipeline,它启动一个带有暴露端口的 Docker 容器。但由于事实上 Jenkins 实例被很多人和他们的项目大量使用,我遇到了问题,即公开的端口映射已经在使用中。
我的想法是确定主机上未使用的端口,以避免这个问题。为了做到这一点,我想用一种简单的方法来扩展我们的 Jenkins 共享库,以检查并返回主机系统中第一个未使用的端口。
有谁知道如何实现这一目标?
我当前的解决方案是利用 shell 函数,该函数以某种方式使用 netstat 工具。
文件:getRandomFreePort.groovy
def call() {
sh '''
#!/bin/bash
while
[[!-z $CHECK]]; do
PORT = $(((RANDOM % 60000) + 1025))
CHECK = $(sudo netstat - ap | grep $PORT)
done
echo $PORT
'''
}
Run Code Online (Sandbox Code Playgroud)
使用ServerSocket以下命令可以获取未使用的端口:
try {
def serverSocket = new ServerSocket(0);
System.out.println("listening on port: " + serverSocket.getLocalPort());
//Do anything
serverSocket.close()
} catch (IOException ex) {
System.err.println("no available ports");
}
Run Code Online (Sandbox Code Playgroud)
如果您需要查找范围内的可用端口,请查看此帖子:如何查找范围内的可用端口?
| 归档时间: |
|
| 查看次数: |
4936 次 |
| 最近记录: |