静的サイトをCodeberg Pagesに自動でデプロイする方法

公開日: 2026年4月22日 20時35分 1216文字 7分間

Codeberg Pagesを利用して、Astroなどの静的サイトジェネレータで作ったサイトを自動デプロイする仕組みの構築方法を解説しています。ソースコード用とデプロイ先(pages)用の2つのリポジトリを作成し、Forgejo ActionsとWebhookを連携させることで、プッシュ時の自動ビルドと公開を実現します。独自ドメインの設定についても、専用ファイルを作成することで対応可能です。

Codeberg Pages

1週間ほど前にAstroで作ったウェブサイトをソースコードのプッシュ時に自動でCodeberg Pagesにデプロイする仕組みを作ったので、やり方を説明したいと思います。

最初はGithub Pagesか何かでやろうと思ってたんですが、普通にMicrosoftがあんまり好きではないので最近友人に紹介されたということもあり同じようなことができるCodebergの機能のCodeberg Pagesを使ってみることにしました。

ステップ1. ソースコード用のリポジトリを作る

Codebergでウェブサイトのソースコード用のリポジトリを作ってください。

私はSNSで見て気になっていたAstroを使いましたが、静的サイトジェネレータなら別になんでも大丈夫だと思います。Astroを使う場合は、公式サイトでサイトテーマを簡単に探せるようになっているので、そこから選ぶと良いと思います。

ステップ2. デプロイ先のリポジトリを作る

ビルドされた静的サイトをデプロイするためのリポジトリを作ります。

"pages"という名前で新規にリポジトリを作成してください。また、デフォルトブランチの名前も同様に"pages"に設定しておいてください。

この時、プライベートリポジトリにはしないでください。Codeberg pagesは公開リポジトリでのみ機能します。

作成できたら、リポジトリのページから設定→Webhookと飛んで、Forgejoのwebhookを追加して、以下のように設定してください。

  • ターゲットURLをhttps://<ユーザ名>.codeberg.page/に設定

  • ブランチフィルターをpagesに設定

設定できたらこんな感じになると思います。

これでpagesにウェブサイトをpushした際に自動でhttps://<ユーザ名>.codeberg.page/にページがデプロイされるようになります。

ステップ3. プッシュ時にデプロイするActionsを作る

ソースコード用のリポジトリにプッシュした際に、自動でpagesに静的サイトをビルドしてプッシュする仕組みを作ります。

まずはpushする際に要求されるアクセストークンを設定しておきます。

右上の自分のアイコンから設定→アプリケーションと飛んで、New access tokenを押してトークンを生成します。この時に、repositoryの読み取りと書き込みの権限を許可しておいてください。他の設定は特に必要ありません。

次に、リポジトリ側の設定に移ります。設定→機能設定と飛んで、概要にあるActionsを有効化してください。

有効にすると、設定にActionsの項目が表示されると思うので、Actions→シークレットと進みシークレットを追加から先ほど生成したアクセストークンを追加しておきます。名前はなんでもいいですが、今回はDEPLOY_TOKENに設定します。

ここまでで必要な設定は終わったので、最後に本題のActionsワークフローを追加します。

Forgejo Actionsはリポジトリの.forgejo/workflows/にyamlファイルを作成して記述します。書き方はGithub Actionsとの互換を意識して作られてるので基本的に同じです。

私は以下のように記述しています。

on: [push]
jobs:
  deploy:
    runs-on: codeberg-small-lazy

    steps:
      - name: Checkout source
        uses: actions/checkout@v4

      - name: Setup pnpm
        uses: pnpm/action-setup@v4
        with:
          version: '10.26.2'

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '24'
          cache: 'pnpm'

      - name: Install dependencies (pnpm lockfile)
        run: pnpm install --frozen-lockfile

      - name: Build
        run: pnpm build

      - name: Deploy to external Codeberg Pages repo
        run: |
          git config --global user.name "CI"
          git config --global user.email "[email protected]"

          git clone https://oauth2:${{ secrets.DEPLOY_TOKEN }}@codeberg.org/pithos/pages.git

          cp -r dist/. pages/

          cd pages
          git add .
          git commit -m "Deploy" || echo "no changes"
          git push

参考にする場合は最後のステップ以外は自分の使っているジェネレータに合わせて変更してください。

runnerを指定するruns-onの値についてですが、こちらはビルドに必要なRAMや時間で選びます。公式のドキュメントでrunnerごとのリソース制限が説明されているので、参考にして選んでください。-lazyのラベルはつけておくと負荷の低いタイミングで実行される為codebergのシステムに優しいらしいです。

https://codeberg.org/actions/meta
https://codeberg.org/actions/meta

以上で設定は終わりです。これでソースコード用のリポジトリにプッシュした際に自動的にActionsでビルド→pagesリポジトリにプッシュ→pages側のwebhookで自動的にCodeberg Pagesにデプロイという流れでウェブサイトが公開されると思います。

デフォルトのURLではhttps://<ユーザ名>.codeberg.page/でアクセスできます。

独自ドメインを設定する場合の追加設定

pagesリポジトリに.domainsファイルを作成して、設定したいドメインを記述してください。このサイトの場合は以下のようになってます。

pithos.day
www.pithos.day

DNSの設定は公式ドキュメントを参考に自分に合った物を設定してください。

参考にしたサイト