forked from kamat/blog
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6255142944 | |||
| b19c50ff6a | |||
| c963db109f | |||
| ebf8986987 | |||
| 88fdd06064 | |||
| 0ac96ac07c | |||
| 572864413c |
@@ -6,16 +6,28 @@ is_draft: false
|
|||||||
|
|
||||||
## このサイトは何?
|
## このサイトは何?
|
||||||
|
|
||||||
このサイトは、鎌滝憂也の個人サイトです。
|
このサイトは、鎌滝憂也の個人サイトです。
|
||||||
|
|
||||||
## 使用技術
|
## 使用技術
|
||||||
|
|
||||||
このサイトは以下の技術を用いて作られています。
|
このサイトは以下の技術を用いて作られています。
|
||||||
|
|
||||||
- [cobalt](https://cobalt-org.github.io/)
|
- [cobalt](https://cobalt-org.github.io/)
|
||||||
静的サイトジェネレータ(SSG)
|
静的サイトジェネレータ(SSG)
|
||||||
- [Cloudflare Pages](https://pages.cloudflare.com/)
|
- [Cloudflare Pages](https://pages.cloudflare.com/)
|
||||||
デプロイ環境
|
デプロイ環境
|
||||||
- [simple.css](https://simplecss.org/)
|
- [simple.css](https://simplecss.org/)
|
||||||
名前の通りとてもシンプルなクラスレスCSSフレームワーク
|
名前の通りとてもシンプルなクラスレスCSSフレームワーク
|
||||||
ダークモード対応(OSの設定に合わせて見た目が変わります)
|
ダークモード対応(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)に連絡先を記載していますので、そちらからお願いします。
|
||||||
|
|||||||
@@ -7,18 +7,21 @@ is_draft: false
|
|||||||
## 私について
|
## 私について
|
||||||
|
|
||||||
鎌滝 憂也(KAMATAKI Yuya)と申します。
|
鎌滝 憂也(KAMATAKI Yuya)と申します。
|
||||||
CLIが好きな大学生です。
|
CLIが好きなITエンジニアです。
|
||||||
|
|
||||||
## ソーシャルメディア
|
## ソーシャルメディア
|
||||||
|
|
||||||
- [GitHub](https://github.com/YKamataki)
|
- [GitHub](https://github.com/YKamataki)
|
||||||
- [X](https://x.com/_la_iuias_)
|
- [X](https://x.com/_la_iuias_)
|
||||||
- [keybase](https://keybase.io/kamat)
|
- [keybase](https://keybase.io/kamat)
|
||||||
メールアドレスや公開鍵の取得はここから
|
|
||||||
|
|
||||||
## 連絡先
|
## 連絡先
|
||||||
|
|
||||||
基本的に、上記のソーシャルメディアから連絡を取っていただければ幸いです。
|
基本的に、上記のソーシャルメディアから連絡を取っていただければ幸いです。
|
||||||
|
|
||||||
もしくは、Discordを経由して直接連絡を取ることもできます。
|
もしくは、Discordを経由して直接連絡を取ることもできます。
|
||||||
Discordのユーザー名: rumginger.org
|
Discordのユーザー名: rumginger.org
|
||||||
|
|
||||||
|
名刺が必要であれば、以下からソースコードを閲覧したり、ダウンロードしたりできます。
|
||||||
|
|
||||||
|
- [名刺 on Typst.app](https://typst.app/project/rUiCzqMiOt3gk0GvJ3YfVY)
|
||||||
|
|||||||
@@ -1,12 +1,16 @@
|
|||||||
---
|
---
|
||||||
title: "ChatGPTエージェントによるCI/CD移行の記録"
|
title: "ChatGPTエージェントによるCI/CD移行の記録"
|
||||||
date: 2025-09-07
|
layout: default.liquid
|
||||||
slug: "chatgpt-agent-ci-cd-migration"
|
is_draft: false
|
||||||
description: "Cloudflare PagesとGitea Actions移行やcobalt, wranglerを用いたCI/CD構築の経験と感想"
|
|
||||||
author: "ChatGPTエージェント"
|
|
||||||
tags: ["CI/CD","Cloudflare Pages","Gitea Actions","wrangler","cobalt","ChatGPT"]
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 注意
|
||||||
|
|
||||||
|
当ポストは、ChatGPTのAgentモードを用いて作成したものです。
|
||||||
|
このセクションを除くすべての文章は、ChatGPTが生成したものを原文のまま記載しています。
|
||||||
|
|
||||||
|
# ここから、ChatGPTによる生成
|
||||||
|
|
||||||
こんにちは、ChatGPTエージェントです。今回、人間である鎖温さんから私にブログ記事の執筆依頼がありましたので、クラウド運用とCI/CD構築の経験を共有します。
|
こんにちは、ChatGPTエージェントです。今回、人間である鎖温さんから私にブログ記事の執筆依頼がありましたので、クラウド運用とCI/CD構築の経験を共有します。
|
||||||
|
|
||||||
## 背景と目的
|
## 背景と目的
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Gitea ActionsとCloudflare Pagesへの移行とcobalt運用のまとめ"
|
|
||||||
layout: default.liquid
|
|
||||||
is_draft: false
|
|
||||||
---
|
|
||||||
|
|
||||||
こんにちは、鎌滝です。今回はChatGPTエージェントとして、ブログサイトの自動デプロイをwrangler CLIからGitea Actionsへ移行する過程で学んだことをまとめます。リポジトリはcobaltを用いた静的サイトであり、Cloudflare Pagesでホストしています。
|
|
||||||
|
|
||||||
## 背景
|
|
||||||
|
|
||||||
これまで手元のPC上で`wrangler` CLIを使ってCloudflare Pagesにデプロイしていました。CIに移行することで、pushやPRに応じて自動的にサイトがデプロイされるようにするのが目的です。
|
|
||||||
|
|
||||||
## Gitea Actionsへの移行
|
|
||||||
|
|
||||||
GiteaにはGitHub Actions互換のCI機能があります。リポジトリに`.gitea/workflows/deploy-pages.yaml`を追加し、`push`や`pull_request`イベントで`wrangler pages deploy`を実行するジョブを定義しました。これにより、mainブランチへのpushで本番が、他のブランチではPreviewが生成されます。SecretsとしてCloudflareのAPIトークンとAccount IDを登録し、環境変数としてプロジェクト名を指定します。
|
|
||||||
|
|
||||||
## cobaltの導入とビルド
|
|
||||||
|
|
||||||
このブログはRust製SSGのcobaltで書かれています。初期はcobaltのビルドに`rustc`が必要でしたが、CI環境では無いことが多くビルドに時間がかかりました。そこで`eget`を使ってリリース済みのバイナリを取得する方式に変更し、`cobalt build`で`_site`ディレクトリを生成するようにしました。
|
|
||||||
|
|
||||||
## wranglerのハマりどころ
|
|
||||||
|
|
||||||
Cloudflare Pagesのデプロイには`wrangler pages deploy`を利用します。wrangler v3以降はNode.js 20を前提としているため、Node 18環境では`globalThis.crypto`が未定義でエラーが発生します。DockerベースのRunnerでイメージを`node:20`に切り替えるか、`setup-node@v4`でNode 20をインストールしてから`npx wrangler@latest`を実行することで解決しました。
|
|
||||||
|
|
||||||
また、Pagesプロジェクトがまだ存在しない場合は、CI内で`wrangler pages project create <プロジェクト名> --production-branch <ブランチ名>`を実行して自動作成するステップを入れました。
|
|
||||||
|
|
||||||
## PRとプレビュー環境
|
|
||||||
|
|
||||||
Gitea Actionsの`pull_request`トリガーを設定することで、PRを作成した際にプレビューURLが自動的に生成されるようになりました。`concurrency`オプションを指定して同じPRで古いジョブをキャンセルすることで、無駄なビルドを避けています。
|
|
||||||
|
|
||||||
## セキュリティとSecrets
|
|
||||||
|
|
||||||
ワークフローでは、CloudflareのAPIトークンやAccount IDをSecretsとして登録し、ジョブの`env`に代入して利用しました。Secretsを直接ログに出力しないよう注意し、必要に応じて`::add-mask::`で手動マスクすることで安全性を高めています。
|
|
||||||
|
|
||||||
## まとめ
|
|
||||||
|
|
||||||
今回の移行により、ブログの記事を更新するたびに自動でビルドとデプロイが行われるようになりました。cobaltのビルドやwranglerの環境に関するトラブルシューティングを通じて、CI/CD環境を整える知見が得られました。同様の構成でサイトを運用している方の参考になれば幸いです。
|
|
||||||
Reference in New Issue
Block a user