在这篇文章中,我们将为您详细介绍【jenkins】03.部署laravel的内容,并且讨论关于jenkins部署步骤的相关问题。此外,我们还会涉及一些关于JenkinsSSHslave无法创build
在这篇文章中,我们将为您详细介绍【jenkins】 03.部署laravel的内容,并且讨论关于jenkins部署步骤的相关问题。此外,我们还会涉及一些关于Jenkins SSH slave无法创build/ home /
- 【jenkins】 03.部署laravel(jenkins部署步骤)
- Jenkins SSH slave无法创build/ home /
/ jenkins - jenkins 学习之 Jenkins 流水线 parallel 并发执行
- Jenkins 学习(3)-Jenkins 的 Master/Slave 机制,及添加 Slave 节点操作
- Jenkins++:Jenkins 部署 war 包到 tomcat8,报错
【jenkins】 03.部署laravel(jenkins部署步骤)
参考:https://learnku.com/articles/44764
新建
新建一个自由风格的项目 blog_test
配置
部署后的默认地址:
/var/lib/jenkins/workspace
pwd
tar -zcvf blog_test.tar.gz *
tar -zxvf /var/lib/jenkins/workspace/blog_test/blog_test.tar.gz -C /www/wwwroot/blog_test
cd /var/lib/jenkins/workspace/blog_test
rm -rf ./*
然后点击部署
OK
部署laravel环境
参考:https://blog.csdn.net/happy_teemo/article/details/86506034
- chmod 777 -R storage 将日志目录权限设置下。
- 修改fastcgi,将代码目录包含进去。
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/:/home/www/";
- Nginx.conf
location / {
try_files $uri $uri/ /index.PHP$is_args$query_string;
}
- .env.example文件改名为 .env 数据等配置自行修改。
- PHP artisan key:generate
访问:
http://blog.happyteemo.com/
完成
Jenkins SSH slave无法创build/ home / / jenkins
当在Jenkins上configuration一个在ec2实例上运行的ssh slave时,当我点击“Launch Slave Agent”时,出现以下错误信息。
[08/06/14 18:41:46] [SSH] opening SSH connection to ec2-xx-xx-xx-xx.eu-west-1.compute.amazonaws.com:22. [08/06/14 18:41:46] [SSH] Authentication successful. [08/06/14 18:41:46] [SSH] The remote users environment is: [08/06/14 18:41:46] [SSH] Starting sftp client. [08/06/14 18:41:46] [SSH] SFTP Failed. copying via SCP. [08/06/14 18:41:46] [SSH] Remote file system root /home/<user>/jenkins does not exist. Will try to create it... Failed to create /home/<user>/jenkins [08/06/14 18:41:46] [SSH] copying latest slave.jar... hudson.util.IOException2: Could not copy slave.jar into '/home/<user>/jenkins' on slave at hudson.plugins.sshslaves.SSHLauncher.copySlaveJarUsingSCP(SSHLauncher.java:967) at hudson.plugins.sshslaves.SSHLauncher.copySlaveJar(SSHLauncher.java:926) at hudson.plugins.sshslaves.SSHLauncher.launch(SSHLauncher.java:596) at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:228) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caused by: java.io.IOException: Error during SCP transfer. at com.trilead.ssh2.SCPClient.put(SCPClient.java:523) at hudson.plugins.sshslaves.SSHLauncher.copySlaveJarUsingSCP(SSHLauncher.java:965) ... 7 more Caused by: java.io.IOException: Remote scp terminated unexpectedly. at com.trilead.ssh2.SCPClient.readResponse(SCPClient.java:50) at com.trilead.ssh2.SCPClient.sendBytes(SCPClient.java:140) at com.trilead.ssh2.SCPClient.put(SCPClient.java:519) ... 8 more [08/06/14 18:41:46] [SSH] Connection closed.
jenkins对这个节点的configuration如下:
请注意,我已经设置了JavaPath属性,因为Jenkins“找不到Java的Java版本”(这是我得到的错误信息)
在Windows上loggingEC2实例上的用户数据脚本输出
使用Nginx服务器从Amazon Linux AMI 2013.09.2实例接收模块错误
使用自定义AMI自动login启动多个ec2 windows服务器
AWS EC2 Linux上的Web2Py
利用Nginx的浏览器caching问题
任何想法如何我可以解决这个问题? 谢谢
在Amazon Linux上安装g ++ 5
如何为Amazon ec2configurationNginx
EC2 Windows实例在重启后没有从启动文件夹启动batch file
有没有办法使用IAM来pipe理对EC2实例的开发人员访问? (ssh不是ec2 api)
Nginx的logrotate不能在亚马逊服务器上工作
我有同样的问题。 在阅读了以下关于新版本的文章后,我意识到我使用的SSH插件有问题。
所以我访问了管理插件 – >安装 – >搜索“SSH”(通过删除选择禁用SSH相关的客户端)
基本上你需要:
已禁用 – SSH Slaves插件(可能附带Jenkins)
增加了SSH插件(版本2.4)。
这解决了这个问题,我已经成功地连接了本文档中显示的其他设置,步骤6, JENKINS-SETTING UP MASTER SLAVE ENVIRONMENT 。 (slave.jar -jnlpUrl ….)
希望这将有助于未来的人。
您需要在用户有权访问的ec2实例上提供有效的路径。
jenkins 学习之 Jenkins 流水线 parallel 并发执行
动态的创建 一个 并行的 流水线。并且可以设置 agent 的。
例 1
pipeline {
agent any
stages {
stage(''BuildAll'') {
parallel {
stage(''build-win'') {
steps {
sh "env | grep -i NODE_NAME"
runParallel items: ("a".."d").collect { "Win-${it}" }
}
}
stage(''build-Mac'') {
steps {
sh "env | grep -i NODE_NAME"
runParallel items: ("a".."d").collect { "Mac-${it}" }
}
}
}
}
}
}
def runParallel(args) {
parallel args.items.collectEntries { name ->
[
"${name}": {
node(''master'') {
stage("${name}") {
stage("${name}-a") {
sh "env | grep -i NODE_NAME"
}
stage("${name}-b") {
sh "env | grep -i NODE_NAME"
}
}
}
}
]
}
}
例 2
pipeline {
agent any
stages {
stage(''build'') {
steps {
runParallel items: ("a".."f").collect {
"Stage ${it}" }
}
}
}
}
def runParallel(args) {
parallel args.items.collectEntries {
name -> [ "${name}": {
stage("${name}") {
echo name
}
}]}
}
例 3
pipeline {
agent {
label ''master''}
stages {
stage(''Build apps(s)'') {
steps {
script {
def nodeList = "bf-01,bf-02,bf-03".split(",").findAll {
it }.collect {
it.trim() }
def jobs = [:]
for (int i = 0; i < nodeList.size(); i++) {
def app = nodeList[i]
jobs["jobs-${app}"] = {
node(''another-master'') {
stage("Build ${app}") {
echo "Build ${app}"
}
}
}
}
parallel jobs
}
}
}
}
}
Jenkins 学习(3)-Jenkins 的 Master/Slave 机制,及添加 Slave 节点操作
来源:
http://www.sohu.com/a/318426094_371153
https://www.cnblogs.com/my_captain/p/9301656.html
http://www.pianshen.com/article/3449275031/
一、Jenkins 的 Master/Slave 机制
Jenkins 采用 Master/Slave 架构。Master/Slave 相当于 Server 和 agent 的概念,Master 提供 web 接口让用户来管理 Job 和 Slave,Job 可以运行在 Master 本机或者被分配到 Slave 上运行。一个 Master 可以关联多个 Slave 用来为不同的 Job 或相同的 Job 的不同配置来服务。
Jenkins 的 Master/Slave 机制除了可以并发的执行构建任务,加速构建以外。还可以用于分布式自动化测试,当自动化测试代码非常多或者是需要在多个浏览器上并行的时候,可以把测试代码划分到不同节点上运行,从而加速自动化测试的执行。
Master:Jenkins 服务器。主要是处理调度构建作业,把构建分发到 Slave 节点实际执行,监视 Slave 节点的状态。当然,也并不是说 Master 节点不能跑任务。构建结果和构建产物最后还是传回到 Master 节点,比如说在 jenkins 工作目录下面的 workspace 内的内容,在 Master 节点照样是有一份的。
Slave:执行机 (奴隶机)。执行 Master 分配的任务,并返回任务的进度和结果。
Jenkins Master/Slave 的搭建需要至少两台机器,一台 Master 节点,一台 Slave 节点(实际生产中会有多个 Slave 节点)。Jenkins 分布式环境搭建步骤如下:
(1)前提:Master 和 Slave 都已经安装 JDK 1.8 或更高版本
(2)Master 节点上安装和配置 Jenkins
(3)Master 节点上新增 Slave 节点配置,生成 Master-Slave 通讯文件 SlaveAgent
(4)Slave 节点上运行 SlaveAgent,通过 SlaveAgent 实现和 Master 节点的通讯
(5)Master 节点上管理 Jenkins 项目,指定 Slave 调度策略,实现 Slave 节点的任务分配和结果搜集来源。
二、为 Jenkins 配置 Master 节点
Master 不需要主动去建立,安装 Jenkins、创建了 Jenkins 账户,在登录到主界面时,这台电脑就已经默认为 master。
选择 “Manage Jenkins”->“Manage Nodes and Clouds”,可以看到 Master 节点相关信息:
三、为 Jenkins 添加 Slave Node
在 Jenkins 界面选择 “Manage Jenkins”->“Manage Nodes and Clouds”->“New Node
(1)配置 Node Name
(2)配置 Agent 类型:选择永久模式(Permanent Agent)。更多 Agent 种类请安装类插件后可见。
(3)接下来配置 Agent 信息:
Name:Slave 机器的名字
Description:描述 ,不重要 随意填
of excutors:允许在这个节点上并发执行任务的数量,即同时可以下发多少个 Job 到 Slave 上执行,一般设置为 cpu 支持的线程数。[注:Master Node 也可以通过此参数配置 Master 是否也执行构建任务、还是仅作为 Jenkins 调度节点]
Remote root directory:用来放工程的文件夹,jenkins master 上设置的下载的代码会放到这个工作目录下。
Lables:标签,用于实现后续 Job 调度策略,根据 Jobs 配置的 Label 选择 Salve Node
Usage:支持两种模式 “Use this Node as much as possible”、“Only build Jobs with Label expressiong matching this Node”。选择 “Only build Jobs with Label expressiong matching this Node”,
Launch method:这里以选择 JNLP 连接方式为例,如下:(也可选择 Launch agent by connecting it to the master)
(1)对于老版本 Jenkins,选择为 TCP port for JNLP agents jenkins
(2)对于新版本 Jenkins,选择 jave web start
注意:使用 JNLP 方式,需要在 Manage Jenkins->Configure Gloabl Security 界面配置:勾选 “随机选取”、勾选 “Java Web Start Ageng Protocol/4”(有的版本是 “Inbound TCP Agent Protocol/4”)、Enable Agent 配置为 Enable
更多 Launch Method 种类请在 Manage Jenkins->Manage Plugins->Available 界面安装(图片)类插件后可见:
添加完毕后,在 Jenkins 主界面,可以看到新添加的 Slave Node,但是红叉表示此时的 Slave 并未与 Master 建立起联系。节点的 “of excutors” 通道数可以在此界面上看到:
接下来进一步做 Slave Node 配置。
1、Slave Node 节点为 Windows 系统
登录 Slave Node 主机,浏览器中通过 Jenkins master 节点的 URI 登录系统,在 Manage Jenkins->Manage Nodes and Clouds 页面点击刚新建的节点,进入如下界面:
方式一:点击上图中的 “Launch” 按钮,下载 Slave-agent.jnlp 文件到本地,以管理员的权限在命令行执行 Slave-agent.jnlp,最终会弹出一个小窗口,提示 Connect,表示 Slave Node 和 Master Node 连接成功。
如果希望把 Slave-agent .jnlp 安装成 Windows Service,以后 Slave Node 重新启动就能自动连接 master。在弹出一个小窗口的 File 菜单中点击 “Install as a service”,完成安装后上面的小程序会自动关闭,一个命令为 jenkinsagent 的 Windows 服务被创建。
方式二:采用命令行方式。下载 agent.jar 文件到本地,以管理员的权限在命令行执行截图中的命令。(其中 Localhost:8080 替换为 Jenkins 的 Master 的 URI)
如果希望本命令在 Slave Node 重启时自动运行,可以把如上命令保存为 bat 文件,在 Window 系统下设置开始时执行此 bat 文件。
2、Slave Node 节点为 Linux 系统
类同 Windows 系统的 Slave Node 节点。只是启动命令方式有差异。
把 agent.jar 保存到 /home/Jenkins,运行 sudo java -jar agent.jar....,注意 sudo 采用管理员方式运行(否则提示 Exception in thread "main" java.nio.file.AccessDeniedException:/opt/jenkins 错误)。
四、创建任务,为任务指定 Node 调度策略
(1)Jenkins 首页,New View 创建一个自己视图。
(2)选择刚创建的视图,进入 My View 页面,New Job 创建一个任务。
(3)创建 Job 的页面,“General” 下勾选 “Restric where this project can be run”,填写 Label Expression。
Jenkins 通过节点的 label 标签来执行 Jobs 的 Slave Node,一个标签可以关联多台不同命名的 slave 机器。
五、Jenkins 的 Master 和 Slave 通信方式
常用的 Master 和 Slave 节点连接的方式是 ssh 或 JNLP。
(1)ssh:对于 Slave Node 是 linux 系统,最方便的就是通过 ssh 启动 jenkins 节点,但这个的前提是 Master 和 Slave 之前能进行 ssh 连接。
(2)jnlp:jnlp 连接有个好处就是不需 Master 和 Slave 之间能够 ssh 连接,只需能 ping 即可。Slave Node 是 windows 的话,这个方式十分实用,因为有时候一些权限或者防火墙的原因,导致 Master 和 Slave 不能够 ssh 连接;还有一些未知的原因导致无法 ssh 到 Slave Node。
如章节三所言,也可以安装 Jenkins Plugins,支持更广泛的 Slave Agent 类型和连接。
Jenkins++:Jenkins 部署 war 包到 tomcat8,报错
报错信息如下:
编译和打包结束 [DeployPublisher][INFO] Attempting to deploy 1 war file(s) [DeployPublisher][INFO] deploying /var/lib/jenkins/workspace/web_demo_boot_freestyle/target/web_demo_boot-0.0.1-SNAPSHOT.war to container Tomcat 8.x Remote with context null ERROR: Build step Failed with exception org.codehaus.cargo.container.ContainerException: Failed to redeploy [/var/lib/jenkins/workspace/web_demo_boot_freestyle/target/web_demo_boot-0.0.1-SNAPSHOT.war] at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:176) at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:81) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:167) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:136) at hudson.FilePath.act(FilePath.java:1171) at hudson.FilePath.act(FilePath.java:1154) at hudson.plugins.deploy.CargoContainerAdapter.redeployFile(CargoContainerAdapter.java:133) at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeployFile(PasswordProtectedAdapterCargo.java:95) at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:113) at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123) at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:78) at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:47) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:806) at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:755) at hudson.model.Build$BuildExecution.post2(Build.java:178) at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:699) at hudson.model.Run.execute(Run.java:1913) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:99) at hudson.model.Executor.run(Executor.java:432) Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The username you provided is not allowed to use the text-based Tomcat Manager (error 403) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:710) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:882) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:895) at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:161) ... 19 more Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://192.168.1.101:8886/manager/text/list at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1894) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:577) ... 22 more org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The username you provided is not allowed to use the text-based Tomcat Manager (error 403) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:710) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:882) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:895) at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:161) at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:81) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:167) at hudson.plugins.deploy.CargoContainerAdapter$DeployCallable.invoke(CargoContainerAdapter.java:136) at hudson.FilePath.act(FilePath.java:1171) at hudson.FilePath.act(FilePath.java:1154) at hudson.plugins.deploy.CargoContainerAdapter.redeployFile(CargoContainerAdapter.java:133) at hudson.plugins.deploy.PasswordProtectedAdapterCargo.redeployFile(PasswordProtectedAdapterCargo.java:95) at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:113) at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123) at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:78) at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:47) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:806) at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:755) at hudson.model.Build$BuildExecution.post2(Build.java:178) at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:699) at hudson.model.Run.execute(Run.java:1913) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:99) at hudson.model.Executor.run(Executor.java:432) Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://192.168.1.101:8886/manager/text/list at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1894) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492) at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:577) ... 22 more Build step 'Deploy war/ear to a container' marked build as failure Finished: FAILURE
解决方案:
必须把部署用户的权限定义为“manager-script”,才可以成功部署。
需要修改一下tomcat的conf文件夹下的tomcat-users.xml文件
之后重启
今天关于【jenkins】 03.部署laravel和jenkins部署步骤的介绍到此结束,谢谢您的阅读,有关Jenkins SSH slave无法创build/ home /
本文标签: