1
/
5

Bitriseのパイプラインと環境変数【株式会社ライトコード】

弊社エンジニアの記事になります。

Bitriseのパイプラインを利用したジョブ管理が色々と保守に便利だったので、
感じたメリットと構成を紹介します

昔はBitriseには無料枠がありませんでしたが、今は料金体系が変わって一ヶ月150分まで無料のHobbyプランが用意されているので、こちらを利用していきます

パイプラインのメリット

Bitriseでは、様々な機能がカプセル化されたステップ、ステップの実行を定義するワークフローがありますが、このワークフローを連続で実行できるのがパイプラインです。

  • ワークフローを切り分けることができ、保守性が上がる
  • ワークフローの並列実行が可能
  • 並列実行時、次ステージへの待機中クレジットが消費されない

以上のメリットを活かして、iOS、Androidの両プラットフォーム向けのアプリをビルドするジョブを構築していきます。


各環境面ごとにワークフローを作成すると、環境値を何箇所にも分散していることにより変更漏れや間違いが発生したり、一部のステップを修正するために環境分のワークフローを修正する必要が出たりします。
環境面追加の際にできるだけ変更箇所を少なくでき、またビルドフローに変更があった際も該当ワークフロー変更するだけで済む構築を目指します。
以下は、上記の構築でPRDビルド用とSTGビルド用のパイプラインを用意したサンプルのbitrise.ymlです。

---
format_version: '13'
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
project_type: flutter
# pipelinesで、stagesで定義したステージを指定
pipelines:
# PRDビルド用パイプライン
PRD-build:
stages:
- PRD-pre-build: {}
- app-build: {}
- deploy: {}
# STGビルド用パイプライン
STG-build:
stages:
- STG-pre-build: {}
- app-build: {}
- deploy: {}
# ステージの定義
stages:
# PRDビルド
PRD-pre-build:
workflows:
- PRD-build-setting: {}
# STGビルド
STG-pre-build:
workflows:
- STG-build-setting: {}
app-build:
workflows:
- ios-build: {}
- android-build: {}
deploy:
workflows:
- ios-deploy: {}
- android-deploy: {}
# ワークフロー定義(Bitriseのダッシュボード内からでも編集可能)
workflows:

# stage:**-pre-buildで環境設定を行うためのワークフロー
PRD-build-setting:
steps:
- script@1:
# Scriptステップで、build_env変数を追加
inputs:
- content: envman add --key build_env --value "PRD"
- share-pipeline-variable@1:
# ここで指定した変数を下流ワークフローに共有するためのステップ
# share-pipeline-variableステップで指定した変数は、アプリ環境変数で上書きされるため、
# build_envという名前のアプリ環境変数を作らないようにする対応が必要
inputs:
- variables: build_env
STG-build-setting:
steps:
- script@1:
inputs:
- content: envman add --key build_env --value "STG"
- share-pipeline-variable@1:
inputs:
- variables: build_env

# リポジトリのclone、アプリのビルドを行う
ios-build:
steps:
- activate-ssh-key@4:
run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}'
- git-clone@8: {}
- certificate-and-profile-installer@1: {}
- script@1:
inputs:
# アプリビルド処理(今回はダミーとして.dummy_ipa という名前のbinaryファイルを生成するシェル)
- content: sh mock-build.sh iOS ${build_env}
- deploy-to-bitrise-io@2:
# 今回は単純なbinaryファイルをダミーとして出力しているため、
# deploy-to-bitriseステップで共有ファイルとして指定してBitrise上にデプロイし、
# 次のワークフローでpull-intermediate-filesで引き出してくる形で共有
inputs:
- pipeline_intermediate_files: ${build_env}.dummy_ipa:IPA_PATH
android-build:
steps:
- activate-ssh-key@4:
run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}'
- git-clone@8: {}
- certificate-and-profile-installer@1: {}
- script@1:
inputs:

- content: sh mock-build.sh Android ${build_env}

- deploy-to-bitrise-io@2:

inputs:
- pipeline_intermediate_files: ${build_env}.dummy_apk:APK_PATH

# 成果物をデプロイ
ios-deploy:
steps:
# pull-intermediate-filesステップを利用して、デプロイ済みのファイルを作業フォルダに落とす
- pull-intermediate-files@1: {}
- script@1:
inputs:
- content: echo [iOS] ipa file path $IPA_PATH \necho Deploy to URL:https://******/${build_env}
android-deploy:
steps:
- pull-intermediate-files@1: {}
- script@1:
inputs:
- content: echo [iOS] apk file path $APK_PATH \necho Deploy to URL:https://*******/${build_env}

meta:
bitrise.io:
stack: osx-xcode-15.2.x
machine_type_id: g2-m1.4core
app:
envs:
- opts:
is_expand: false
BITRISE_FLUTTER_PROJECT_LOCATION: "*"

記事の続きは下のリンクをクリック!

https://rightcode.co.jp/blogs/45604

もっとワクワクしたいあなたへ

現在、ライトコードでは「WEBエンジニア」「スマホアプリエンジニア」「ゲームエンジニア」、「デザイナー」「WEBディレクター」「エンジニアリングマネージャー」「営業」などを積極採用中です!

有名WEBサービスやアプリの受託開発などの企画、開発案件が目白押しの状況です。

  • もっと大きなことに挑戦したい!
  • エンジニアとしてもっと成長したい!
  • モダンな技術に触れたい!

現状に満足していない方は、まずは、エンジニアとしても第一線を走り続ける弊社代表と気軽にお話してみませんか?

ネット上では、ちょっとユルそうな会社に感じると思いますが(笑)、
実は技術力に定評があり、沢山の実績を残している会社ということをお伝えしたいと思っております。

株式会社ライトコードでは一緒に働く仲間を募集しています
今週のランキング
株式会社ライトコードからお誘い
この話題に共感したら、メンバーと話してみませんか?