我一直在努力研究如何利用BitBucket的Pipelines将我的(Laravel)应用程序自动部署到Vultr Server实例上。
我手动执行以下步骤,我正在尝试自主复制:
提交
我的更改并推送
到比特桶回购ssh root@ipaddress
CD
到正确的目录: cd /瓦/万维/网页/应用程序/
中提取
:git 拉取源主站
作曲家安装
,php工匠迁移
等。退出
我的理解是,你可以使用管道来实现自动化,这是真的吗?
到目前为止,我已经为管道和服务器设置了一个SSH密钥对,因此我的服务器的authorized_keys
文件包含来自BitBucket pipelines的公钥。
我的管道文件位桶-管道.yml
如下所示:
image: atlassian/default-image:latest
pipelines:
default:
- step:
deployment: staging
caches:
- composer
script:
- ssh root@ipaddress
- cd /var/www/html/app/
- git pull origin master
- php artisan down
- composer install --no-dev --prefer-dist
- php artisan cache:clear
- php artisan config:cache
- php artisan route:cache
- php artisan migrate
- php artisan up
- echo 'Deploy finished.'
当管道执行时,我得到错误:bash:cd:/var/www/html/app/:没有这样的文件或目录
。
我了解到每个脚本步骤都在它自己的容器中运行。
管道中的每一步都将启动一个单独的Docker容器来运行脚本中配置的命令
我得到的错误是有道理的,如果它没有在VPS中执行cd / var / www / html / 应用程序
,使用SSH登录它。
有人能指引我正确的方向吗?
谢啦
标记为解决方案的答案的问题是,如果其中的任何命令失败,SH进程都不会退出。
例如,这个命令php-artian-route:cache
很容易失败!更不用说拉了!
更糟糕的是,如果出现任何失败,SH脚本将不停地执行其余命令。
我不能使用任何 docker 命令,因为每次执行后,CI 进程都会停止,我无法弄清楚如何避免这些命令不退出 CI 进程。我正在使用 SH,但我会开始根据上一个命令的退出代码添加一些条件,以便我们知道在部署过程中是否有任何错误。
您在脚本
下定义的命令将运行到 Docker 容器中,而不是在您的 VPS 上运行。
相反,将所有命令放在服务器上的bash文件中。
1-在VPS上创建一个bash文件pull.sh
,以完成所有部署任务
#/var/www/html
php artisan down
git pull origin master
composer install --no-dev --prefer-dist
php artisan cache:clear
php artisan config:cache
php artisan route:cache
php artisan migrate
php artisan up
echo 'Deploy finished.'
2 - 在存储库中创建 deploy.sh
脚本,如下所示
echo "Deploy script started"
cd /var/www/html
sh pull.sh
echo "Deploy script finished execution"
3-最后更新bitbucket管道。yml
文件
image: atlassian/default-image:latest
pipelines:
default:
- step:
deployment: staging
script:
- cat ./deploy.sh | ssh <user>@<host>
- echo "Deploy step finished"
我建议已经在/var/www/html
的VPS上克隆您的存储库,并首先手动测试您的 pull.sh
文件。
我们已经建立了管道脚本,工作得很好。最近,我们决定使用bitbucket管道自动部署到elastic beanstalk,并遵循使用命令进行部署的教程。显然,此命令在管道上失败。配置文件似乎是合法的,因为它在本地运行。它还可以在管道文件中指定的同一图像的容器中运行,也可以从本地使用docker exec在同一图像的容器中运行命令。下面是管道文件和我们使用命令得到的错误。我显然漏掉了什么。如有任何帮
问题内容: 我无法让Jenkins通过SSH在BitBucket上克隆git存储库。出现以下消息失败: 采取的步骤 创建一个SSH密钥对 将公共密钥添加为BitBucket上存储库的部署密钥 在Jenkins Credentials Manager插件中安装SSH密钥和用户名(尝试过’git’和我的BB帐户名) 尝试使用URL的形式在构建中克隆存储库 我也尝试过不使用凭据管理器并手动将密钥安装在中
我试图编写一个YAML管道脚本,使用ssh密钥将已从bitbucket存储库更改的文件部署到远程服务器。我现在的文档是从bitbucket本身复制的,有错误: 配置错误 bitbucket-pipelines.yml在[pipelines>默认>0>步骤>脚本>1]处出现错误。准确地说:缺少命令字符串或命令字符串为空。此列表中的每个项应该是单个命令字符串或定义管道调用的映射。 我的ssh公钥和私钥
我正在使用Maven将WAR文件部署到AWS。我计划使用'MVN Deploy',这将把war文件ssh到AWS。我关注http://maven.apache.org/plugins/maven-deploy-plugin/examples/deploy-ssh-external.html。 这是我的POM文件 但是当我运行mvn clean deploy时,我收到了这个… 提前谢了。
我试图通过jenkins管道将azure web应用程序部署到azure form git 代码如下所示 这怎么可能?有什么方法可以将git repo url作为参数提供给azure插件吗? 谢了!
我使用托管Gitlab来托管我的Git存储库,最近我使用它来构建/部署PHP和Java应用程序到服务器。 我想做的是,一旦构建完成,使用SSH部署应用程序。有时,这可能只是通过SSH将最终构建的内容(PHP文件)上载到服务器,或者有时它可能是上载已编译的文件。jar文件,然后在远程服务器上执行命令以重新启动服务。 我已经将我自己的Docker容器设置为构建环境,这包括Java、PHP、Compos