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?

More than 1 year has passed since last update.

Bitriseの機能を使ってSwiftLintを導入

Last updated at Posted at 2023-11-13

概要

BitriseでiOSアプリのCI/CD環境を構築すると簡単にSwiftLintのチェックを導入する事ができます。Bitriseの機能を使用しておりFastlaneやDangerを使用してません。

前提

本記事は以下の前提で作ってます。

  • Bitriseでアプリのビルドを完了している事。
  • SwiftLintをSwiftPMで導入している事。
    • BuildToolsディレクトリにPackage.swiftを置いている事。
    • .swiftlint.ymlがプロジェクトルートにある事。

Bitriseのステップ構成

全体のステップに関しては以下になります。

1. Activate SSH key (RSA private key) ステップ

  • 役割
    • Bitrise->GitリポジトリのSSH接続が有効にする。
  • 必要な設定
    • 特に設定する必要はありません。

2. Git Clone Repository ステップ

  • 役割
    • Gitリポジトリからソースコードを取得する。
  • 必要な設定
    • 特に設定する必要はありません。

3. Script ステップ

4. SwiftLint ステップ

  • 役割
    • swiftlintバイナリを実行する。(swiftlint lint --config .swiftlint.yml)
    • BitriseのArtifactsにレポートファイルを作成する。
  • 必要な設定
    • 2023/11現在では0.X.X1.X.Xの2つ存在しますが、1.X.Xの方を選択します。
    • [Select the path where Swiftlint should lint]
      • $BITRISE_SOURCE_DIR/BuildTools/.build/release/を設定する。
    • [Linting configuration file]
      • $BITRISE_SOURCE_DIR/.swiftlint.ymlを設定する。
    • [Select the reporter type]
      • htmlを設定する。

5. Deploy to Bitrise.io - Build Artifacts, Test Reports, and Pipeline intermediate files ステップ

  • 役割
    • レポートファイルをBitriseのArtifactsにデプロイする。
  • 必要な設定
    • 特に設定する必要はありません。

6. Script ステップ

7. Send Microsoft Teams message ステップ

  • 役割
    • MS Teamsに結果を通知する。
  • 必要な設定
    • [Microsoft Teams Webhook URL]
      • TeamsのWebhook URLを設定する。
    • [A list of buttons attached to the message as link buttons]
      • Install Page|${BITRISE_PUBLIC_INSTALL_PAGE_URL}を追加する。

SwiftLintのソースコード取得とビルド

#!/usr/bin/env bash

xcrun --sdk macosx swift build -c release --package-path $BITRISE_SOURCE_DIR/BuildTools --product swiftlint

レポートファイルのダウンロードURL取得

#!/usr/bin/env bash
# Fetch report file name
REPORT_FILE_NAME=`basename $SWIFTLINT_REPORT_PATH`

# Fetch report url
SWIFTLINT_REPORT_URL=$(echo $BITRISE_PERMANENT_DOWNLOAD_URL_MAP | tr "|" "\n" | grep -F $REPORT_FILE_NAME | sed 's/.*=>\(.*\)/\1/')

# Add environment value
envman add --key SWIFTLINT_REPORT_URL --value "$SWIFTLINT_REPORT_URL"

BITRISE_PERMANENT_DOWNLOAD_URL_MAPファイル名=>URL|ファイル名=>URLの形式でSwiftLintのレポートファイルのURLが格納されるため、そこからhtmlファイルのファイル名をgrepしてURLを取得します。

所感

Bitriseの機能を使用する事で簡単にSwiftLintのチェックをCI/CD環境に取り込める事ができました。GitLab環境でdanger-gitlabがうまく動作しなかったので、私の場合はこの方法がフィットしました。
MS Teams通知のステップはSend a Slack messageステップやComment on GitHub Pull Requestステップに置き換えることでSlack通知やGithubのPRへコメントする事もできそうです。
また、この方法だとダウンロードリンクのURLが取得されるのですが、Bitrise APIを使用する事で直接レポートファイルのURLを取得できそうです。

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?