0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitLab CIでオブジェクトストレージにアーティファクトをアップロードする(Azureの場合)

Last updated at Posted at 2024-10-21

はじめに

GitLab(セルフマネージド版)でオブジェクトストレージにアーティファクトをアップロードする手順のメモです。

環境

  • GitLab(セルフマネージド版)
    • Dockerコンテナで起動
  • Azure
    • Azure Blob ストレージアカウント

オブジェクトストレージの設定

今回はAzureストレージアカウントを使います。

1. ストレージアカウントの作成

はじめにストレージアカウントを作成します。
任意のアカウント名で作成します。今回はネットワーク周りは考慮しません。

2. 接続情報の取得

以下の情報をメモしておきます。

  • アカウント名
  • アクセスキー
  • ドメイン名(設定していれば)
    • デフォルトはblob.core.windows.net

3. コンテナの作成

保存先のコンテナを作成しておく必要があります。
作成したストレージアカウントに任意の名前のコンテナを作成してください。
今回はgitlab-artifactsにします。

Azure側の準備は以上です。

4. gitlab.rbの設定更新

gitlabにオブジェクトストレージ設定を追加します。
gitrab.rbに下記を記載します。デフォルトでコメントアウトされているはずです。

gitlab_rails['object_store']['enabled'] = true
gitlab_rails['object_store']['proxy_download'] = true
gitlab_rails['object_store']['connection'] = {
    'provider' => 'AzureRM',
    'azure_storage_account_name' => '<AZURE STORAGE ACCOUNT NAME>',
    'azure_storage_access_key' => '<AZURE STORAGE ACCESS KEY>',
    'azure_storage_domain' => 'blob.core.windows.net'
}
# アーティファクト以外を無効化
gitlab_rails['object_store']['objects']['artifacts']['bucket'] = 'gitlab-artifacts'
gitlab_rails['object_store']['objects']['external_diffs']['enabled'] = false
gitlab_rails['object_store']['objects']['lfs']['enabled'] = false
gitlab_rails['object_store']['objects']['uploads']['enabled'] = false
gitlab_rails['object_store']['objects']['packages']['enabled'] = false
gitlab_rails['object_store']['objects']['dependency_proxy']['enabled'] = false
gitlab_rails['object_store']['objects']['terraform_state']['enabled'] = false
gitlab_rails['object_store']['objects']['ci_secure_files']['enabled'] = false
gitlab_rails['object_store']['objects']['pages']['enabled'] = false

細かい説明

gitlab_rails['object_store']セクション下の設定を変更します。

enabledtureにしましょう。
proxy_downloadはプロキシ設定が必須ならtrueにしましょう。

gitlab_rails['object_store']['enabled'] = true
gitlab_rails['object_store']['proxy_download'] = true

connectionに下記設定を行います。

gitlab_rails['object_store']['connection'] = {
    'provider' => 'AzureRM',
    'azure_storage_account_name' => '<AZURE STORAGE ACCOUNT NAME>',
    'azure_storage_access_key' => '<AZURE STORAGE ACCESS KEY>',
    'azure_storage_domain' => 'blob.core.windows.net'
}
  • providerAzureRMにします。
  • azure_storage_account_name:作成したストレージアカウント名
  • azure_storage_access_key:取得したアクセスキー
  • azure_storage_domain:カスタムドメイン名、何も設定してなければデフォルト値
    • デフォルト値はblob.core.windows.netです。

objectsでファイルの種類に応じてオブジェクトストレージに保存するか設定できます。
デフォルトではすべてのファイルが保存される設定になっています。
今回はアーティファクトのみ保存したいので、アーティファクトだけ有効に、それ以外は無効にする設定にします。

# Blobストレージのコンテナ名をbucketに指定
gitlab_rails['object_store']['objects']['artifacts']['bucket'] = 'gitlab-artifacts'
# アーティファクト以外は無効化
gitlab_rails['object_store']['objects']['external_diffs']['enabled'] = false
gitlab_rails['object_store']['objects']['lfs']['enabled'] = false
gitlab_rails['object_store']['objects']['uploads']['enabled'] = false
gitlab_rails['object_store']['objects']['packages']['enabled'] = false
gitlab_rails['object_store']['objects']['dependency_proxy']['enabled'] = false
gitlab_rails['object_store']['objects']['terraform_state']['enabled'] = false
gitlab_rails['object_store']['objects']['ci_secure_files']['enabled'] = false
gitlab_rails['object_store']['objects']['pages']['enabled'] = false

コンテナでGitLabを動かしてる場合は、docker-compose.ymlに追記する形でもOKです。
下記のようにenvironmentGITLAB_OMNIBUS_CONFIG下に同様の記載をします。

version: '3.6'
services:  
  gitlab:    
    environment:         
      GITLAB_OMNIBUS_CONFIG: |    
        gitlab_rails['object_store']['enabled'] = true
        ## 以下にgitlab.rbと同様の記載を行う

最後にgitlabを再起動します。

docker compose up -d

おまけ:Blobストレージに保存されているのを確認する

ちゃんとオブジェクトストレージ設定が正しく設定されているか確認するために、Blobストレージ側でも保存されているか確認します。

ストレージブラウザーで保存先のコンテナを見るとディレクトリが作成されています。このどこかにアーティファクトが保存されています。

image.png

自分の場合は@final下に存在することを確認しました。ここでアーティファクトを管理することはないと思いますが、保存や削除が正しくできていることを確認したいときは@final下を探してみてください。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?