Package グループ - GitLab 品質保証エンドツーエンドテスト
テスト戦略
ローカル開発テスト
ユニットテスト
- Container Registry(Go):
make test - Package Registry(Rails):
bundle exec rspec ee/spec/models/packages/ - フロントエンド:
yarn jest ee/spec/frontend/packages
- Container Registry(Go):
統合テスト
- 異なるストレージバックエンドに対してテストする
- API エンドポイントを検証する
- 認可ルールを確認する
エンドツーエンドテスト
Package グループは E2E テストに GitLab QA を使用しています。これは複数のサービスを統合する機能にとって重要です。
一般的なテストシナリオ
Container Registry
# コンテナイメージの公開 Resource::Container::Image.fabricate_via_api! do |image| image.name = 'my-image' image.repository_name = 'my-project' endPackage Registry
# npm パッケージの公開 Resource::Package::Npm.fabricate_via_api! do |package| package.name = 'my-package' package.version = '1.0.0' end
テスト環境のセットアップ
GDK を使ったローカルテスト
必要な環境変数を設定する:
export QA_LOG_LEVEL=debug export WEBDRIVER_HEADLESS=falseGDK がループバックインターフェースを使用していることを確認する
ホスト名をループバックインターフェースにマップする
ファイルアップロードのテスト
複数のストレージバックエンドに対してアップロードをテストします:
- ローカルストレージ(デフォルト)
- オブジェクトストレージ:
- GCP(GitLab.com との同等性のため推奨)
- MinIO(ローカル開発)
- AWS S3
- Azure
HackyStack デモ環境
Omnibus と Container Registry を使った一時的なデモの場合:
https://gitlabsandbox.cloudにログインする- Cloud Account ID
dev-package-container-96a3ff34を選択する - 「View Credentials」タブから認証情報を取得する
- Play アイコンを使って環境を起動する
- CI/CD パイプラインを実行する
- Deploy アクションを手動でトリガーする
- 提供された認証情報を使ってデモプロジェクトにアクセスする
- 完了後は Destroy ジョブをトリガーしてクリーンアップする
テストツール
シードユーティリティ
- テストイメージの迅速な作成
- 複数アーキテクチャのサポート
Container Registry Cloud Seeder
- 大量イメージの作成
- 負荷テストのサポート
トラブルシューティング
よくある問題
ストレージバックエンドの接続
# GCS 認証情報の確認 gsutil ls gs://your-bucket # S3 アクセスの検証 aws s3 ls s3://your-bucketレジストリ認証
# レジストリへのログインテスト docker login registry.gitlab.comパッケージ公開の失敗
- プロジェクト/グループのパーミッションを確認する
- ストレージのクォータを確認する
- パッケージメタデータを検証する
