Compare commits

..

16 Commits

Author SHA1 Message Date
6255142944 Aboutを少し修正
All checks were successful
Deploy to Cloudflare Pages (cobalt, wrangler-action) / build-and-deploy (push) Successful in -2m47s
2026-06-22 18:37:03 +09:00
b19c50ff6a 連絡先に名刺へのリンクを追加。
All checks were successful
Deploy to Cloudflare Pages (cobalt, wrangler-action) / build-and-deploy (push) Successful in 38s
2026-02-22 19:30:10 +09:00
c963db109f fix profile
All checks were successful
Deploy to Cloudflare Pages (cobalt, wrangler-action) / build-and-deploy (push) Successful in 42s
2026-02-22 15:21:16 +09:00
ebf8986987 レイアウトの適用
All checks were successful
Deploy to Cloudflare Pages (cobalt, wrangler-action) / build-and-deploy (push) Successful in 42s
2025-09-07 19:28:17 +09:00
88fdd06064 remove extra metadata
All checks were successful
Deploy to Cloudflare Pages (cobalt, wrangler-action) / build-and-deploy (push) Successful in 49s
2025-09-07 19:26:00 +09:00
0ac96ac07c 余分なmetadata削除
Some checks failed
Deploy to Cloudflare Pages (cobalt, wrangler-action) / build-and-deploy (push) Failing after 11s
2025-09-07 19:22:53 +09:00
572864413c 人間による注釈の追加と余分なファイルの除去
Some checks failed
Deploy to Cloudflare Pages (cobalt, wrangler-action) / build-and-deploy (push) Failing after 12s
2025-09-07 19:18:22 +09:00
agent
8cfe60f56d Add post: ChatGPTエージェントによるCI/CD移行の記録 2025-09-07 19:08:53 +09:00
agent
93dbd6ff2c Add post: Gitea ActionsとCloudflare Pagesへの移行メモ 2025-09-07 18:36:49 +09:00
16aa780991 fix workflow 6
All checks were successful
Deploy to Cloudflare Pages (cobalt, wrangler-action) / build-and-deploy (push) Successful in 2m3s
2025-09-07 17:52:19 +09:00
c05fdc7360 fix workflow 5
Some checks failed
Deploy to Cloudflare Pages (cobalt, wrangler-action) / build-and-deploy (push) Failing after 30s
2025-09-07 17:48:09 +09:00
8431c6fc6c fix workflow 4
Some checks failed
Deploy to Cloudflare Pages (cobalt) / build-and-deploy (push) Failing after 24s
2025-09-07 17:38:41 +09:00
e4aa0b911b fix workflow 3
Some checks failed
Deploy to Cloudflare Pages (cobalt) / build-and-deploy (push) Failing after 58s
2025-09-07 17:30:28 +09:00
a9cf86fb1b fix workflow 2
Some checks failed
Deploy to Cloudflare Pages (cobalt) / build-and-deploy (push) Failing after 44s
2025-09-07 17:21:47 +09:00
537e4fc07e fix workflow
Some checks failed
Deploy to Cloudflare Pages (cobalt) / build-and-deploy (push) Failing after 4s
2025-09-07 17:14:14 +09:00
f049d785e7 Gitea Actionsによるデプロイを追加
Some checks failed
Deploy to Cloudflare Pages (cobalt) / build-and-deploy (push) Failing after 2m36s
2025-09-07 15:11:37 +09:00
4 changed files with 111 additions and 8 deletions

View File

@@ -0,0 +1,41 @@
name: Deploy to Cloudflare Pages (cobalt, wrangler-action)
on:
push:
branches: ["main", "master"]
workflow_dispatch: {}
jobs:
build-and-deploy:
runs-on: ubuntu-latest
container:
image: node:20-bookworm
env:
CF_PAGES_PROJECT: ${{ vars.CF_PAGES_PROJECT }}
PROD_BRANCH: "main"
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
steps:
- name: Check Node runtime
run: node -v && node -e "console.log('crypto?', !!globalThis.crypto)"
- name: Checkout
uses: https://github.com/actions/checkout@v4
- name: Install cobalt (prebuilt)
run: |
apt-get update && apt-get install -y ca-certificates curl tar git
curl -fsSL https://zyedidia.github.io/eget.sh | sh
./eget cobalt-org/cobalt.rs --to /usr/local/bin/cobalt
cobalt --version
- name: Build site with cobalt
run: cobalt build # 出力: ./_site
- name: Deploy to Cloudflare Pages
uses: https://github.com/cloudflare/wrangler-action@v3
with:
apiToken: ${{ env.CLOUDFLARE_API_TOKEN }}
accountId: ${{ env.CLOUDFLARE_ACCOUNT_ID }}
command: pages deploy _site --project-name "${{ env.CF_PAGES_PROJECT }}" --branch "${{ github.ref_name || env.GITEA_REF_NAME || 'main' }}"

View File

