如何使用Jenkins管理多个分支机构部署

时间:2018-07-30 17:23:48

标签: jenkins devops

我已经与Jenkins合作了一段时间,并且仍在项目的多个环境中使用它

通常,我正在从事的项目由三个主要环境“生产”,“暂存”和“开发”组成,分别引用git分支“ master”,“ staging”和“ dev”

全部部署​​到同一主机上,并在我用git clone初始化的单个目录中

对于Jenkins,我通常针对针对特定分支的每种环境使用自由样式项目。对于每种环境,我还有不同的部署脚本,它们可以通过ssh进行部署

这是部署脚本的样子

#!/bin/sh
ssh root@my-server<<<EOF
cd /usr/src/app
docker-compose down
git pull
docker-compose up -d --build
EOF

从上面的脚本中,您可以看到问题是远程主机上的分支从未更改,因为尽管Jenkins在我推送的分支中检测到更改,但我最初并未添加“ git checkout”。

例如,当我进行“ develop”开发时,Jenkins成功检测到了更改并进行了构建,因为我有专门的分支工作

使用这种方法,如果将远程主机上的分支设置为“ develop”以外的分支,则当詹金斯作业ssh到远程主机进行部署时,就会出现问题。大师,代码永远不会更新,并且部署过程会由现有代码触发。

但是,一旦我将部署脚本更新为此

#!/bin/sh
ssh root@my-server<<<EOF
cd /usr/src/app
docker-compose down
git checkout develop <=== Added
git pull
docker-compose up -d --build
EOF

代码已签出,一切正常。

我想知道我是否做对了。我的意思是在构建Docker映像之前,在相同的主机和文件夹中建立一个项目,并使用git checkout将代码更新为所需的分支

或者我应该为每个环境设置单独的文件夹,并通过ssh执行“ git pull”,而不用“ git checkout”切换分支

还是我应该使用Jenkinsfile来利用Jenkins管道?

0 个答案:

没有答案