はじめに
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']
セクション下の設定を変更します。
enabled
はture
にしましょう。
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'
}
-
provider
:AzureRM
にします。 -
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です。
下記のようにenvironment
のGITLAB_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ストレージ側でも保存されているか確認します。
ストレージブラウザーで保存先のコンテナを見るとディレクトリが作成されています。このどこかにアーティファクトが保存されています。
自分の場合は@final
下に存在することを確認しました。ここでアーティファクトを管理することはないと思いますが、保存や削除が正しくできていることを確認したいときは@final
下を探してみてください。