From 0428300372ffc7620744e23cafa7404ed9d6032e Mon Sep 17 00:00:00 2001 From: Jeremiah Russell Date: Mon, 29 Sep 2025 16:33:41 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=B7=20ci(circleci):=20add=20CircleCI?= =?UTF-8?q?=20configuration=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - create .circleci/config.yml for CI/CD pipeline setup - define parameters for fingerprint, rust version, and flags - include workflows for commit checks, validation, success, and release - utilize toolkit orbs for job execution and management --- .circleci/config.yml | 141 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..801f3ae --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,141 @@ +version: 2.1 + +parameters: + fingerprint: + type: string + default: SHA256:OkxsH8Z6Iim6WDJBaII9eTT9aaO1f3eDc6IpsgYYPVg + min-rust-version: + type: string + default: "1.87" + release-flag: + type: boolean + default: false + description: "If true, the release workflow will be executed." + success-flag: + type: boolean + default: false + description: "If true, the success pipeline will be executed." + validation-flag: + type: boolean + default: false + description: "If true, the validation pipeline will be executed." + +orbs: + toolkit: jerus-org/circleci-toolkit@2.13.4 + +executors: + rust-env: + docker: + - image: jerusdp/ci-rust:<> + +workflows: + check_last_commit: + when: + and: + - not: + equal: [scheduled_pipeline, << pipeline.trigger_source >>] + - not: << pipeline.parameters.success-flag >> + - not: << pipeline.parameters.release-flag >> + - not: << pipeline.parameters.validation-flag >> + + jobs: + - toolkit/choose_pipeline: + name: choose pipeline based on committer + context: bot-check + + validation: + when: + and: + - not: + equal: [scheduled_pipeline, << pipeline.trigger_source >>] + - not: << pipeline.parameters.success-flag >> + - << pipeline.parameters.validation-flag >> + - not: << pipeline.parameters.release-flag >> + jobs: + - toolkit/label: + min_rust_version: << pipeline.parameters.min-rust-version >> + context: pcu-app + filters: + branches: + only: + - main + - toolkit/required_builds: + min_rust_version: << pipeline.parameters.min-rust-version >> + - toolkit/optional_builds: + min_rust_version: << pipeline.parameters.min-rust-version >> + - toolkit/test_doc_build: + min_rust_version: << pipeline.parameters.min-rust-version >> + - toolkit/common_tests: + min_rust_version: << pipeline.parameters.min-rust-version >> + - toolkit/idiomatic_rust: + min_rust_version: << pipeline.parameters.min-rust-version >> + - toolkit/security: + context: SonarCloud + - toolkit/update_prlog: + filters: + branches: + ignore: + - main + requires: + - toolkit/required_builds + - toolkit/test_doc_build + - toolkit/idiomatic_rust + - toolkit/security + - toolkit/common_tests + context: + - release + - bot-check + ssh_fingerprint: << pipeline.parameters.fingerprint >> + min_rust_version: << pipeline.parameters.min-rust-version >> + update_pcu: true + + on_success: + when: + and: + - not: + equal: [scheduled_pipeline, << pipeline.trigger_source >>] + - << pipeline.parameters.success-flag >> + - not: << pipeline.parameters.validation-flag >> + - not: << pipeline.parameters.release-flag >> + + jobs: + - toolkit/end_success + + release: + when: + and: + - or: + - and: + - equal: [scheduled_pipeline, << pipeline.trigger_source >>] + - equal: ["release check", << pipeline.schedule.name >>] + - << pipeline.parameters.release-flag >> + - not: << pipeline.parameters.success-flag >> + - not: << pipeline.parameters.validation-flag >> + jobs: + - toolkit/save_next_version: + min_rust_version: << pipeline.parameters.min-rust-version >> + + - toolkit/make_release: + requires: + - toolkit/save_next_version + pre-steps: + - attach_workspace: + at: /tmp/workspace + - run: + name: Set SEMVER based on next-version file + command: | + set +ex + export SEMVER=$(cat /tmp/workspace/next-version) + echo $SEMVER + echo "export SEMVER=$SEMVER" >> "$BASH_ENV" + context: + - release + - bot-check + ssh_fingerprint: << pipeline.parameters.fingerprint >> + min_rust_version: << pipeline.parameters.min-rust-version >> + + - toolkit/no_release: + min_rust_version: << pipeline.parameters.min-rust-version >> + requires: + - toolkit/save_next_version: + - failed