プライベート(カスタム)MySQLイメージをDockerHubリポジトリからサービスとしてgitlab-ci.ymlパイプラインにプルしようとしています。ユーザー名とパスワード(CI変数)を使用してdockerhubにログインしようとするbefore_scriptを追加しました。失敗したビルドログには、Docker Hubへのログインが成功したかどうかを示す出力はありませんが、イメージのプルが次のメッセージで失敗したためではないと思います(編集:またはgitlabが取得しようとしているために試行されたことはありませんbeforeスクリプトを実行する前のサービス?):
リポジトリが存在しないか、「dockerlogin」が必要な場合があります(executor_docker.go:168:0s)
私は共有ランナーを使用しています(gitlab.comを使用する唯一のオプションだと思いますか?)docker用のgitlab ciトークンについての言及をかなり見ましたが、これを容易にする方法を説明するドキュメントは見つかりませんでした。
私は何かを見落としている/理解していないか、検索で適切な解決策に出くわしていると確信しているので、経験が浅い場合はお詫びし、助けを事前に感謝します。
私のgitlab-ci(maven変数は、このプロジェクトのビルドがプライベートmavenリポジトリに依存しているためです。データベースとredisホスト変数は実行時にアプリに挿入されるため、どのコンテナーを指すかがわかります)
image: maven:3.5.0-jdk-8
before_script:
- "docker login -u$DOCKER_USER -p$DOCKER_PASS" #pipeline variables
variables:
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
DATABASE_HOST: mysql
REDIS_HOST: redis
services:
- name: privaterepo/private-mysql-schema
alias: mysql
- name: redis:latest
alias: redis
stages:
- build
maven-build:
stage: build
script: "mvn $MAVEN_CLI_OPTS package -B"
artifacts:
paths:
- target/*.jar
まず、必要に応じてプライベートDockerレジストリの資格情報を提供するようにGitLabCIをセットアップします。これを行うには、ドキュメントに特定のセクションがあり、完全な答えになるために従う必要があります。
docker login
または他の方法を使用して、DockerレジストリのURL、ユーザー名、およびパスワードを取得します(Dockerハブのレジストリを把握するために時間を費やす必要がありました)DOCKER_AUTH_CONFIG
GitLabCI変数セクションで変数を定義します。{
"auths": {
"registry.hub.docker.com": {
"auth": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx" // base 64 encoded username:password
}
}
}
image: registry.hub.docker.com/ruwanka/helloworld:0.1
を宣言する.gitlab-ci.yml
これで、画像をプルする要件が完全に満たされるはずです。ドキュメントには、サービスのリストを許可するためのランナーの要件をリストする別のセクションがあります。それが何も指定していない場合、それは問題ないはずです、それが機能しない場合はそれを微調整する必要があるかもしれません。
最終的なyamlは次のようになります
image: registry.hub.docker.com/ruwanka/helloworld:0.1
build:
script:
- echo "hello"
# more steps
services:
- registry.hub.docker.com/ruwanka/helloworld:0.1
GitLabジョブのログのスニペット
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加