Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,16 @@ buffett-code-devプロジェクト内の複数のリポジトリで共通的に
- `name`
- `inputs`(required/defaultを明示)
- `runs.using: composite`
3. 必要に応じて、 `.github/dependabot.yml`に新しいディレクトリを追加してDependabot管理下に配置
3. `README.md`を作成して使用方法を記載
4. 必要に応じて、 `.github/dependabot.yml`に新しいディレクトリを追加してDependabot管理下に配置

### action.ymlの変更時の重要な注意事項
**`action.yml`を変更した場合、必ず同じディレクトリ内の`README.md`も更新すること**

- パラメータの追加・削除・変更時は、READMEのパラメータ表を更新
- デフォルト値を変更した場合も、READMEに反映
- 使用例が古くなっていないか確認
- 各アクションは`action.yml`と`README.md`が常に同期している必要がある

### Dependabot設定
- 全てのアクションディレクトリが`.github/dependabot.yml`で管理されている
Expand Down
61 changes: 61 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# GitHub Actions

`buffett-code-dev`プロジェクトで使用する再利用可能なComposite Actionsのライブラリです。

## ディレクトリ構成

```
.
├── aws/ # AWS関連のアクション
├── docker/ # Docker関連のアクション
└── github/ # GitHub関連のアクション
```

各アクションは以下の構造で配置します:

```
{category}/{action-name}/
├── action.yml
└── README.md
```

各アクションは`action.yml`とその説明を記載した`README.md`をセットで配置します。

## 利用可能なアクション

- **[aws/credentials](aws/credentials/)** - AWS認証情報を設定
- **[aws/lambda_function_update](aws/lambda_function_update/)** - Lambda関数のDockerイメージを更新
- **[docker/build](docker/build/)** - Dockerイメージのビルドとプッシュ
- **[github/amazon-ecr-login](github/amazon-ecr-login/)** - Amazon ECRへのログイン
- **[github/label-stale-items](github/label-stale-items/)** - 古いissueへのラベル付与
- **[github/dependabot-auto-merge](github/dependabot-auto-merge/)** - Dependabot PRの自動マージ

各アクションの詳細な使用方法は、それぞれのディレクトリ内のREADMEを参照してください。

## 新しいアクションの追加

新しいアクションを追加する際は、以下の手順に従ってください:

1. 適切なカテゴリディレクトリ(`aws`/`docker`/`github`等)を選択、または新しいカテゴリディレクトリを作成
2. カテゴリ配下に新しいアクション用のディレクトリを作成
3. `action.yml`を作成してアクションを定義
4. `README.md`を作成して使用方法を記載
5. 必要に応じて`.github/dependabot.yml`に新しいディレクトリを追加

## セキュリティ

### OSV Scanner

