2024年9月10日火曜日

omnibus-gitlab に記載されている Promethues のバージョンを定期的に取得する gitlab-ci のサンプル

omnibus-gitlab に記載されている Promethues のバージョンを定期的に取得する gitlab-ci のサンプル

概要

clone して grep します
変数でタグを指定できるようにしているのでもう少し工夫すればタグを自動で取得したり複数のタグのバージョンを取得できたりできるはずです

環境

  • Gitlab.com 17.4.0-pre
    * Runner (docker-mahcine executor ruby:3.1)

.gitlab-ci.yml

stages:
  - fetch_versions

# 任意のタグに基づいてバージョン情報を取得するジョブ
get_versions:
  stage: fetch_versions
  script:
    - echo "Checking versions for the specified tag -> $TARGET_TAG"
    # GitLabソースコードをクローン
    - git clone https://gitlab.com/gitlab-org/omnibus-gitlab.git
    - cd omnibus-gitlab
    # ユーザーが指定したタグにチェックアウト
    - git checkout $TARGET_TAG
    # Prometheusのバージョンを取得
    - echo "Prometheus version:"
    - grep 'Gitlab::Version.new' config/software/prometheus.rb | sed -n "s/.*'\(.*\)'.*/\1/p"
    # Alertmanagerのバージョンを取得
    - echo "Alertmanager version:"
    - grep 'Gitlab::Version.new' config/software/alertmanager.rb | sed -n "s/.*'\(.*\)'.*/\1/p"
    # Node Exporterのバージョンを取得
    - echo "Node Exporter version:"
    - grep 'Gitlab::Version.new' config/software/node-exporter.rb | sed -n "s/.*'\(.*\)'.*/\1/p"
  # ジョブの実行にはTARGET_TAG変数が必須
  rules:
    - if: '$TARGET_TAG != null'

変数

注意事項

script 内でコロンを使う場合はコロンの後ろにスペースがあると「This GitLab CI configuration is invalid: jobs:get_versions:script config should be a string or a nested array of strings up to 10 levels deep.」と言われて怒られるので注意しましょう

最後に

シャローンクローンにしたりすればもっと速くなると思います
定期実行にするのも良いと思います

前回の実行からバージョンが上がったら通知するようにしたら便利かもしれません

0 件のコメント:

コメントを投稿