Jenkins单机架构
- Linux:www.jenkins.io/doc/book/in…
- Windows:www.jenkins.io/doc/book/in…
- macOS:www.jenkins.io/doc/book/in…
Jenkins分布式架构
参考
简介
-
Jenkins通常作为独立应用运行(自带Jetty容器),也可以作为servlet在Tomcat或者GlassFish中运行:www.jenkins.io/doc/book/in…
-
Controller-Agent术语在新版中替代了Master-Slave:www.jenkins.io/blog/2020/0…
- Controller-Agent连接方式有多种
参考:
- The SSH connector
- The inbound connector(原JNLP-TCP)
- The JNLP-WebSocket connector
a) JNLP-WebSocket方式最大的优势在于方便统一配置Controller所在服务的Proxy和Load Balence:docs.cloudbees.com/docs/cloudb…
b) Jenkins默认开启WebSocket方式,可以通过CLI工具测试:www.jenkins.io/blog/2020/0…
java -jar jenkins-cli.jar -s YOUR_JENKINS_WEB_URL -webSocket -auth YOUR_USER_ID:YOUR_API_TOKEN help
c) Jenkins独立运行时能WebSocket能访问,在Tomcat/GlassFish中访问需要注意开启容器的WebSocket接口
macOSAgent
- 在Jenkins的System配置页面,调整Jenkins URL为相应URL
- 在Jenkins的Agent管理页面中添加Agent配置
- 选择Launchagent byconnectingittothemaster
- 勾选Use WebSocket
- 在Agent状态页面中,下载agent.jar到本地,复制JNLP配置地址
java -jar agent.jar -jnlpUrl YOUR_JNLP_URL -secret YOUR_AGENT_SECRET -workDir YOUR_AGENT_WORK_DIR
- 如下创建com.jenkins.ci.plist文件(请自行替换以下变量)
- YOUR_USER_NAME
- YOUR_AGENT_JAR_PATH
- YOUR_JNLP_URL
- YOUR_AGENT_SECRET
- YOUR_AGENT_WORK_DIR
- (可选)YOUR_AGENT_LOG_CONFIG
- YOUR_AGENT_STD_OUT
- YOUR_AGENT_STD_ERR
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.jenkins.ci</string>
<key>UserName</key>
<string>YOUR_USER_NAME</string>
<key>SessionCreate</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>java</string>
<string>-Djava.awt.headless=true</string>
<string>-jar</string>
<string>YOUR_AGENT_JAR_PATH</string>
<string>-jnlpUrl</string>
<string>YOUR_JNLP_URL</string>
<string>-secret</string>
<string>YOUR_AGENT_SECRET</string>
<string>-workDir</string>
<string>YOUR_AGENT_WORK_DIR</string>
<string>-loggingConfig</string>
<string>YOUR_AGENT_LOG_CONFIG</string>
</array>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>YOUR_AGENT_STD_OUT</string>
<key>StandardErrorPath</key>
<string>YOUR_AGENT_STD_ERR</string>
</dict>
</plist>
- (可选)依照YOUR_AGENT_LOG_CONFIG创建文件(如logging.properties),调整日志等级
# -Djava.util.logging.config.file=logging.properties
.level = ALL
handlers= java.util.logging.FileHandler
java.util.logging.FileHandler.level=ALL
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.FileHandler.pattern=support/jenkins-agent-%u.log
java.util.logging.FileHandler.limit=10000000
java.util.logging.FileHandler.count=10
javax.jms.connection.level=INFO
hudson.level=INFO
hudson.remoting.Channel.level=FINE
hudson.remoting.FileSystemJarCache.level=INFO
hudson.remoting.jnlp.level=FINE
hudson.remoting.RemoteClassLoader.level=INFO
jenkins.slaves.level=FINE
hudson.slaves.level=FINE
org.jenkinsci.remoting.engine.level=FINE
jenkins.AgentProtocol.level=FINE
- 配置plist文件,加载plist并启动JenkisnAgent服务
mv com.jenkins.ci.plist /Library/LaunchDaemons/com.jenkins.ci.plist
sudo chownroot/Library/LaunchDaemons/com.jenkins.ci.plist
sudochmod 664 /Library/LaunchDaemons/com.jenkins.ci.plist
sudo launchctl load /Library/LaunchDaemons/com.jenkins.ci.plist
sudo launchctl startcom.jenkins.ci
- 确认Jenkisn Agent服务情况
ps-ef | grepjenkins
WindowsAgent
TODO
注意事项
- macOS自动化测试:docs.gitlab.com/runner/inst…
The service will be launched as a LaunchAgent. By using LaunchAgents, the builds will be able to perform UI interactions, making it possible to run and test in the iOS simulator.
- Windows自动化测试:wiki.jenkins.io/display/JEN…
This is the most convenient set up on Windows, but does not allow you to run programs that require display interaction (such as GUI tests).