[3/5] GiteaでCI/CDパイプラインを構築する テスト編
はじめに
この記事はGiteaを使ったCI/CDパイプラインの構築方法を展開する連載の一つである。
連載の各記事へは以下からジャンプできる。
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を一旦終了する。
1 | |
以下のようにdocker-compose.ymlを編集し、Act Runnerを追加する。
GITEA_RUNNER_REGISTRATION_TOKENには先ほどコピーした値を設定する。
```yml title="docker-compose.yml" hl_lines="24-43,47-53" 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/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"
1 2 3 4 | |
最後に表示された画面へ戻ったとき、以下のようにRunnerが登録されており、StatusがIdleになっていることを確認する。
リポジトリにCI/CDパイプラインの定義を追加する
GiteaではCI/CDパイプラインをWorkflowという概念で定義する。
プロジェクトに.gitea/workflows/workflow.ymlを追加する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
リポジトリのmainブランチにプッシュしたとき、Act Runnerにnpm run typecheckとnpm run testを実行させるようにしてみる。
| .gitea/workflows/workflow.yml | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | |
typecheckのジョブでは以下のことを行っている。
- リポジトリをチェックアウトする
- Node.js環境を用意する
- リポジトリの依存関係をインストールする
npm run typecheckを実行する
testのジョブでは以下のことを行っている。
- リポジトリをチェックアウトする
- Node.js環境を用意する
- リポジトリの依存関係をインストールする
npm run testを実行する
終わったらコミットしプッシュする。
1 2 3 | |
CI/CDパイプラインの動作を確認する
Giteaの画面に戻る。以下のようにGiteaのリポジトリのページの上にActionsというタブがあるので、これを選択する。
以下のようにコミットに対応してCI/CDパイプラインが動作していることがわかる。コミットメッセージのリンクを選択する。
以下のようにCI/CDパイプラインのコンソールログが表示される。うまくいけば全部が✅️で埋まる。
逆に失敗したときは❌️となるので、コンソールログを確認し、修正を行う必要がある。
振り返り
- Docker Composeを使ってAct Runnerを構築することができた
- Gitea ActionsでCI/CDパイプラインを動かすことができた
次回
次回はCI/CDパイプライン上でビルドを行う。
[4/5] GiteaでCI/CDパイプラインを構築する ビルド編






