是否可以为文件夹执行一个步骤,并使用Bitbucket-pipeline提交特定的步骤.在bitbucket中的Yml文



我有一个共同的项目,包括前端和后端,有时后端有时前端得到新的提交,但我的管道yml是为他们工作,并部署两者到服务器,即使他们没有变化。换句话说,如果我在前端添加一行代码,管道也在部署后端。这是我的bitbucket-pipeline.yml

这是一个示例Starter管道配置

pipelines:
branches:
master: 
- step:
name: 'Frontend Build'
image: node:16.4.2
script:
- cd myfrontend
- npm install
- step:
name: 'Backend Build and Package'
image: maven:3.8.3-openjdk-17
script:
- cd myfolder
- mvn clean package
artifacts:
- mybackend/target/mybackend-0.0.1-SNAPSHOT.jar
- step:
name: 'Deploy artifacts to Droplet'
deployment: production
script:
- pipe: atlassian/scp-deploy:0.3.3
variables:
USER: root
SERVER: 138.138.138.138
REMOTE_PATH: '/root/artifacts/target/'
LOCAL_PATH: mybackend/target/mybackend-0.0.1-SNAPSHOT.jar
- pipe: atlassian/scp-deploy:0.3.3
variables:
USER: root
SERVER: 138.138.138.138
REMOTE_PATH: '/root/artifacts'
LOCAL_PATH: mybackend/Dockerfile
- pipe: atlassian/scp-deploy:0.3.3
variables:
USER: root
SERVER: 138.138.138.138
REMOTE_PATH: '/root/automation-temp-folder'
LOCAL_PATH: mybackend/README.MD

在本例中,前端没有部署,但我将激活它。所以我需要的是,我想执行一个步骤,根据哪个文件夹/项目被提交到它。例如,如果在mybackend下有一个提交然后只部署我的后端和前端。等等。是否可以为特定的文件夹执行一个步骤?

是的,这可以通过使用condition关键字来实现:

这允许只在满足条件或规则时执行步骤。目前,唯一支持的条件是变更集。只有当被修改的文件中的一个与includePaths中的表达式匹配时,才使用变更集来执行一个步骤。

你的最终结果应该看起来像这样:

pipelines:
branches:
master: 
- step:
name: 'Frontend Build'
image: node:16.4.2
script:
- cd myfrontend
- npm install
condition:
changesets:
includePaths:
- "myfrontend/**"
- step:
name: 'Backend Build and Package'
image: maven:3.8.3-openjdk-17
script:
- cd myfolder
- mvn clean package
condition:
changesets:
includePaths:
- "myfolder/**"
artifacts:
- mybackend/target/mybackend-0.0.1-SNAPSHOT.jar
- step:
name: 'Deploy artifacts to Droplet'
deployment: production
script:
- pipe: atlassian/scp-deploy:0.3.3
variables:
USER: root
SERVER: 138.138.138.138
REMOTE_PATH: '/root/artifacts/target/'
LOCAL_PATH: mybackend/target/mybackend-0.0.1-SNAPSHOT.jar
- pipe: atlassian/scp-deploy:0.3.3
variables:
USER: root
SERVER: 138.138.138.138
REMOTE_PATH: '/root/artifacts'
LOCAL_PATH: mybackend/Dockerfile
- pipe: atlassian/scp-deploy:0.3.3
variables:
USER: root
SERVER: 138.138.138.138
REMOTE_PATH: '/root/automation-temp-folder'
LOCAL_PATH: mybackend/README.MD
condition:
changesets:
includePaths:
- "myfolder/**"

详情见此处

最新更新