8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

swiftlang/github-workflowsのSoundness(健全性)の説明と使い方

Last updated at Posted at 2025-12-06

はじめに

本記事は GitHub Actions Advent Calendar 2025 の1日目の記事です。

先日 swiftlang/github-workflows0.0.1 がリリースされました。

GitHub Actionsのワークフローが重複するのを防ぐため、再利用できるワークフローを提供するリポジトリです。

iOSアプリ開発にも使えそうで、本記事ではSoundness(健全性)に絞って紹介します。

環境

  • swiftlang/github-workflows: 0.0.1

Soundness(健全性)

リポジトリがベストプラクティスに準拠しているか確認するためのワークフローです。
多様なチェック機能があるので、ひとつずつ紹介します。

各チェックはデフォルトですべて有効です。

全体の入力

複数のジョブで使われる入力です。

入力 説明 デフォルト
linux_pre_build_command string Swiftパッケージのビルド前に実行されるコマンド ""

API breakage check

APIの互換性を確認します。
実体は swift package diagnose-api-breaking-changes の実行です。

入力 説明 デフォルト
api_breakage_check_enabled boolean 対象ジョブを有効にするか true
api_breakage_check_allowlist_path string --breakage-allowlist-path へ渡される文字列 ""
api_breakage_check_baseline string 基準として使用されるタグ。デフォルトはPRベース ""
api_breakage_check_container_image string 使用されるコンテナイメージ。デフォルトは最新のSwift Ubuntuイメージ "swift:6.2-noble"

Documentation check

ドキュメントを確認します。
実体は swift package plugin generate-documentation の実行です。

入力 説明 デフォルト
docs_check_enabled boolean 対象ジョブを有効にするか true
docs_check_container_image string 使用されるコンテナイメージ。デフォルトは最新のSwift Ubuntuイメージ swift:6.2-noble
docs_check_additional_arguments string doccに渡す追加の引数 ""

Unacceptable language check

使用不可の単語が含まれていないか確認します。

入力 説明 デフォルト
unacceptable_language_check_enabled boolean 対象ジョブを有効にするか true
unacceptable_language_check_word_list string 使用不可ワード一覧。デフォルトは適切な単語リスト "blacklist whitelist slave master sane sanity insane insanity kill killed killing hang hung hanged hanging"

License headers check

ライセンスヘッダーを確認します。

入力 説明 デフォルト
license_header_check_enabled boolean 対象ジョブを有効にするか true
license_header_check_project_name string ライセンスヘッダーに記載されるプロジェクト名。 license_header_check_enabledfalse または .license_header_template ファイルが存在する場合を除き必須 ""

Broken symlinks check

壊れているsymlinkがないか確認します。

入力 説明 デフォルト
broken_symlink_check_enabled boolean 対象ジョブを有効にするか true

Format check

フォーマットを確認します。
実体は swift-format formatswift-format lint の実行です。

入力 説明 デフォルト
format_check_enabled boolean 対象ジョブを有効にするか true
format_check_container_image string 使用されるコンテナイメージ。デフォルトは最新のSwift Ubuntuイメージ swift:6.2-noble

Shell check

シェルを確認します。
実体は shellcheck の実行です。

入力 説明 デフォルト
shell_check_enabled boolean 対象ジョブを有効にするか true
shell_check_container_image string 使用されるコンテナイメージ。デフォルトは最新のSwift Ubuntuイメージ swift:6.2-noble

YAML lint check

YAMLファイルを確認します。
実体は yamllint の実行です。

入力 説明 デフォルト
yamllint_check_enabled boolean 対象ジョブを有効にするか true

Python lint check

Pythonファイルを確認します。
実体は flake8 の実行です。

入力 説明 デフォルト
python_lint_check_enabled boolean 対象ジョブを有効にするか true

設定ファイル例

最後に私が個人アプリで実際に使っているYAMLファイルから、Soundnessの部分を抜粋して紹介します。

ci.yml
name: CI

on:
  push:
    branches:
      - main
    paths-ignore:
      - Docs/**
      - README.md
      - LICENSE
  pull_request:
    types: [opened, reopened, synchronize]
    paths-ignore:
      - Docs/**
      - README.md
      - LICENSE
  workflow_dispatch:

permissions:
  contents: read

jobs:
  soundness:
    name: Soundness
    uses: swiftlang/github-workflows/.github/workflows/soundness.yml@0.0.1
    with:
      api_breakage_check_enabled: false
      docs_check_enabled: false
      license_header_check_enabled: false
      format_check_enabled: false

実際のファイルは以下です。
Soundness以外にビルドを実行するジョブがあります。

おわりに

swiftlang/github-workflows のSoundnessはiOSアプリ開発にも有用なことがわかりました。
まだ 0.0.1 なのでこれから破壊的変更があるかもしれませんが、ぜひ使ってみてください。

以上 GitHub Actions Advent Calendar 2025 の1日目の記事でした。
明日は @kamajiro さんで 組込み開発でもCI導入!GitHub+AVHで体験するCortex-Mのビルド・テスト自動化 です。

参考リンク

8
2
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
8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?