開発中の機能
コード管理
運用例
基本(2ブランチ運用)

基本(2ブランチ運用)

mainブランチとprdブランチの2つで、開発環境と本番環境を管理する運用例です。

検証環境を使わないシンプルな構成で、小規模なプロジェクトに適しています。

ブランチと環境の対応

ブランチベースマキナの環境説明
main開発環境日常的な開発を行なうブランチ
prd本番環境本番リリース用のブランチ

開発環境への変更

1. featureブランチで開発

mainからfeature/xxxブランチを作成し、アクションやビューの設定を編集してPRを作成します。

例えば、「ユーザー一覧ビューのテーブルにユーザーの有効/無効状態を表示する」場合、以下のように変更します。

  1. list-usersアクションのJavaScriptコードを編集して、statusを返すようにする
  2. user-listビューのTSXコードを編集して、テーブルに稼働状態列を追加する
  3. 2ファイルを変更したPRを作成する

2. CIで差分を確認

PRが作成されると、CIでbm push --dryが実行され、設定の差分がPRにコメントされます。

3. マージして開発環境に反映

PRをマージすると、CDで設定がベースマキナの開発環境に反映されます。

反映される内容は、変更した設定の種類によって異なります。

設定の種類反映方法
アクション新しいバージョンが作成され、開発環境では常に最新バージョンが使用されるため即時反映
ビュー開発環境用のストレージにビルドしたファイルが配置される
レビュー設定、データソースなど全環境に変更が反映

本番環境への変更

開発環境で確認が取れたら、本番環境にデプロイします。

1. PRの作成

prdブランチにmainをマージするPRを作成します。

2. マージして本番環境にデプロイ

PRをマージすると、CDで以下の処理が実行されます。

  • ビュー: 本番環境用のストレージにビルドしたファイルが配置される
  • アクション: 本番環境のすべてのアクションのバージョンが開発環境に合わせて同期される

コード管理した設定のWeb上での変更

コード管理している設定は、引き続きWeb上(ベースマキナの管理画面)からも変更できます。

ただし、Web上で変更した内容はGitリポジトリには反映されないため、次回のbm pushで差分として検出されます。コード管理を開始した後は、設定の変更はコードで行なうことを推奨します。

⚠️

Web上での変更時には、コード管理されている設定であることを示す警告が表示されます。

CI/CDの設定例

トリガー対象ブランチ実行内容説明
PR作成時mainbm push --dry設定の差分をPRにコメント
PRマージ時mainbm push設定の差分を開発環境に反映
PR作成時prdbm deploy --dry <prd環境ID>本番へのデプロイの差分をコメント
PRマージ時prdbm deploy <prd環境ID>開発環境のバージョンを本番に同期

GitHub Actionsの設定ファイル例

以下は.github/workflows/に配置するワークフローファイルの例です。

開発環境への反映(.github/workflows/push.yml

name: Push to dev
on:
  pull_request:
    branches: [main]
  push:
    branches: [main]
 
jobs:
  push:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - name: Dry run
        if: github.event_name == 'pull_request'
        run: bm push --dry
        env:
          BASEMACHINA_TOKEN: ${{ secrets.BASEMACHINA_TOKEN }}
      - name: Push
        if: github.event_name == 'push'
        run: bm push
        env:
          BASEMACHINA_TOKEN: ${{ secrets.BASEMACHINA_TOKEN }}

本番環境へのデプロイ(.github/workflows/deploy-prd.yml

name: Deploy to prd
on:
  pull_request:
    branches: [prd]
  push:
    branches: [prd]
 
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - name: Dry run
        if: github.event_name == 'pull_request'
        run: bm deploy --dry <prd環境ID>
        env:
          BASEMACHINA_TOKEN: ${{ secrets.BASEMACHINA_TOKEN }}
      - name: Deploy
        if: github.event_name == 'push'
        run: bm deploy <prd環境ID>
        env:
          BASEMACHINA_TOKEN: ${{ secrets.BASEMACHINA_TOKEN }}