基本(2ブランチ運用)
mainブランチとprdブランチの2つで、開発環境と本番環境を管理する運用例です。
検証環境を使わないシンプルな構成で、小規模なプロジェクトに適しています。
ブランチと環境の対応
| ブランチ | ベースマキナの環境 | 説明 |
|---|---|---|
main | 開発環境 | 日常的な開発を行なうブランチ |
prd | 本番環境 | 本番リリース用のブランチ |
開発環境への変更
1. featureブランチで開発
mainからfeature/xxxブランチを作成し、アクションやビューの設定を編集してPRを作成します。
例えば、「ユーザー一覧ビューのテーブルにユーザーの有効/無効状態を表示する」場合、以下のように変更します。
list-usersアクションのJavaScriptコードを編集して、statusを返すようにするuser-listビューのTSXコードを編集して、テーブルに稼働状態列を追加する- 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作成時 | main | bm push --dry | 設定の差分をPRにコメント |
| PRマージ時 | main | bm push | 設定の差分を開発環境に反映 |
| PR作成時 | prd | bm deploy --dry <prd環境ID> | 本番へのデプロイの差分をコメント |
| PRマージ時 | prd | bm 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 }}