Commit db0be7a7 authored by Federico Falconieri's avatar Federico Falconieri
Browse files

Merge branch 'fix-badge' into 'main'

fix: badge creation

See merge request just-ci/templates!42
parents 3f16505e d0c2116f
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -7,10 +7,11 @@
# badge:your_custom_job:
#   extends: .badge
#   variables:
#     NAME: "version"
#     LABEL: "version"
#     VALUE: "1.2.3"
#     COLOR: "red"
#     URL: "${CI_PROJECT_URL}/tags/${CI_COMMIT_TAG}"
#     URL: "${CI_PROJECT_URL}"
#     BADGE_NAME: ""  # Optional. Name of the badge in Settings. Defaults to $LABEL

# Make sure your_custom_job is replaced and unique, and you've changed the variables
# according to your preferences.
@@ -25,24 +26,25 @@
  variables:
    GIT_STRATEGY: "none"
  script:
    - IMAGE_URL=${CI_PROJECT_URL}/-/jobs/artifacts/${CI_COMMIT_REF_SLUG}/raw/ci_badges/${NAME}.svg?job=${CI_JOB_NAME}
    - BADGE_NAME=${BADGE_NAME:-${LABEL}}
    - IMAGE_URL=${CI_PROJECT_URL}/-/jobs/artifacts/${CI_DEFAULT_BRANCH}/raw/ci_badges/${BADGE_NAME}.svg?job=${CI_JOB_NAME}
    - mkdir -p ci_badges
    - anybadge -l "${NAME}" -v "${VALUE}" -c "${COLOR}" -f "ci_badges/${NAME}.svg"
    - anybadge -l "${LABEL}" -v "${VALUE}" -c "${COLOR}" -f "ci_badges/${BADGE_NAME}.svg"
    - |
      echo -e "[+] Created ci_badges/${NAME}.svg:\n- Label: ${NAME}\n- Value: ${VALUE}\n- Color: ${COLOR}\n- URL: ${URL}"
      echo -e "[+] Created ci_badges/${BADGE_NAME}.svg:\n- Label: ${LABEL}\n- Value: ${VALUE}\n- Color: ${COLOR}\n- URL: ${URL}"

    - |
      if [ -z "${GL_TOKEN}" ]; then
        echo "[!] GL_TOKEN not set. You can check the badge in the artifacts. It will not be automatically installed/updated in your project."
        echo "[?] You can set it manually. Create/update a badge named '${NAME}' with the image URL ${IMAGE_URL} and as the link URL ${URL:-$CI_PROJECT_URL}."
        echo "[?] You can set it manually. Create/update a badge named '${BADGE_NAME}' with the image URL ${IMAGE_URL} and as the link URL ${URL:-$CI_PROJECT_URL}."
        echo "[?] You can also set this badge anywhere else. Just reference the image ${IMAGE_URL}."
        exit 1
      else
        echo "[*] Creating/updating badge..."
        BADGE_ID=$(curl -SsLf -H "PRIVATE-TOKEN: ${GL_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/badges" | jq --arg NAME "${NAME}" '.[] | select(.name==$NAME) | .id') || true
        BADGE_ID=$(curl -SsLf -H "PRIVATE-TOKEN: ${GL_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/badges" | jq --arg BADGE_NAME "${BADGE_NAME}" '.[] | select(.name==$BADGE_NAME) | .id') || true
        if [ -z "${BADGE_ID}" ]; then
          echo "[-] Badge doesn't exist yet. We'll create a new one..."
          STATUS_CODE=$(curl -SsL -w "%{http_code}" -X POST -H "PRIVATE-TOKEN: ${GL_TOKEN}" -d "image_url=${IMAGE_URL}&link_url=${URL:-$CI_PROJECT_URL}&name=${NAME}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/badges" -o /dev/null)
          STATUS_CODE=$(curl -SsL -w "%{http_code}" -X POST -H "PRIVATE-TOKEN: ${GL_TOKEN}" -d "image_url=${IMAGE_URL}&link_url=${URL:-$CI_PROJECT_URL}&name=${BADGE_NAME}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/badges" -o /dev/null)
        else
          echo "[*] Updating badge ID ${BADGE_ID}..."
          STATUS_CODE=$(curl -SsL -w "%{http_code}" -X PUT -H "PRIVATE-TOKEN: ${GL_TOKEN}" -d "image_url=${IMAGE_URL}&link_url=${URL:-$CI_PROJECT_URL}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/badges/${BADGE_ID}" -o /dev/null)
+12 −8
Original line number Diff line number Diff line
@@ -31,16 +31,20 @@ semantic-release:
        fi
      done
    - semantic-release ${EXTRA_ARGS}
  only:
    variables:
      - $GL_TOKEN
  rules:
    - if: '$GL_TOKEN'

badge:semantic-release:
  extends: .badge
  before_script:  # We can't do this in rules as this variable is created during the pipeline run.
    - |
      if [ -z "${TBUMP_NEXT_VERSION}" ]; then
        echo "[!] No next version."
        exit 0
      fi
  variables:
    NAME: "version"
    VALUE: "${CI_COMMIT_TAG}"
    LABEL: "version"
    VALUE: "v${TBUMP_NEXT_VERSION}"
    COLOR: "green"
    URL: "${CI_PROJECT_URL}/tags/${CI_COMMIT_TAG}"
  rules:
    - if: ($CI_COMMIT_TAG =~ /^v[0-9]+(\.[0-9]+){2}$/ && $GL_TOKEN)
    URL: "${CI_PROJECT_URL}/tags/v${TBUMP_NEXT_VERSION}"
    BADGE_NAME: "version"