0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Antigravity× GitHub MCP連携でS3へCI/CDやってみた

0
Posted at

はじめに

今回はセットアップ済みの GitHub MCP (Model Context Protocol) を活用し、エージェントにGitHub Actionsの構築から、OIDC認証を用いたAWS S3へのデプロイまでをサポートしてもらいました。

Image_202512291704.jpeg

今回の構成

要素 採用ツール / 技術
IDE Antigravity
Protocol GitHub MCP (リポジトリ情報の読み取り・操作を代行)
CI/CD GitHub Actions
Cloud AWS S3 (静的サイトホスティング)
Auth OIDC (OpenID Connect)

1. AWS側の準備

OIDC方式では「アクセスキー」を発行する代わりに、GitHub Actionsからの接続を一時的に許可する設定を行います。

ID プロバイダの作成 (IAM)

  • プロバイダのタイプ:OpenId Connect

  • プロバイダのURL: https://token.actions.githubusercontent.com

  • 対象者 (Audience): sts.amazonaws.com

iamプロバイダー.png

IAM ロールの作成

IAMの「ロールを作成」メニューから信頼されたエンティティタイプとして [ウェブアイデンティティ] を選択し、詳細を以下のように設定します。

  • プロバイダのタイプ: ウェブアイデンティティ
  • アイデンティティプロバイダー: token.actions.githubusercontent.com
  • Audience: sts.amazonaws.com
  • GitHub organization: GitHubユーザー名(または組織名)
  • GitHub repository: 今回使用するリポジトリ名
  • GitHub branch: main (特定のブランチに絞る場合)

S3バケットの設定

  • バケット名: 任意
  • 静的ウェブサイトホスティング: 有効
  • パブリックアクセスブロック: オフ(検証のため)
  • バケットポリシー: s3:GetObject を許可。

2. GitHub Secretsへの認証情報登録

ワークフローを動かすために、AWSで作成したロールのARNなどの機密情報をGitHubリポジトリに安全に登録します。

  1. 対象リポジトリの [Settings] タブをクリック。
  2. 左サイドメニューの [Secrets and variables] > [Actions] を選択。
  3. [New repository secret] ボタンから以下の2つを登録します。

設定場所.png

Name Secret
AWS_ROLE_ARN IAMロールのARN(arn:aws:iam::...
S3_BUCKET_NAME 作成したS3バケット名

3. CI/CDワークフローの生成と反映

Antigravityのエージェントに以下のプロンプトを投げました。

「AWS S3に自動デプロイするGitHub ActionsのYAMLを作りたい。認証はOIDC方式で、mainブランチへのpushする構成。」

提案された Workflow ファイル

name: Deploy to S3 (OIDC)

on:
  push:
    branches: [ main ]

permissions:
  id-token: write # OIDC認証に必須
  contents: read

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{ secrets.AWS_ROLE_ARN }} # ロールARNを使用
          aws-region: ap-northeast-1

      - name: Deploy to S3
        run: aws s3 sync . s3://${{ secrets.S3_BUCKET_NAME }} --delete --exclude ".git/*" --exclude ".github/*"

今回はこのファイルを手動でリポジトリに反映させました。


4. 実行とトラブルシューティング

実際にプッシュしてアクセスするとエラーに直面しましたが、エージェントとの対話で即座に解決できました。

日本語の文字化け

文字化け.png

  • 原因: HTMLの文字コード指定(UTF-8)がなかったため。
  • 解決: 「文字化けしてる」と伝えると、index.html<head> に入れるべきタグを提示し、修正してくれました。

デプロイ成功.png

この修正もGitHubにプッシュするだけで、自動でS3に反映されることが確認できました。


0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?