質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

GitLab

GitLabは Gitoliteをブラウザから管理できるようにする Rubyアプリケーションで、 GitHubのようなサービスをクローズドな環境に独自で構築できるように 公開されたものです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

CI(継続的インテグレーション)

CI(継続的インテグレーション)は、アプリ開発においてビルドとテストを繰り返すことで品質改善と納期短縮を図る手法です。JenkinsやTravis CIなどの専用ツールを利用してプロセスを自動化・半自動化して効率的に実施します。

Q&A

解決済

2回答

1859閲覧

[GitLab CI] ローカルランナーのジョブ(PHPUnit)が失敗する。

donut4

総合スコア170

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

GitLab

GitLabは Gitoliteをブラウザから管理できるようにする Rubyアプリケーションで、 GitHubのようなサービスをクローズドな環境に独自で構築できるように 公開されたものです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

CI(継続的インテグレーション)

CI(継続的インテグレーション)は、アプリ開発においてビルドとテストを繰り返すことで品質改善と納期短縮を図る手法です。JenkinsやTravis CIなどの専用ツールを利用してプロセスを自動化・半自動化して効率的に実施します。

0グッド

1クリップ

投稿2023/03/26 23:22

編集2023/03/28 14:40

事象・問題

GitLabに登録したランナーのジョブ(PHPUnit)が失敗します。
登録したランナーは、Dockerコンテナ(CentOS7)に、PHPUnitをインストールしてdocker commitをしたイメージです。

ジョブは起動しますが、登録したランナーイメージをpullできないといわれます。
以下ジョブのログです。 (failed to pull image辺りが原因だと思っています。)

イメージ説明

インフラ、DevOpsなどのサーバー運用にお詳しい方、
ご教授のほどお願いいたします。

ジョブの実行環境に使用するイメージ。(コンテナ名はphptest)

$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE phptest latest 131e6a77f5da About a minute ago 471MB

.gitlab-ci.yml

image: phptest stages: - test phpunit_job: stage: test script: - /root/vendor/bin/phpunit test #コンテナ制作手順の3で使用したPHPUnitのパス

ランナーを登録した後、gitlab-runner runをします。

$ gitlab-runner run Runtime platform arch=amd64 os=linux pid=15873 revision=d540b510 version=15.9.1 Starting multi-runner from /home/USER/.gitlab-runner/config.toml... builds=0 WARNING: Running in user-mode. WARNING: Use sudo for system-mode: WARNING: $ sudo gitlab-runner... Configuration loaded builds=0 listen_address not defined, metrics & debug endpoints disabled builds=0 [session_server].listen_address not defined, session endpoints disabled builds=0 Initializing executor providers builds=0

登録されてGitLab上で起動しています。

準備完了です。

問題となっているログ

ランナー失敗。からの問題となっているログです。
イメージ説明
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

config.tomlにpull_policy = "if-not-present"を記述したら問題となっているエラーが消えました。

投稿2023/03/28 14:43

donut4

総合スコア170

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

個人的にはdockerhubの公開イメージをベースに前処理をbefore-scriptに書く派なので,
こういうこともできるんですねぇ,と思いました。

さて,まぁ基本的には「エラーログ読めよ」で終わりなのですが,ubuntuのgImageReaderからOCRでエラーメッセージのログ画像を読み込みます。背景が黒なので,うまく読み込むには色を反転する必要がありました。質問者に対する好感度が2下がります。

ERROR: Job failed: failed to pull image “phptest" with specified policies [always]:
Error response from daemon: pull access denied for phptest,
repository does not exist
or may require ‘docker login’: denied:
requested access to the resource is denied (manager.go:237:25)

まぁぶっちゃけ"phptest"が読み込めないよって言ってます。
[always]というキーワードがからんでいそうです。

gitlab-runnerpolicyalwaysぐらいでぐぐると,imageとはとかConfigure how runner pull imagesとかあたりで,デフォルトのpull_policy = alwaysではローカルのイメージを読み込まないことが分かります。

なので,/etc/gitlab-runner/config.tomlの中の設定を
Set the if-not-present pull plicy

Set the never pull policy」のリンクに書いてあるような感じに設定すれば良さそうな感じということが想像できます。

まぁやってないので,うまくいくかどうか知らんけど。

投稿2023/03/28 13:20

ujimushi_sradjp

総合スコア2150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

donut4

2023/03/28 14:43

設定ファイルにpull_policy = "if-not-present"を書いたら解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問