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

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

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

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

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

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

Q&A

解決済

1回答

7369閲覧

GitLabCIでmerge request時にテストコードを走らせたい

退会済みユーザー

退会済みユーザー

総合スコア0

GitLab

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

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

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

0グッド

0クリップ

投稿2018/07/12 07:42

こんにちは。
Gitlab,CI共に初心者です。

やりたいこと

以下のようなCI環境を作ろうとしています。

  1. 開発者が各々のトピックブランチにpush
  2. キリが良ければ、そのリモートのトピックブランチをmasterにmerge requestと出す
  3. ここでCIツールが動き、MR出されたコードに対してテストコードを実行する
  4. 失敗すればその時点でMR取り消し、成功すれば権限のあるものが確認しMRを承認する

やったこと

Gitlab.comとgitlabCIを使って、CI環境を構築しています。
gitlab-ci.ymlに設定を書き、

  • push時にテストコードを実行
  • テストの結果をslackに送信

といった、練習用のymlはちゃんと動きました。

その後、上記のことを実現したいと思いいろいろ調べたのですが、
「gitlabへのpushなどをトリガにしてJenkinsでテストを走らす」などの情報がたくさん出てきて、なかなか理解に苦しんでいます。

最初の推測では、gitlabciなどを使わなくとも「MR時にテストを走らす」などの設定が簡単にできると思っていたのですが、どうやらそういったものはないようで、
調べた中でも最も近いものが以下の質問でした。
Trigger jobs in gitlab-ci on merge request - Stack Overflow

gitlab上でwebhookとPipeline triggersで設定をし、
gitlabにMRがあったことをwebhookで検知し、gitlab-ci.yml上で書いたtriggerでそれを確認してテストコードを走らせるというものです。
シンプルな作業をするためにすごい遠回りをしている感じがします。

つまっていること

以上を踏まえて、gitlab-ci.ymlの一部に以下のように書きました。
only: triggerとすることで、trigger時にのみテストが実行されるようなのですが、
トピックブランチにpushした時点で普通にテストコードが実行されてしまっています。

どこの設定がおかしいのかわからず困っています。

test_job: stage: test script: - python test.py only: - /^feature-.*$/ - triggers

聞きたいこと

  • 本当にこのstackoverflowの方法しかないのか
  • このstackoverflowの質問の理解の仕方はあっているのか
  • gitlab-ci.ymlの書き方はあっているのか

どなたかご存知のかたいらっしゃればご教示願えませんでしょうか。
よろしくおねがいします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんな感じでいかがでしょうか?

stages: - master デプロイ名: stage: master script: - if [ $CI_COMMIT_REF_NAME = 'master' ]; then - echo 'masterブランチですのでデプロイ処理を実行' - else - echo 'master以外のブランチですので何もしない' - fi tags: - tag_name

投稿2018/10/31 15:48

nnahito

総合スコア2006

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.40%

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

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

質問する

関連した質問