如何通过Bitbucket-pipeline.yml按文件夹提交执行对应构建部署步骤?
解决方案
完全可行,Bitbucket Pipelines提供了changesets功能,可以精准控制只有特定文件夹有提交变更时,才执行对应的流水线步骤。以下是修改后的bitbucket-pipeline.yml配置:
pipelines: branches: master: - step: name: 'Frontend Build' image: node:16.4.2 # 仅当myfrontend目录下有文件变更时执行此步骤 changesets: - 'myfrontend/**' script: - cd myfrontend - npm install - step: name: 'Backend Build and Package' image: maven:3.8.3-openjdk-17 # 仅当myfolder或mybackend目录下有文件变更时执行此步骤 changesets: - 'myfolder/**' - 'mybackend/**' script: - cd myfolder - mvn clean package artifacts: - mybackend/target/mybackend-0.0.1-SNAPSHOT.jar - step: name: 'Deploy artifacts to Droplet' deployment: production # 仅当后端相关目录有变更时执行部署 changesets: - 'myfolder/**' - 'mybackend/**' 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
关键说明:
changesets字段用来指定触发步骤的文件路径匹配规则,**表示匹配目录下所有文件及子目录- 前端构建步骤仅在
myfrontend目录有变更时执行,后端构建和部署步骤仅在myfolder或mybackend目录有变更时执行 - 后续如果需要启用前端部署,只需给前端部署步骤添加对应的
changesets: ['myfrontend/**']即可
内容的提问来源于stack exchange,提问作者abidinberkay
相关产品推荐
相关产品推荐

