本文へ移動
cccskills
無料GitHub で公開

local-ci-act

Run GitHub Actions workflows locally with act on macOS. Use when validating workflow wiring or a job before pushing. Not for authoring the workflow itself (ci-workflow-authoring).

インストール方法を見る

含まれるファイル(1)

  • SKILL.md4.8 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Local CI with act

Overview

Use act for local workflow parsing and a narrow subset of practical CI-parity jobs. Do not assume every GitHub-hosted Ubuntu lane is worth reproducing inside Docker on macOS.

Prerequisites

  • act: brew install act
  • Docker Desktop: running with at least 8 GB memory
  • Apple Silicon: .actrc already forces linux/amd64

Wrapper Coverage

scripts/ci/act-local.sh --list is the source of truth for currently wrapped, native-fallback, and intentionally skipped lanes. Do not copy that changing matrix into this skill.

Workflow Surface Outside The Wrapper

These jobs exist in CI but are not curated by the wrapper yet:

JobPractical on macOS with actPreferred local fallback
release-verificationLikelyuse the flavor-qualified release tasks from the current workflow
cli-packet-smokeMaybebash scripts/ci/run-cli-packet-smoke.sh
rust-turmoilLikelybash scripts/ci/run-rust-turmoil-tests.sh
kotlin-coverageHeavy./gradlew coverageReport
rust-coverageHeavythe CI-scoped bash scripts/ci/run-rust-coverage.sh
rust-criterion-benchLikelycd native/rust && cargo bench --locked --package ripdpi-bench
android-macrobenchmarkNoNeeds emulator/KVM; use GitHub CI or a native Linux host
android-instrumented-testsNoGMD instrumented-test matrix; needs emulator/KVM -- use GitHub CI
rust-loomLikelycd native/rust && cargo test --locked --features loom -- loom
rust-native-loadMaybebash scripts/ci/run-rust-native-load.sh
nightly-rust-coverageHeavyUse the repo coverage scripts directly
android-network-e2eNoRun on a local emulator outside Docker
linux-tun-e2eNoUse CI or a Linux VM
linux-tun-soakNoUse CI or a Linux VM

codeql.yml, release.yml, and mutation-testing.yml are separate workflows. Use act -W <workflow> manually only when you specifically need local workflow parsing or action wiring validation.

Quick Start

# Show the wrapper's supported jobs
scripts/ci/act-local.sh --list

# Run one wrapped job
scripts/ci/act-local.sh build
scripts/ci/act-local.sh rust-network-e2e

# Run all wrapped jobs
scripts/ci/act-local.sh --all

# Manual dry run for a workflow/job outside the wrapper
act -n -j release-verification -W .github/workflows/ci.yml

Docker Image Configuration

The repo uses catthehacker/ubuntu:full-latest in .actrc.

Why:

  • includes JDK
  • includes Android SDK command-line tools
  • is a better fit for Gradle plus Android builds than the minimal act image

Rust toolchains, NDK packages, and most cargo tools are still installed by workflow steps.

Third-party action handling

Run the exact action SHAs and versions committed in the current workflow. Do not maintain a tag-based compatibility table here. Artifact upload is normally a local no-op, emulator actions still require host virtualization, and CodeQL actions have limited value in daily local runs.

Troubleshooting

SymptomCauseFix
GITHUB_OUTPUT: No such file or directoryOld act versionbrew upgrade act
sdkmanager: command not foundWrong imageEnsure .actrc still points to full-latest
Gradle OOM / build killedDocker memory too lowRaise Docker Desktop memory to 8 GB or more
Container architecture mismatchApple Silicon without the repo .actrc settingsKeep the existing linux/amd64 override
Dispatch jobs skippedWrong event payloadUse .github/act/event-dispatch.json
upload-artifact warningsExpectedIgnore locally
Rust target not foundWorkflow has not installed targets yetWait for the toolchain steps or preinstall locally
NDK download is slowFirst-run costSubsequent runs are faster with cached layers

Event Payloads

The repo stores three payload stubs in .github/act/:

FileSimulatesUsed by
event-push.jsonpush to mainwrapped push-style jobs
event-pr.jsonPR synchronizemanual PR-shape experiments
event-dispatch.jsonmanual dispatchrust-native-soak and other workflow-dispatch experiments

The wrapper script selects the matching payload automatically for the jobs it knows about.

Gotchas

  • Concurrency groups are ignored locally.
  • RUNNER_TEMP is set by the wrapper to /tmp/runner-temp.
  • Artifact actions are no-ops; outputs stay in the container filesystem.
  • Secrets are absent, so signing and release jobs are poor candidates for local act parity.
  • First run is slow because Docker images and actions must be pulled.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

RIPDPI's own Compose conventions: ViewModel pattern, Route/Screen split, DataStore->StateFlow, RipDpiThemeTokens. Use for how this app does Compose, not generic Compose API questions (see compose).

日本語の概要は準備中です。原文の説明を表示しています。

po4yka/RIPDPI792026年10月13日 更新

ADB-based RIPDPI device/emulator debugging: build/install/launch, logcat filtering, fixture port-forwarding, instrumented tests, crash/ANR triage. Use when debugging on a real device or emulator.

日本語の概要は準備中です。原文の説明を表示しています。

po4yka/RIPDPI792026年10月13日 更新

RIPDPI Appium launch-contract reference: start routes and permission/service/data presets. Use when a test launches to the wrong screen or a new automation route is added. General flakiness: appium-test-debug.

日本語の概要は準備中です。原文の説明を表示しています。

po4yka/RIPDPI792026年10月13日 更新

RIPDPI Appium test authoring: page objects, resource-id locators, assertions, wait tiers. Use when writing a new Appium test or page object, or adding coverage for a new screen.

日本語の概要は準備中です。原文の説明を表示しています。

po4yka/RIPDPI792026年10月13日 更新

RIPDPI Appium failure triage: flaky tests, locator/session/wait issues, screenshot and element-tree debugging. Use when an Appium test fails or is flaky.

日本語の概要は準備中です。原文の説明を表示しています。

po4yka/RIPDPI792026年10月13日 更新

Add or modify a GitHub Actions job. Use when editing a file under .github/workflows/. Not for running a workflow locally (local-ci-act) or release signing (release-signing).

日本語の概要は準備中です。原文の説明を表示しています。

po4yka/RIPDPI792026年10月13日 更新

po4yka のスキルをすべて見る

このスキルの問題を報告する