はじめに
この記事はGiteaを使ったCI/CDパイプラインの構築方法を展開する連載の一つである。
連載の各記事へは以下からジャンプできる。
- Giteaインストール編
- アプリケーション構築編
- テスト編
- ビルド編
- デプロイ編
CI/CDパイプラインでテストを実行する
この記事では以下の赤枠部である、テストコードの自動実行をやってみよう。
Act Runner登録用のトークンを作成する
GiteaではGitea Actionsという機能でCI/CDパイプラインを構築できるのだが、Giteaは直接Gitea Actionsを実行しない。Gitea Actionsの具体的な処理は上の図にある通り、Act Runnerが行う。
そのため、Gitea Actionsを使うためにまずAct Runnerを用意する必要がある。Act Runnerを用意するためにGiteaでトークンを発行する。
以下のようにGiteaの画面右上にあるSettingsを選択する。
以下のように左のメニューにあるActions-Runnersを選択し、画面右上のCreate new Runnerを押下する。
表示されるRegistration Tokenをコピーする。
Docker ComposeでAct Runnerを構築する
以下のコマンドを実行し、Docker Composeを一旦終了する。
$ docker compose down
以下のようにdocker-compose.ymlを編集し、Act Runnerを追加する。
GITEA_RUNNER_REGISTRATION_TOKENには先ほどコピーした値を設定する。
services:
gitea:
image: docker.gitea.com/gitea:latest
restart: always
volumes:
- ./gitea/data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
healthcheck:
# 今後GiteaのAct Runnerを使うときのためにヘルスチェックを用意しておく
test: ["CMD", "curl", "-f", "http://localhost:3000"]
interval: 10s
retries: 3
start_period: 30s
timeout: 10s
environment:
# localhostにするとAct RunnerのコンテナがGiteaのPackagesにPushできない
# Act Runnerの接続先用URLとしてGiteaのserviceを指定することで外から名前解決できるようにする
- GITEA__server__LOCAL_ROOT_URL=http://gitea:3000/
networks:
- gitea-network
+ act-runner:
+ image: gitea/act_runner:latest
+ restart: always
+ depends_on:
+ # Giteaが起動するまで待つ
+ gitea:
+ condition: service_healthy
+ restart: true
+ volumes:
+ - ./act_runner/data:/data
+ - /var/run/docker.sock:/var/run/docker.sock # Act Runnerの立ち上げるコンテナをホストのDockerデーモンに紐づける
+ configs:
+ - source: runner_config
+ target: /config.yaml
+ environment:
+ - CONFIG_FILE=/config.yaml
+ - GITEA_INSTANCE_URL=http://gitea:3000
+ - GITEA_RUNNER_REGISTRATION_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ networks:
+ - gitea-network # Act RunnerがGiteaのリポジトリにアクセスできるようにGiteaと同一ネットワークにする
networks:
gitea-network:
name: gitea-network
+configs:
+ # Act Runnerがジョブ実行用に起動するコンテナが
+ # GiteaのリポジトリにアクセスできるようにGiteaと同一のネットワークに設定する
+ runner_config:
+ content: |
+ container:
+ network: "gitea-network"
以下のコマンドを実行し、Docker Composeを起動する。
$ docker compose up -d
最後に表示された画面へ戻ったとき、以下のようにRunnerが登録されており、StatusがIdleになっていることを確認する。
リポジトリにCI/CDパイプラインの定義を追加する
GiteaではCI/CDパイプラインをWorkflowという概念で定義する。
プロジェクトに.gitea/workflows/workflow.ymlを追加する。
.
+├── .gitea
+│ └── workflows
+│ └── workflow.yml
├── .gitignore
├── README.md
├── package-lock.json
├── package.json
├── src
│ ├── app.test.ts
│ ├── app.ts
│ ├── index.ts
│ ├── sum.test.ts
│ └── sum.ts
├── tsconfig.json
└── vitest.config.ts
リポジトリのmainブランチにプッシュしたとき、Act Runnerにnpm run typecheckとnpm run testを実行させるようにしてみる。
name: Workflow
on:
push:
branches:
- main # mainブランチに対して実行する
env:
NODE_VERSION: "24.14.1" # 使用するNode.jsのバージョンを定義する
jobs:
typecheck:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: npm ci
- name: Run typecheck
run: npm run typecheck
test:
needs: typecheck # typecheckが通ったら実行する
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Install dependencies
run: npm ci
- name: Run test
run: npm run test
typecheckのジョブでは以下のことを行っている。
- リポジトリをチェックアウトする
- Node.js環境を用意する
- リポジトリの依存関係をインストールする
-
npm run typecheckを実行する
testのジョブでは以下のことを行っている。
- リポジトリをチェックアウトする
- Node.js環境を用意する
- リポジトリの依存関係をインストールする
-
npm run testを実行する
終わったらコミットしプッシュする。
$ git add .gitea/workflows/workflow.yml
$ git commit -m "typecheckとtestのジョブを定義した"
$ git push
CI/CDパイプラインの動作を確認する
Giteaの画面に戻る。以下のようにGiteaのリポジトリのページの上にActionsというタブがあるので、これを選択する。
以下のようにコミットに対応してCI/CDパイプラインが動作していることがわかる。コミットメッセージのリンクを選択する。
以下のようにCI/CDパイプラインのコンソールログが表示される。うまくいけば全部が✅️で埋まる。
逆に失敗したときは❌️となるので、コンソールログを確認し、修正を行う必要がある。
振り返り
- Docker Composeを使ってAct Runnerを構築することができた
- Gitea ActionsでCI/CDパイプラインを動かすことができた
次回
次回はCI/CDパイプライン上でビルドを行う。






