
Travis CI でビルドステージを使用する
ビルドステージとは、ジョブをグループ化し、ステージ内のジョブが終わってから次のステージに進むようなビルドを行うための仕組みです。
動作確認用のリポジトリ
基本的な使用方法
ステージの順番定義
stages:
- check
- test
- deploy
stages に定義したものが上から順に実行されます。
ステージごとに実行条件を与えたい場合
stages:
- check
- name: test
if: branch = master and tag IS blank and type IN (pull_request, api)
- name: deploy
if: tag IS present
if を使用して条件を設定することが可能です。
上の例では master へのプルリクの時にテストを行い、タグがプッシュされたときにデプロイを行います。
ジョブの定義
jobs:
include:
- stage: check
language: php
php: '7.2'
script: php/check.sh
- stage: check
language: node_js
node_js: '11'
dist: trusty
script: node_js/check.sh
- stage: test
language: php
php: '7.2'
script: php/test.sh
- stage: test
language: node_js
node_js: '11'
dist: trusty
script: node_js/test.sh
- stage: deploy
language: node_js
node_js: '11'
script: skip
before_script: bin/before_deploy.sh
deploy:
provider: release
skip_cleanup: true
name: ${TRAVIS_TAG}
api_key:
secure: .........
file: ${RELEASE_FILE}
overwrite: true
on:
tags: true
- stage: deploy
language: node_js
node_js: '11'
dist: trusty
script: skip
deploy:
provider: script
script: bash bin/release.sh
on:
tags: true
jobs.include にジョブを定義します。
stage には前述の stages に設定したものを指定します。
それぞれのジョブで異なる言語、環境変数などを利用することができるため、非常に自由度が高いです。
deploy も通常のものと同じように記述することができます。
ステージ内のすべてのジョブが完了してから次のステージに進みます。
例:構文チェックステージが完了してからテストステージに進む
結果
無料だと3つのジョブまで並行して実行されます。
しかし下のスクショでは、Checkステージが終わっていないため1つ枠が空いているにもかかわらず次のTestステージのジョブは開始されません。

Checkステージのジョブがすべて完了するとTestステージのジョブが実行されます。

Makefile で 動的にコマンドを変える方法
