Agent-almanac setup-github-actions-ci
install
source · Clone the upstream repo
git clone https://github.com/pjt222/agent-almanac
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/pjt222/agent-almanac "$T" && mkdir -p ~/.claude/skills && cp -r "$T/i18n/ja/skills/setup-github-actions-ci" ~/.claude/skills/pjt222-agent-almanac-setup-github-actions-ci-5e6b36 && rm -rf "$T"
manifest:
i18n/ja/skills/setup-github-actions-ci/SKILL.mdsource content
RパッケージのGitHub Actions CI設定
GitHub Actionsを介した自動R CMD check、テストカバレッジ、ドキュメントデプロイを設定する。
使用タイミング
- GitHubのRパッケージにCI/CDを設定する時
- 既存パッケージにマルチプラットフォームテストを追加する時
- pkgdownサイトの自動デプロイを設定する時
- コードカバレッジレポートを追加する時
入力
- 必須: 有効なDESCRIPTIONとテストを持つRパッケージ
- 必須: GitHubリポジトリ(パブリックまたはプライベート)
- 任意: pkgdownデプロイを含めるかどうか(デフォルト:いいえ)
- 任意: カバレッジレポートを含めるかどうか(デフォルト:いいえ)
手順
ステップ1: R CMD Checkワークフローの作成
.github/workflows/R-CMD-check.yamlを作成する:
on: push: branches: [main, master] pull_request: branches: [main, master] name: R-CMD-check permissions: read-all jobs: R-CMD-check: runs-on: ${{ matrix.config.os }} name: ${{ matrix.config.os }} (${{ matrix.config.r }}) strategy: fail-fast: false matrix: config: - {os: macos-latest, r: 'release'} - {os: windows-latest, r: 'release'} - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} - {os: ubuntu-latest, r: 'release'} - {os: ubuntu-latest, r: 'oldrel-1'} env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} R_KEEP_PKG_SOURCE: yes steps: - uses: actions/checkout@v4 - uses: r-lib/actions/setup-pandoc@v2 - uses: r-lib/actions/setup-r@v2 with: r-version: ${{ matrix.config.r }} http-user-agent: ${{ matrix.config.http-user-agent }} use-public-rspm: true - uses: r-lib/actions/setup-r-dependencies@v2 with: extra-packages: any::rcmdcheck needs: check - uses: r-lib/actions/check-r-package@v2 with: upload-snapshots: true build_args: 'c("--no-manual", "--compact-vignettes=gs+qpdf")'
期待結果: ワークフローファイル
.github/workflows/R-CMD-check.yamlが、release、devel、oldrelをカバーするマルチプラットフォームマトリクス(macOS、Windows、Ubuntu)で作成される。
失敗時:
.github/workflows/ディレクトリが存在しない場合はmkdir -p .github/workflowsで作成する。YAML構文をYAMLリンターで確認する。
ステップ2: テストカバレッジワークフローの作成(任意)
.github/workflows/test-coverage.yamlを作成する:
on: push: branches: [main, master] pull_request: branches: [main, master] name: test-coverage permissions: read-all jobs: test-coverage: runs-on: ubuntu-latest env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v4 - uses: r-lib/actions/setup-r@v2 with: use-public-rspm: true - uses: r-lib/actions/setup-r-dependencies@v2 with: extra-packages: any::covr, any::xml2 needs: coverage - name: Test coverage run: | cov <- covr::package_coverage( quiet = FALSE, clean = FALSE, install_path = file.path(normalizePath(Sys.getenv("RUNNER_TEMP"), winslash = "/"), "package") ) covr::to_cobertura(cov) shell: Rscript {0} - uses: codecov/codecov-action@v4 with: fail_ci_if_error: ${{ github.event_name != 'pull_request' && true || false }} file: ./cobertura.xml plugin: noop token: ${{ secrets.CODECOV_TOKEN }}
期待結果: ワークフローファイル
.github/workflows/test-coverage.yamlが作成される。カバレッジレポートが各プッシュとPRでCodecovにアップロードされる。
失敗時: Codecovのアップロードが失敗する場合、リポジトリ設定で
CODECOV_TOKENシークレットが設定されているか確認する。パブリックリポジトリの場合、トークンは任意の場合がある。
ステップ3: pkgdownデプロイワークフローの作成(任意)
.github/workflows/pkgdown.yamlを作成する:
on: push: branches: [main, master] release: types: [published] workflow_dispatch: name: pkgdown permissions: contents: write pages: write jobs: pkgdown: runs-on: ubuntu-latest env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v4 - uses: r-lib/actions/setup-pandoc@v2 - uses: r-lib/actions/setup-r@v2 with: use-public-rspm: true - uses: r-lib/actions/setup-r-dependencies@v2 with: extra-packages: any::pkgdown, local::. needs: website - name: Build site run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE) shell: Rscript {0} - name: Deploy to GitHub pages if: github.event_name != 'pull_request' uses: JamesIves/github-pages-deploy-action@v4 with: clean: false branch: gh-pages folder: docs
期待結果: ワークフローファイル
.github/workflows/pkgdown.yamlが作成される。mainへのプッシュまたはリリース時にサイトがビルドされてgh-pagesブランチにデプロイされる。
失敗時: デプロイが失敗する場合、リポジトリに
contents: write権限が有効になっているか確認する。_pkgdown.ymlにdevelopment: mode: releaseが設定されているか確認する。
ステップ4: READMEへのステータスバッジの追加
README.mdに追加する:
[](https://github.com/USERNAME/REPO/actions/workflows/R-CMD-check.yaml)
期待結果: READMEに各ワークフロー実行後に自動更新されるライブCIステータスバッジが表示される。
失敗時: バッジが「ステータスなし」を表示する場合、バッジURLのワークフローファイル名が実際のファイルと一致しているか確認する。最初のワークフロー実行をトリガーするためにコミットをプッシュする。
ステップ5: GitHubリポジトリ設定の構成
- pkgdownを使用する場合はGitHub Pagesを有効化する(設定 > Pages)で
ブランチを指定gh-pages - カバレッジレポートを使用する場合は
シークレットを追加するCODECOV_TOKEN
に適切な権限があることを確認するGITHUB_TOKEN
期待結果: pkgdownデプロイ用にGitHub Pagesが設定される。必要なシークレットが設定される。トークンの権限がワークフローに対して十分である。
失敗時: Pagesデプロイが失敗する場合、設定 > Pagesでソースが
gh-pagesブランチに設定されているか確認する。シークレットが欠如している場合は設定 > シークレットと変数 > Actionsで追加する。
ステップ6: プッシュと確認
git add .github/ git commit -m "Add GitHub Actions CI workflows" git push
GitHubのActionsタブでワークフローが正常に実行されることを確認する。
期待結果: GitHubのActionsタブですべてのジョブに緑のチェックマークが表示される。ワークフローがプッシュとPRイベントの両方でトリガーされる。
失敗時: Actionsタブのワークフローログを確認する。一般的な問題:システム依存関係の欠如(
extra-packagesに追加)、ビネットのビルド失敗(pandocセットアップステップが存在するか確認)、YAMLの構文エラー。
バリデーション
- R CMD checkがすべてのマトリクスプラットフォームでパスする
- カバレッジレポートが生成される(設定した場合)
- pkgdownサイトがデプロイされる(設定した場合)
- READMEにステータスバッジが表示される
- ワークフローがプッシュとPRの両方でトリガーされる
よくある落とし穴
の欠如: GitHub Actionsは明示的な権限を要求するようになった。最低限permissions
を追加するpermissions: read-all- システム依存関係: 一部のRパッケージはシステムライブラリを必要とする。ほとんどのケースを処理する
を使用するr-lib/actions/setup-r-dependencies - pandocなしのビネット: 常に
を含めるr-lib/actions/setup-pandoc@v2 - pkgdownの開発モード: GitHub Pages用に
の_pkgdown.yml
を確認するdevelopment: mode: release - キャッシュの問題:
がキャッシュを自動的に処理するr-lib/actions/setup-r-dependencies
関連スキル
- CIワークフローを含む初期パッケージセットアップcreate-r-package
- 詳細なpkgdown設定build-pkgdown-site
- CIチェックはCRANの期待値を反映すべきsubmit-to-cran
- リリース時にデプロイをトリガーするrelease-package-version