Skip to content
Snippets Groups Projects

Pipeline execution policy foundation

Merged Martin Čavoj requested to merge 441252-pipeline-execution-poc-dry-run into master

What does this MR do and why?

This is a Pipeline execution policy PoC that uses dry run to evaluate policy pipelines and merge them into the project pipeline. Policy stages that are not defined in main pipeline will be ignored. In the follow-up, we will add reserved stages which will be injected and adding jobs to these stages will be guaranteed to work.

MR acceptance checklist

Please evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Screenshots or screen recordings

Policy jobs are merged to the project pipeline:

CleanShot_2024-04-19_at_17.40.43

Error handling - when there's an error in the PEP:

CleanShot_2024-04-25_at_11.59.21

How to set up and validate locally

  1. Enable the feature flag echo "Feature.enable(:pipeline_execution_policy_type)" | rails c
  2. Create two new projects. One for testing and one as the security policy project
  3. On the testing projects left sidebar, select Security & Compliance and Policies
  4. Select Edit policy project
  5. Select your security policy project and Save
  6. On you security policy project, create a new file .gitlab/security-policies/policy.yml with content:
    ---
    pipeline_execution_policy:
    - name: test_pipeline_execution
      description: hey
      enabled: true
      content:
        policy test job:
          stage: test
          script:
          - echo "Hello World"
  7. Add a simple .gitlab-ci.yml to the project:
    project job:
      stage: test
      script:
      - echo "Project job."
  8. Start a pipeline. It should contain the policy test job defined in the pipeline execution policy.

Related to #441252 (closed) and #455261 (closed).

Edited by Martin Čavoj

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Martin Čavoj
  • Martin Čavoj
    • Author Developer
      Resolved by Martin Čavoj

      @furkanayhan @fabiopitino I created a separate MR for the PoC which uses the dry-run approach. A happy path works and the policy jobs are merged onto the project pipeline.

      What is not handled is a case when the project pipeline would be filtered out (e.g. no CI setup, or workflow rules refused), but we still want to enforce the policy pipeline. I'm going to explore this next week.

      In the meantime, could you please have a look and let me know if this concept is more or less how you imagined? Thanks :raised_hands:

  • requested review from @furkanayhan

  • added 1 commit

    • 48db7f81 - Pipeline execution policy POC using dry run

    Compare with previous version

  • Martin Čavoj added 198 commits

    added 198 commits

    • 48db7f81...872bae86 - 197 commits from branch master
    • d7aec5d2 - Pipeline execution policy POC using dry run

    Compare with previous version

  • Martin Čavoj added 117 commits

    added 117 commits

    Compare with previous version

  • Martin Čavoj changed the description

    changed the description

  • Martin Čavoj mentioned in merge request !150334 (merged)

    mentioned in merge request !150334 (merged)

  • Furkan Ayhan removed review request for @furkanayhan

    removed review request for @furkanayhan

  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Please register or sign in to reply
    Loading