Jenkins Docker靜態(tài)agent節(jié)點(diǎn)的構(gòu)建過(guò)程
靜態(tài)節(jié)點(diǎn)就是固定的在一臺(tái)機(jī)器上面,通過(guò)一些固定的命令將其啟動(dòng)起來(lái),動(dòng)態(tài)節(jié)點(diǎn)就是來(lái)了多個(gè)任務(wù),可以幫你創(chuàng)建多個(gè)agent去跑。而不像靜態(tài)節(jié)點(diǎn)來(lái)了多個(gè)任務(wù),那么就會(huì)等待這個(gè)任務(wù)隊(duì)列,然后進(jìn)行這個(gè)構(gòu)建。這就是靜態(tài)和動(dòng)態(tài)的區(qū)別。
靜態(tài)節(jié)點(diǎn)就是通過(guò)java -jar這條命令去啟動(dòng)起來(lái)就可以了。
1. 靜態(tài)節(jié)點(diǎn)實(shí)踐
首先,在Jenkins 中創(chuàng)建一個(gè)jnlp類(lèi)型的agent, 拿到連接所需要的認(rèn)證和秘鑰信息。
jar -jar這條命令后面有很多的參數(shù),不管是配置動(dòng)態(tài)節(jié)點(diǎn)還是靜態(tài)節(jié)點(diǎn),這些參數(shù)都會(huì)用到。
java -jar agent.jar -jnlpUrl http://192.168.1.200:8080/computer/buildtest01/jenkins-agent.jnlp -secret 047a2627be5ee128c1a93f281051acc7bbbbd5221dcb56ae9fa408a494e72c2f -workDir "/home/jenkins"
1.1 Docker靜態(tài)節(jié)點(diǎn)
啟動(dòng)鏡像,傳遞認(rèn)證參數(shù)。(使用docker的話(huà)其實(shí)就是使用一個(gè)鏡像,鏡像里面運(yùn)行了一個(gè)agent,然后將這些參數(shù)傳遞進(jìn)去)
在虛擬機(jī)上面下載agent.jar包然后手動(dòng)執(zhí)行這些命令就可以了
在命令行中啟動(dòng)節(jié)點(diǎn) java -jar agent.jar -jnlpUrl http://139.198.166.235:8080/computer/build%2D02/jenkins-agent.jnlp -secret 942d7e769a43f65388751ee954af20e90fa0c5f8bdb19e0584db4cc61adab8ba -workDir "/var/jenkins" Run from agent command line, with the secret stored in a file: echo 942d7e769a43f65388751ee954af20e90fa0c5f8bdb19e0584db4cc61adab8ba > secret-file java -jar agent.jar -jnlpUrl http://139.198.166.235:8080/computer/build%2D02/jenkins-agent.jnlp -secret @secret-file -workDir "/var/jenkins"
如果是在docker里面就需要找一個(gè)agent鏡像:inbound-agent鏡像 : Docker Hub
## 測(cè)試
[root@jenkins-agent ~]# docker run --init jenkins/inbound-agent -url http://139.198.166.235:8080 -workDir=/home/jenkins 942d7e769a43f65388751ee954af20e90fa0c5f8bdb19e0584db4cc61adab8ba build-02 Oct 28, 2021 2:19:25 AM hudson.remoting.jnlp.Main createEngine INFO: Setting up agent: build-02 Oct 28, 2021 2:19:25 AM hudson.remoting.jnlp.Main$CuiListener <init> INFO: Jenkins agent is running in headless mode. Oct 28, 2021 2:19:25 AM hudson.remoting.Engine startEngine INFO: Using Remoting version: 4.11 Oct 28, 2021 2:19:25 AM org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir INFO: Using /home/jenkins/remoting as a remoting work directory Oct 28, 2021 2:19:25 AM org.jenkinsci.remoting.engine.WorkDirManager setupLogging INFO: Both error and output logs will be printed to /home/jenkins/remoting Oct 28, 2021 2:19:25 AM hudson.remoting.jnlp.Main$CuiListener status INFO: Locating server among [http://139.198.166.235:8080/] Oct 28, 2021 2:19:25 AM org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver resolve INFO: Remoting server accepts the following protocols: [JNLP4-connect, Ping] Oct 28, 2021 2:19:25 AM hudson.remoting.jnlp.Main$CuiListener status INFO: Agent discovery successful Agent address: 139.198.166.235 Agent port: 50000 Identity: 67:e8:d2:73:d1:cf:01:f6:6c:a4:cb:b3:0f:25:8c:3d Oct 28, 2021 2:19:25 AM hudson.remoting.jnlp.Main$CuiListener status INFO: Handshaking Oct 28, 2021 2:19:25 AM hudson.remoting.jnlp.Main$CuiListener status INFO: Connecting to 139.198.166.235:50000 Oct 28, 2021 2:19:25 AM hudson.remoting.jnlp.Main$CuiListener status INFO: Trying protocol: JNLP4-connect Oct 28, 2021 2:19:25 AM org.jenkinsci.remoting.protocol.impl.BIONetworkLayer$Reader run INFO: Waiting for ProtocolStack to start. Oct 28, 2021 2:19:26 AM hudson.remoting.jnlp.Main$CuiListener status INFO: Remote identity confirmed: 67:e8:d2:73:d1:cf:01:f6:6c:a4:cb:b3:0f:25:8c:3d Oct 28, 2021 2:19:26 AM hudson.remoting.jnlp.Main$CuiListener status INFO: Connected
## 運(yùn)行
[root@jenkins-agent ~]# docker run -itd --name build-02 jenkins/inbound-agent -url http://139.198.166.235:8080 -workDir=/home/jenkins 942d7e769a43f65388751ee954af20e90fa0c5f8bdb19e0584db4cc61adab8ba build-02 bd2500223dabb45ff41c234a8871651f93b38264458c4d2bed40f821577b8944 [root@jenkins-agent ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bd2500223dab jenkins/inbound-agent "/usr/local/bin/jenk?? 18 seconds ago Up 18 seconds build-02
這里需要注意,docker的靜態(tài)agent里面什么都沒(méi)有,比如構(gòu)建工具是沒(méi)有的
[root@jenkins-agent ~]# docker exec -it build-02 bash jenkins@bd2500223dab:~$ mvn bash: mvn: command not found
所以解決辦法是將agent鏡像作為基礎(chǔ)鏡像,將構(gòu)建工具打進(jìn)去,那么你就可以使用了,或者將工具掛載進(jìn)去。
docker run -itd --name build-02 \ -v /usr/local/apache-maven-3.8.1:/home/jenkins/apache-maven-3.8.1 \ jenkins/inbound-agent -url http://139.198.166.235:8080 -workDir=/home/jenkins 942d7e769a43f65388751ee954af20e90fa0c5f8bdb19e0584db4cc61adab8ba build-02 jenkins@2a682b01263b:~$ /home/jenkins/apache-maven-3.8.1/bin/mvn -v Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d) Maven home: /home/jenkins/apache-maven-3.8.1 Java version: 11.0.12, vendor: Eclipse Foundation, runtime: /opt/java/openjdk Default locale: en, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"
同理使用docker命令也一樣掛載進(jìn)去。
到此這篇關(guān)于Jenkins Docker靜態(tài)agent節(jié)點(diǎn)的構(gòu)建的文章就介紹到這了,更多相關(guān)Jenkins Docker 節(jié)點(diǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
怎樣獲取docker動(dòng)態(tài)分配的port
這篇文章給大家主要介紹了如何獲取docker動(dòng)態(tài)分配的port,文中通過(guò)分析、解決以及后續(xù)可能遇到的問(wèn)題都給大家詳細(xì)介紹了,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-10-10Docker下多容器搭建 lamp的詳細(xì)過(guò)程(httpd+mysql+php+redis)
這篇文章主要介紹了Docker下多容器搭建lamp的詳細(xì)過(guò)程(httpd+mysql+php+redis),搭建拉取所需鏡像,本文給大家講解的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-01-01使用docker?compose快速配置一組容器服務(wù)詳解
這篇文章主要為大家介紹了使用docker-?compose快速配置一組容器服務(wù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11