본문으로 건너뛰기
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).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구GitHubDocker
설치 방법 보기

포함된 파일(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.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

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/RIPDPI812026년 10월 20일 업데이트

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/RIPDPI812026년 10월 20일 업데이트

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/RIPDPI812026년 10월 20일 업데이트

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/RIPDPI812026년 10월 20일 업데이트

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/RIPDPI812026년 10월 20일 업데이트

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/RIPDPI812026년 10월 20일 업데이트

po4yka의 스킬 모두 보기

이 스킬의 문제 신고