{"id":732,"date":"2023-01-30T09:28:45","date_gmt":"2023-01-30T01:28:45","guid":{"rendered":"https:\/\/wp.winter-weng.cc\/work\/?p=732"},"modified":"2023-01-31T10:14:40","modified_gmt":"2023-01-31T02:14:40","slug":"ci-cd-circleci-path-filtering","status":"publish","type":"post","link":"https:\/\/wp.winter-weng.cc\/work\/?p=732","title":{"rendered":"[CI\/CD] CircleCI path-filtering"},"content":{"rendered":"\n<p>\u7531\u65bc\u5c08\u6848\u662f monorepo\uff0c\u4e0d\u592a\u60f3\u8981\u6bcf\u6b21\u66f4\u65b0\u90fd\u9020\u6210\u591a\u500b\u5c08\u6848 deploy\uff0c\u6240\u4ee5\u63a1\u7528 <code>path-filtering<\/code> \u4f86\u505a\u4fee\u6539\u7bc4\u570d\u7684\u78ba\u8a8d\uff0c\u4f7f\u7528\u8d77\u4f86\u4e5f\u5f88\u76f4\u89ba\uff0c\u8a2d\u5b9a\u5e7e\u500b\u8b8a\u6578\uff0c\u4e26\u4e14\u6307\u5b9a\u82e5\u5728\u66f4\u65b0\u7bc4\u570d\u5167\uff0c\u5c31\u5c07\u8b8a\u6578\u8a2d\u5b9a\u70ba <code>true<\/code>\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u6ce8\u610f\u56e0\u70ba\u6709\u4f7f\u7528\u5230 config \u6a94\u5206\u5272\uff0c\u9700\u8981\u958b\u555f\u5f8c\u53f0\u7684 dynamic config\u3002\u9032\u5165 Projects &gt; Project Settings &gt; Advanced\uff0cEnable dynamic config using setup workflows\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"254\" src=\"https:\/\/rukiawinter-wordpress.s3.ap-northeast-1.amazonaws.com\/wp-content\/uploads\/sites\/3\/2023\/01\/31095624\/image-1024x254.png\" alt=\"\" class=\"wp-image-738\" srcset=\"https:\/\/rukiawinter-wordpress.s3.ap-northeast-1.amazonaws.com\/wp-content\/uploads\/sites\/3\/2023\/01\/31095624\/image-1024x254.png 1024w, https:\/\/rukiawinter-wordpress.s3.ap-northeast-1.amazonaws.com\/wp-content\/uploads\/sites\/3\/2023\/01\/31095624\/image-300x74.png 300w, https:\/\/rukiawinter-wordpress.s3.ap-northeast-1.amazonaws.com\/wp-content\/uploads\/sites\/3\/2023\/01\/31095624\/image-768x190.png 768w, https:\/\/rukiawinter-wordpress.s3.ap-northeast-1.amazonaws.com\/wp-content\/uploads\/sites\/3\/2023\/01\/31095624\/image.png 1380w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>\u8a2d\u5b9a\u6a94\u5beb\u6cd5\uff1a<\/p>\n\n\n\n<p>config.yml<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"yaml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">version: 2.1\n\n# \u8a18\u5f97\u8981\u8a2d\u5b9a\u5594\uff5eCircleCI \u624d\u77e5\u9053\u5f9e\u54ea\u8d77\u59cb\nsetup: true\n\norbs:\n  path-filtering: circleci\/path-filtering@0.0.2\n\nworkflows:\n  setup-workflow:\n    jobs:\n      - path-filtering\/filter:\n          filters:\n            branches:\n              only: develop\n          base-revision: develop\n          config-path: .circleci\/continue-config.yml\n          mapping: |\n            packages\/project-a\/.* is-project-a true\n            packages\/utils\/.* is-project-all true\n<\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>continue-config.yml<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"yaml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">version: 2.1\n\nparameters:\n  is-project-a:\n    type: boolean\n    default: false\n  is-project-all:\n    type: boolean\n    default: false\n\n# \u57f7\u884c\u5de5\u4f5c\njobs:\n  build-image:\n    machine:\n      image: ubuntu-2204:2022.10.2\n    steps:\n      # \u57f7\u884c\u6307\u4ee4\n      - run:\n          name: Run Scripts\n          command: |\n            echo \"Hello\"\n\n# \u5de5\u4f5c\u6d41 &amp; \u57f7\u884c\u689d\u4ef6\nworkflows:\n  update-dev:\n    when:\n      or:\n        - &lt;&lt; pipeline.parameters.is-project-a >>\n        - &lt;&lt; pipeline.parameters.is-project-all >>\n    jobs:\n      - build-image:\n          context: circle-ci-context\n<\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>\u53c3\u8003\u8cc7\u6599\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/circleci.com\/developer\/orbs\/orb\/circleci\/path-filtering\">CircleCI Developer Hub &#8211; circleci\/path-filtering<\/a><\/li>\n\n\n\n<li>\u8a2d\u5b9a\u6a94\u7bc4\u4f8b\uff1a<a href=\"https:\/\/support.circleci.com\/hc\/en-us\/articles\/10269416203163--Advanced-path-filtering-\">Advanced path filtering \u2013 CircleCI Support Center<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/medium.com\/nerd-for-tech\/mastering-monorepos-with-circlecis-new-dynamic-config-2e187fe7934c\">Mastering MonoRepos with CircleCI\u2019s new Dynamic Config | by Benjamin Possolo | Nerd For Tech | Medium<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u7531\u65bc\u5c08\u6848\u662f monorepo\uff0c\u4e0d\u592a\u60f3\u8981\u6bcf\u6b21\u66f4\u65b0\u90fd\u9020&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"pgc_sgb_lightbox_settings":"","footnotes":""},"categories":[11],"tags":[40,39,41],"class_list":["post-732","post","type-post","status-publish","format-standard","hentry","category-11","tag-cd","tag-ci","tag-circleci"],"_links":{"self":[{"href":"https:\/\/wp.winter-weng.cc\/work\/index.php?rest_route=\/wp\/v2\/posts\/732","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.winter-weng.cc\/work\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wp.winter-weng.cc\/work\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wp.winter-weng.cc\/work\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.winter-weng.cc\/work\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=732"}],"version-history":[{"count":2,"href":"https:\/\/wp.winter-weng.cc\/work\/index.php?rest_route=\/wp\/v2\/posts\/732\/revisions"}],"predecessor-version":[{"id":743,"href":"https:\/\/wp.winter-weng.cc\/work\/index.php?rest_route=\/wp\/v2\/posts\/732\/revisions\/743"}],"wp:attachment":[{"href":"https:\/\/wp.winter-weng.cc\/work\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=732"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wp.winter-weng.cc\/work\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=732"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wp.winter-weng.cc\/work\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=732"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}