このリポジトリでは[OSV Scanner](https://github.com/google/osv-scanner)を使用して脆弱性スキャンを実施しています。

- **実行タイミング**: プルリクエスト作成時
- **動作**: 脆弱性が検出された場合はPRチェックが失敗します
- **設定ファイル**: [.github/workflows/osv-scanner.yml](.github/workflows/osv-scanner.yml)

## メンテナンス

このリポジトリは[Dependabot](https://github.com/dependabot)により自動的に更新されます。

- 各アクションディレクトリが`.github/dependabot.yml`で管理されています
- 更新スケジュール: 毎週月曜日 (Asia/Tokyoタイムゾーン)
- パッチバージョン更新は自動マージされます ([dependabot-auto-merge](github/dependabot-auto-merge/)を使用)
66 changes: 66 additions & 0 deletions aws/credentials/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# aws/credentials

AWS認証情報を設定するComposite Actionです。

## 使用方法

```yaml
- uses: buffett-code-dev/github-actions/aws/credentials@main
with:
role_to_assume: arn:aws:iam::123456789012:role/GitHubActionsRole
aws_region: ap-northeast-1
```

## パラメータ

| 名前 | 必須 | デフォルト | 説明 |
|------|------|-----------|------|
| `role_to_assume` | ✓ | - | 引き受けるIAMロールのARN |
| `aws_region` | | `ap-northeast-1` | AWSリージョン |

## 使用例

### 基本的な使用方法

```yaml
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4

- uses: buffett-code-dev/github-actions/aws/credentials@main
with:
role_to_assume: ${{ secrets.AWS_ROLE_ARN }}

- name: AWS CLIコマンドを実行
run: aws s3 ls
```

### 複数リージョンでの使用

```yaml
jobs:
deploy:
strategy:
matrix:
region: [ap-northeast-1, us-east-1]
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: buffett-code-dev/github-actions/aws/credentials@main
with:
role_to_assume: ${{ secrets.AWS_ROLE_ARN }}
aws_region: ${{ matrix.region }}
```

## 前提条件

- GitHub ActionsでOIDC認証が設定されていること
- IAMロールにGitHubからのOIDCトークン信頼関係が設定されていること
- ワークフローに`id-token: write`権限が付与されていること
83 changes: 83 additions & 0 deletions aws/lambda_function_update/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# aws/lambda_function_update

Lambda関数のDockerイメージを更新するComposite Actionです。

## 使用方法

```yaml
- uses: buffett-code-dev/github-actions/aws/lambda_function_update@main
with:
function_name: my-lambda-function
image: 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/my-image
tag: latest
```

## パラメータ

| 名前 | 必須 | デフォルト | 説明 |
|------|------|-----------|------|
| `function_name` | ✓ | - | Lambda関数名 |
| `image` | ✓ | - | コンテナイメージのURI (タグを除く) |
| `tag` | | `main` | イメージタグ |

## 使用例

### ECRからのデプロイ

```yaml
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4

- uses: buffett-code-dev/github-actions/aws/credentials@main
with:
role_to_assume: ${{ secrets.AWS_ROLE_ARN }}

- name: ECRにログイン
run: |
aws ecr get-login-password --region ap-northeast-1 | \
docker login --username AWS --password-stdin ${{ secrets.ECR_REGISTRY }}

- uses: buffett-code-dev/github-actions/docker/build@main
with:
file: ./Dockerfile
image: ${{ secrets.ECR_REGISTRY }}/my-app
push: true

- uses: buffett-code-dev/github-actions/aws/lambda_function_update@main
with:
function_name: my-lambda
image: ${{ secrets.ECR_REGISTRY }}/my-app
```

### 特定のタグでデプロイ

```yaml
- uses: buffett-code-dev/github-actions/aws/lambda_function_update@main
with:
function_name: my-lambda
image: 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/my-image
tag: v1.2.3
```

### ブランチ名をタグとして使用

```yaml
- uses: buffett-code-dev/github-actions/aws/lambda_function_update@main
with:
function_name: my-lambda-${{ github.ref_name }}
image: ${{ secrets.ECR_REGISTRY }}/my-app
tag: ${{ github.ref_name }}
```

## 前提条件

- AWS認証が完了していること (通常は`aws/credentials`アクションを先に実行)
- Lambda関数が既に作成されていること
- Lambda関数がコンテナイメージタイプであること
- 指定したイメージとタグがECRに存在すること
148 changes: 148 additions & 0 deletions docker/build/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
# docker/build

Dockerイメージをビルドし、オプションでレジストリにプッシュするComposite Actionです。GitHub Actionsキャッシュを使用してビルドを高速化します。

## 使用方法

```yaml
- uses: buffett-code-dev/github-actions/docker/build@main
with:
file: ./Dockerfile
image: ghcr.io/buffett-code-dev/my-app
push: true
```

## パラメータ

| 名前 | 必須 | デフォルト | 説明 |
|------|------|-----------|------|
| `file` | ✓ | - | Dockerfileのパス |
| `image` | ✓ | - | イメージ名 (レジストリを含む) |
| `tag` | | (自動生成) | 固定タグ。指定しない場合は自動生成 |
| `context` | | `.` | ビルドコンテキストのパス |
| `push` | | `false` | イメージをレジストリにプッシュするか |

## タグの自動生成ルール

`tag`パラメータを指定しない場合、以下のルールでタグが自動生成されます:

- **ブランチプッシュ**: ブランチ名 (例: `main`, `develop`)
- **タグプッシュ**: タグ名 (例: `v1.0.0`)
- **プルリクエスト**: `pr-{番号}` (例: `pr-123`)
- **常に**: `latest`

## 使用例

### 基本的なビルド (プッシュなし)

```yaml
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: buffett-code-dev/github-actions/docker/build@main
with:
file: ./Dockerfile
image: my-app
push: false
```

### GitHub Container Registryへのプッシュ

```yaml
jobs:
build-and-push:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4

- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- uses: buffett-code-dev/github-actions/docker/build@main
with:
file: ./Dockerfile
image: ghcr.io/${{ github.repository }}
push: true
```

### Amazon ECRへのプッシュ

```yaml
jobs:
build-and-push:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4

- uses: buffett-code-dev/github-actions/aws/credentials@main
with:
role_to_assume: ${{ secrets.AWS_ROLE_ARN }}

- name: ECRにログイン
run: |
aws ecr get-login-password --region ap-northeast-1 | \
docker login --username AWS --password-stdin ${{ secrets.ECR_REGISTRY }}

- uses: buffett-code-dev/github-actions/docker/build@main
with:
file: ./Dockerfile
image: ${{ secrets.ECR_REGISTRY }}/my-app
push: true
```

### 固定タグの指定

```yaml
- uses: buffett-code-dev/github-actions/docker/build@main
with:
file: ./Dockerfile
image: ghcr.io/buffett-code-dev/my-app
tag: v1.2.3
push: true
```

### カスタムビルドコンテキスト

```yaml
- uses: buffett-code-dev/github-actions/docker/build@main
with:
file: ./docker/Dockerfile.prod
context: ./app
image: my-app
push: true
```

### マルチアーキテクチャビルド (応用)

```yaml
- uses: docker/setup-qemu-action@v3

- uses: buffett-code-dev/github-actions/docker/build@main
with:
file: ./Dockerfile
image: ghcr.io/buffett-code-dev/my-app
push: true
```

## 機能

- **GitHub Actionsキャッシュ**: ビルドレイヤーをキャッシュして再ビルドを高速化
- **自動タグ生成**: ブランチ/タグ/PR番号から適切なタグを自動生成
- **Buildxサポート**: Docker Buildxを使用した高度なビルド機能

## 前提条件

- イメージをプッシュする場合は、事前にレジストリへのログインが必要
- プッシュ先のレジストリへのアクセス権限が必要
Loading
Loading