📘

Vapor.EnvironmentをCI(GitHub Action)でテストする方法

2024/02/17に公開

Vapor.Environment

VaporではDBなどの設定(ホスト ユーザー名 パスワード)を取ってくる際には、Vapor.Environment経由で取得可能です。

Xcodeでデバッグしている際には.envファイルを用意することで自動でこのファイルから読み取ってくれます。

DATABASE_HOST=host
DATABASE_NAME=database_name
DATABASE_USERNAME=user_name
DATABASE_PASSWORD=password

Vapor Environment Document

On CI(GitHub Action)

デバッグと同じようにCIで.envを作成するように設定すれば良いのかと思ったのですが、これではうまくいかず環境変数を設定してあげる必要があります。

該当のリポジトリ>設定>Secrets and Variants>Actions>Repository Secrets.envに設定していた値を追加します。

name: Test

on:
  pull_request:
    branches: [ "main", "develop" ]

jobs:
  build:
    name: Swift ${{ matrix.swift }} on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]
        swift: ["5.9.2"]
    steps:
    - name: Install swiftly
      run: curl -L https://swift-server.github.io/swiftly/swiftly-install.sh | bash -s -- --disable-confirmation
    - name: Install Swift
      run: swiftly install ${{ matrix.swift }}
    - uses: actions/checkout@v4
    - name: Build
      run: swift build -v
    - name: Test Swift
      run: swift test -v
      env:
        DATABASE_HOST: ${{ secrets.DATABASE_HOST }}
        DATABASE_NAME: ${{ secrets.DATABASE_NAME }}
        DATABASE_PASSWORD: ${{ secrets.DATABASE_PASSWORD }}
        DATABASE_USERNAME: ${{ secrets.DATABASE_USERNAME }}

サンプル

Vapor Swift OpenAPI Generatorを使ってサーバー開発の練習をしているので、少し参考になるかもしれません。

https://github.com/zunda-pixel/toast-server

Discussion