circleCI - 如何在特定目录发生变化时运行作业

MrN*_*onz 5 workflow pipeline github git-diff circleci

我正在使用 circleCI 版本 2,我config.yml喜欢这样:

version: 2
jobs:
   a:
     steps:...
   b:
     steps:...
workflows:
  version: 2
  main_pipeline:
    jobs:
       - a
       - b
Run Code Online (Sandbox Code Playgroud)

我只想在目录中发生更改时构建。

job a对于文件夹 a job b对于文件夹 b

folder a改变,只能建job a

MrN*_*onz 2

function trigger_job() {
    job_name=$1
    curl --user ${CIRCLE_API_TOKEN}: \
        --data build_parameters[CIRCLE_JOB]=$job_name \
        --data revision=$CIRCLE_SHA1 \
https://circleci.com/api/v1.1/project/github/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/tree/$CIRCLE_BRANCH
Run Code Online (Sandbox Code Playgroud)

我使用这个函数来触发作业,并通过 git-diff 找到不同的结果,如下所示git diff-tree --name-only $(git log -n 2 --pretty=format:"%H") | grep project