Odooの 「PR作成 → CI実行 → 結果コメント → マージ → 自動リリース」 の一連のパイプラインを Reusable Workflow で構築する例を作ります。
以下のような4つのステップに分割すると分かりやすいです:
全体像
- PR作成
- 変更があれば自動でブランチを作成し、PRをオープン(
Create PR)。
- 変更があれば自動でブランチを作成し、PRをオープン(
- CI実行
- Dockerイメージのビルド・テスト・Lint(
flake8/pytestなど)。
- Dockerイメージのビルド・テスト・Lint(
- 結果コメント
- CIの結果をPRにコメント(
Reusable Workflowでコメント機能を利用)。
- CIの結果をPRにコメント(
- マージ後に自動リリース
mainブランチにマージされたらbump-version.sh実行 → GitHub Release作成 → DockerイメージをECRへpush。
1. PR作成用のWorkflow (create-pr.yml)
name: Create PR
on:
push:
branches:
- feature/**
jobs:
create-pr:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- name: Create PR
uses: ./.github/actions/create-pr # 前述のCreate PRアクションを再利用
with:
message: "Odoo module update"
2. CI実行用Workflow (ci.yml)
name: CI for Odoo
on:
pull_request:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Odoo image
run: |
docker build -t odoo-test .
- name: Run tests
run: |
docker run --rm odoo-test pytest tests/
- name: Lint
run: |
docker run --rm odoo-test flake8 addons/
3. CI結果をPRコメントするReusable Workflow (comment-ci-result.yml)
name: Comment CI Result
on:
workflow_call:
inputs:
pr-number:
type: string
required: true
secrets:
token:
required: true
outputs:
message:
value: ${{ jobs.comment.outputs.result }}
jobs:
comment:
runs-on: ubuntu-latest
steps:
- id: comment-step
run: |
body="Odoo CI completed successfully for PR #${{ inputs.pr-number }}"
gh pr comment "${{ inputs.pr-number }}" --body "${body}"
echo "body=${body}" >> $GITHUB_OUTPUT
env:
GITHUB_TOKEN: ${{ secrets.token }}
outputs:
result: ${{ steps.comment-step.outputs.body }}
PRテスト完了後、このReusable Workflowを呼び出すことでPRにコメントが追加されます。
4. マージ後の自動リリース (release.yml)
name: Release Odoo
on:
push:
branches:
- main
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Bump version & Create Release
run: |
version=$(./.github/scripts/bump.sh patch)
gh release create "$version" --title "$version" --generate-notes
- name: Build Docker Image
run: |
docker build -t <AWS_ACCOUNT>.dkr.ecr.ap-northeast-1.amazonaws.com/odoo:$version .
- name: Push to ECR
run: |
aws ecr get-login-password --region ap-northeast-1 \
| docker login --username AWS --password-stdin <AWS_ACCOUNT>.dkr.ecr.ap-northeast-1.amazonaws.com
docker push <AWS_ACCOUNT>.dkr.ecr.ap-northeast-1.amazonaws.com/odoo:$version
次のステップ提案
- 上記4つのWorkflowを
.github/workflowsに配置 - PRテスト結果 → Reusable Workflow呼び出しの連携を追加
- ECRリポジトリ作成(AWS CLIでOK)
次にやること
次は 「PR CI結果をコメントする部分」と「Release後のECS/Kubernetesデプロイ部分」 を統合した 最終的なパイプライン例 を作りましょうか?
これを完成させれば、**「タグを付けるだけでOdooの更新が自動で本番反映」**が可能になります。
コメントに含めるとよい情報
| 種類 | 内容例 |
|---|---|
| ✅ 成否 | 成功/失敗マークとメッセージ |
| 🧪 テスト | 実行数、失敗数、カバレッジなど |
| 🧹 Lint | flake8, pylint などの静的解析結果 |
| 📦 変更範囲 | 影響を受けたモジュール・ファイル |
| 🏷️ バージョン | 次のタグ or 現在のバージョン |
| 🔗 リンク | 関連するJira、ドキュメントなど |
コメントを残す