0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[3/5] GiteaでCI/CDパイプラインを構築する テスト編

0
Last updated at Posted at 2026-05-07

はじめに

この記事はGiteaを使ったCI/CDパイプラインの構築方法を展開する連載の一つである。

連載の各記事へは以下からジャンプできる。

  1. Giteaインストール編
  2. アプリケーション構築編
  3. テスト編
  4. ビルド編
  5. デプロイ編

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には先ほどコピーした値を設定する。

docker-compose.yml
 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 typechecknpm run testを実行させるようにしてみる。

.gitea/workflows/workflow.yml
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パイプライン上でビルドを行う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?