Commit 4601cfe0 authored by Ruben ten Hove's avatar Ruben ten Hove
Browse files

fix: test and catch more failures + inline settings

parent 74a5bb5d
Loading
Loading
Loading
Loading
+0 −36
Original line number Diff line number Diff line
---
# This file contains recommended settings for a GitLab project.
# Based on values given by the GitLab API.

merge_requests_enabled:
  recommended: true
  hint: Enable merge requests.
merge_method:
  recommended: merge
  hint:
    To ensure a full history of what happened with your code, never use fast
    forward. Set 'Merge method' to 'Merge commit'
only_allow_merge_if_pipeline_succeeds:
  recommended: true
  hint:
    Only allow merging when the pipeline succeeds, to ensure no broken code can
    be merged.
only_allow_merge_if_all_discussions_are_resolved:
  recommended: true
  hint:
    Ensure all discussions are resolved before merging. Tedious perhaps, but
    reduces mistakes.
allow_merge_on_skipped_pipeline:
  recommended: false
  hint: Do not allow merging on skipped pipelines.
remove_source_branch_after_merge:
  recommended: true
  hint:
    To keep your repo clean, remove source branches when merge requests are
    merged.
# approvals_before_merge:
#   recommended: higher than
#   hint: ToDo. Needs different checking logic
autoclose_referenced_issues:
  recommended: true
  hint: Set auto close referenced issues.
+40 −9
Original line number Diff line number Diff line
@@ -15,20 +15,51 @@ gitlab:recommended:
    entrypoint: [""]
  variables:
    GIT_STRATEGY: none
    RECOMMENDED_SETTINGS: |
      merge_requests_enabled:
        recommended: true
        hint: Enable merge requests.
      merge_method:
        recommended: merge
        hint:
          To ensure a full history of what happened with your code, never use fast
          forward. Set 'Merge method' to 'Merge commit'
      only_allow_merge_if_pipeline_succeeds:
        recommended: true
        hint:
          Only allow merging when the pipeline succeeds, to ensure no broken code can
          be merged.
      only_allow_merge_if_all_discussions_are_resolved:
        recommended: true
        hint:
          Ensure all discussions are resolved before merging. Tedious perhaps, but
          reduces mistakes.
      allow_merge_on_skipped_pipeline:
        recommended: false
        hint: Do not allow merging on skipped pipelines.
      remove_source_branch_after_merge:
        recommended: true
        hint:
          To keep your repo clean, remove source branches when merge requests are
          merged.
      autoclose_referenced_issues:
        recommended: true
        hint: Set auto close referenced issues.
  script:
    - apk add curl
    - apk add -q curl
    - dasel --version
    - curl -sSLf -o .settings.yml
      https://gitlab.com/just-ci/templates/-/raw/v6.28.3/project-automation/gitlab/recommended-settings.yml
    - |
      curl -sSLf -H "PRIVATE-TOKEN: ${GL_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}" -o current_project.json
    - echo "${RECOMMENDED_SETTINGS}" > settings.yaml
    - >
      curl -sSLf -H "PRIVATE-TOKEN: ${GL_TOKEN}"
      "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}" -o project.json
    - let COUNT=0 || true
    - KEYS="$(dasel -f settings.yaml "keys().all()" -w -)"
    - |
      for KEY in $(dasel -f .settings.yml -r yaml "keys().all()" -w -); do
      for KEY in ${KEYS}; do
        printf "[*] Checking ${KEY}..."
        CURRENT=$(dasel -f current_project.json -r json "${KEY}" -w -)
        RECOMMENDED=$(dasel -f .settings.yml "${KEY}.recommended")
        HINT=$(dasel -f .settings.yml "${KEY}.hint")
        CURRENT=$(dasel -f project.json -r json "${KEY}" -w - || echo "error")
        RECOMMENDED=$(dasel -f settings.yaml "${KEY}.recommended")
        HINT=$(dasel -f settings.yaml "${KEY}.hint")
        if [ "${CURRENT}" != "${RECOMMENDED}" ]; then
          echo -e " \e[31mrecommended value not set\e[0m. Current value is: ${CURRENT}. Expected value is: ${RECOMMENDED}."
          echo "${HINT}"
+0 −3
Original line number Diff line number Diff line
@@ -21,8 +21,5 @@ search = '-/raw/v{current_version}/project-automation'
[[file]]
src = "project-automation/semantic-release.yml"
[[file]]
src = "project-automation/gitlab/recommended.yml"
search = '-/raw/v{current_version}/project-automation'
[[file]]
src = "pipelines/project-automation.yml"
search = "UPDATE_CHECK_CURRENT_VERSION: v{current_version}"