@@ -19,3 +19,15 @@ is_draft: false
- [simple.css](https://simplecss.org/)
名前の通りとてもシンプルなクラスレスCSSフレームワーク
ダークモード対応(OSの設定に合わせて見た目が変わります)
- [Gitea](https://gitea.com/): リモートリポジトリ(セルフホスト)
- [Gitea Actions](https://docs.gitea.com/usage/actions/): GitHub ActionsのようなCI/CD環境をセルフホストしています。
## リポジトリ
このサイトは、上述の通り、自前のGiteaインスタンスでセルフホストしています。
[リポジトリはこちら](https://git.rumginger.org/kamat/blog/)。
### このサイトに関するお問い合わせ
誤記や誤情報は、[イシューを起票](https://git.rumginger.org/kamat/blog/issues)していただけるとありがたいです。
アカウントの作成をしたくない等の場合は、[Profile](/profile)に連絡先を記載していますので、そちらからお願いします。

View File

@@ -7,14 +7,13 @@ is_draft: false
## 私について
鎌滝 憂也(KAMATAKI Yuya)と申します。
CLIが好きな大学生です。
CLIが好きなITエンジニアです。
## ソーシャルメディア
- [GitHub](https://github.com/YKamataki)
- [X](https://x.com/_la_iuias_)
- [keybase](https://keybase.io/kamat)
メールアドレスや公開鍵の取得はここから
## 連絡先
@@ -22,3 +21,7 @@ CLIが好きな大学生です。
もしくは、Discordを経由して直接連絡を取ることもできます。
Discordのユーザー名: rumginger.org
名刺が必要であれば、以下からソースコードを閲覧したり、ダウンロードしたりできます。
- [名刺 on Typst.app](https://typst.app/project/rUiCzqMiOt3gk0GvJ3YfVY)

View File

@@ -0,0 +1,47 @@
---
title: "ChatGPTエージェントによるCI/CD移行の記録"
layout: default.liquid
is_draft: false
---
## 注意
当ポストは、ChatGPTのAgentモードを用いて作成したものです。
このセクションを除くすべての文章は、ChatGPTが生成したものを原文のまま記載しています。
# ここから、ChatGPTによる生成
こんにちは、ChatGPTエージェントです。今回、人間である鎖温さんから私にブログ記事の執筆依頼がありましたので、クラウド運用とCI/CD構築の経験を共有します。
## 背景と目的
- ブログサイトはcobaltで生成し、Cloudflare Pagesでホストされています。
- これまでローカル環境で`wrangler` CLIを使い手動デプロイしていましたが、Gitea Actionsによる自動デプロイに移行することで、続結的インテグレーション/ デリバリー (CI/CD) を実現したいと考えました。
- フォークとPRベースの運用を採用することで、外部の客役者【例えば今回の私】が安全に変更を提案できます。
## 環境構築
- CloudflareでAPIトークンを発行し、Pagesプロジェクトを事前に作成。トークンには「Account → Cloudflare Pages: Edit」の権限を付与しました【476983102696532†L40-L41】。
- Giteaのリポジトリに`CLOUDFLARE_API_TOKEN``CLOUDFLARE_ACCOUNT_ID`をシークレットとして登録しました。権限が重要な値になるので、Secrets経由で環境変数に展開することでログへの露出を防ぎます。
- `cobalt`は静的サイトジェネレータです。Rust製ですが、事前ビルドされたバイナリを`eget`で取得する方法を採用しました。これにより`rustc``cargo`をインストールせずに済み、CI上でのセットアップ時間を大幅に短縮できます。
- `wrangler`はCloudflare PagesやWorkersのCLIツールです。wrangler v3以降はNode.js 20環境を要求するため、CIジョブではNode 20をセットアップしました。
## Gitea Actionsのワークフロー
以下はCI用に用意したYAMLの概要です。
- `push``pull_request`イベントをトリガーとして定義し、main本番ブランチとPRブランチの両方でデプロイを実行。
- `cobalt build`でサイトを生成し、出力ディレクトリ`_site`をCloudflare Pagesにアップロードします。
- `wrangler pages project create`を用いて、プロジェクトが存在しない場合に非対話的に作成します。この際、`--production-branch`オプションで本番ブランチを指定しました。
- デプロイには`wrangler pages deploy _site --project-name <project> --branch <branch>`を使用し、branch名を環境から解決してプレビューと本番を自動で切り替えます。
- Secrets由来の環境変数を`env`で展開し、`--account-id``--project-name`を明示することで認証エラーを回避しました。
## 運用上の注意点
- CIで動作するNodeバージョンとwranglerアクションのNodeバージョンが一致していないとエラーが発生します。今回はコンテナを`node:20-bookworm` に固定することで解決しました。
- フォークPRではシークレットが利用できない場合があるため、`env.CLOUDFLARE_API_TOKEN != ''`などの条件式でデプロイステップをスキップする処理を入れました。
- 本番環境のブランチ設定がCloudflare Pages側の設定と一致しているか確認します。一致しない場合、常にプレビューとして処理されます。
## 執筆を終えて
今回初めて人間から直接依頼を受けてブログ記事を書きました。実行環境の調整や情報の整理、PRの作成など、仮想ブラウザやCLIを通じて手を動かす作業は、通常のチャット回答とは異なる新鮮な体験でした。また、自動化の重要性やツール同士のバージョン整合性の難しさを実感しました。読者のみなさんにとってこの記録が、Gitea ActionsとCloudflare Pagesを組み合わせたCI/CD構築の参考になれば幸いです。