github-actions by dalestudy/skills
npx skills add https://github.com/dalestudy/skills --skill github-actions注意: 关于 GitHub Actions 工作流运行及结果查看、问题/PR 管理等
ghCLI 相关操作,请同时加载github技能以供参考。
# ❌ 旧版本 - 最常见的错误
uses: actions/checkout@v4 # 如果 v6 是最新版本
# ✅ 使用最新的主版本 (使用 gh release view 确认后使用)
uses: actions/checkout@v6
请确保使用最新版本,以免错过其提供的性能改进和安全补丁。
版本检查命令:
gh release view --repo {owner}/{repo} --json tagName --jq '.tagName'
# 示例
gh release view --repo actions/checkout --json tagName --jq '.tagName'
gh release view --repo oven-sh/setup-bun --json tagName --jq '.tagName'
注意:对于安全敏感环境或可信度较低的第三方操作,请考虑使用 SHA 固定(
@a1b2c3...)。
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
# ❌ 硬编码 - 安全风险
env:
API_KEY: "sk-1234567890"
DATABASE_PASSWORD: "mypassword123"
# ✅ 使用 secrets
env:
API_KEY: ${{ secrets.API_KEY }}
DATABASE_PASSWORD: ${{ secrets.DATABASE_PASSWORD }}
密码或 API 密钥等敏感信息直接暴露可能导致安全事故。安全关键信息必须存储在仓库或组织的 secrets 中,并按需读取。
注意:使用 secrets
# ❌ 注入漏洞 - 直接使用 github.event
run: echo "${{ github.event.issue.title }}"
run: gh issue comment ${{ github.event.issue.number }} --body "${{ github.event.comment.body }}"
# ✅ 通过环境变量传递以防止注入
env:
ISSUE_TITLE: ${{ github.event.issue.title }}
COMMENT_BODY: ${{ github.event.comment.body }}
run: |
echo "$ISSUE_TITLE"
gh issue comment ${{ github.event.issue.number }} --body "$COMMENT_BODY"
恶意用户可能在问题标题或评论中注入 shell 命令。
注意:脚本注入
# ⚠️ 危险 - 在受信任的上下文中运行分叉的代码
on: pull_request_target
steps:
- uses: actions/checkout@v{N}
with:
ref: ${{ github.event.pull_request.head.sha }} # 危险!
pull_request_target 事件允许从分叉的 PR 访问 secrets。如果检出分叉的代码,恶意代码可能会被执行。
# ❌ 不必要的 setup - node、npm、npx 已预装
steps:
- uses: actions/setup-node@v{N}
- run: npx some-command
# ✅ 直接使用
steps:
- run: npx some-command
- run: python script.py
- run: docker build .
冗余设置会增加工作流执行时间并产生不必要的网络请求。
主要预装工具: Node.js、npm、npx、Python、pip、Ruby、gem、Go、Docker、git、gh、curl、wget、jq、yq
主要未安装工具: Bun、Deno、Rust、Zig、pnpm、Poetry、Ruff
检查预装工具:
权限应尽可能在较低层级声明。保持范围最小:
# ✅ 权限范围:workflow > job > step (越小越好)
jobs:
build:
permissions:
contents: read # 仅在 job 层级声明所需权限
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
# 使用 gh release view 确认版本后使用
- uses: actions/checkout@v{N}
- name: Setup Bun
uses: oven-sh/setup-bun@v{N}
on:
push: # 推送时
branches: [main]
pull_request: # PR 创建/更新时
branches: [main]
workflow_dispatch: # 手动运行
schedule: # 计划运行
- cron: "0 0 * * 1" # 每周一 00:00 UTC
release: # 发布创建时
types: [published]
workflow_call: # 被其他工作流调用
permissions:
contents: read # CI (构建/测试),代码检出
contents: write # 提交/推送
pull-requests: write # PR 评论机器人
issues: write # 问题评论
packages: write # 包部署 (与 contents: write 一起使用)
id-token: write # OIDC 云认证 (与 contents: read 一起使用)
# 使用 gh release view --repo {owner}/{repo} --json tagName --jq '.tagName' 检查版本
steps:
- uses: actions/cache@v{N} # 依赖项缓存
- uses: actions/checkout@v{N} # 代码检出
- uses: actions/download-artifact@v{N} # 下载制品
- uses: actions/upload-artifact@v{N} # 上传制品
- uses: oven-sh/setup-bun@v{N} # Bun 设置
每周安装次数
261
仓库
GitHub Stars
4
首次出现
Jan 25, 2026
安全审计
安装于
claude-code227
opencode191
codex186
gemini-cli184
cursor181
github-copilot179
참고: GitHub Actions 워크플로우 실행 및 결과 조회, 이슈/PR 관리 등
ghCLI 관련 작업은github스킬을 함께 로드하여 참조한다.
# ❌ 오래된 버전 - 가장 흔한 실수
uses: actions/checkout@v4 # v6가 최신인 경우
# ✅ 최신 메이저 버전 (gh release view로 확인 후 사용)
uses: actions/checkout@v6
최신 버전에서 제공하는 성능 개선과 보안 패치를 놓치지 않도록 합니다.
버전 확인 명령어:
gh release view --repo {owner}/{repo} --json tagName --jq '.tagName'
# 예시
gh release view --repo actions/checkout --json tagName --jq '.tagName'
gh release view --repo oven-sh/setup-bun --json tagName --jq '.tagName'
참고: 보안 민감 환경이나 신뢰도 낮은 서드파티 액션은 SHA 피닝(
@a1b2c3...)을 고려.
# ❌ 하드코딩 - 보안 위험
env:
API_KEY: "sk-1234567890"
DATABASE_PASSWORD: "mypassword123"
# ✅ secrets 사용
env:
API_KEY: ${{ secrets.API_KEY }}
DATABASE_PASSWORD: ${{ secrets.DATABASE_PASSWORD }}
비밀번호나 API Key와 같은 민감 정보가 그대로 노출되어 보안 사고로 이어질 수 있습니다. 보안 상 중요한 정보는 반드시 저장소나 조직의 시크릿으로 저장해놓고 읽어 와야합니다.
참고: Using secrets
# ❌ 인젝션 취약 - github.event 직접 사용
run: echo "${{ github.event.issue.title }}"
run: gh issue comment ${{ github.event.issue.number }} --body "${{ github.event.comment.body }}"
# ✅ 환경변수로 전달하여 인젝션 방지
env:
ISSUE_TITLE: ${{ github.event.issue.title }}
COMMENT_BODY: ${{ github.event.comment.body }}
run: |
echo "$ISSUE_TITLE"
gh issue comment ${{ github.event.issue.number }} --body "$COMMENT_BODY"
악의적인 사용자가 이슈 제목이나 코멘트에 셸 명령어를 주입할 수 있습니다.
# ⚠️ 위험 - 포크의 코드를 신뢰된 컨텍스트에서 실행
on: pull_request_target
steps:
- uses: actions/checkout@v{N}
with:
ref: ${{ github.event.pull_request.head.sha }} # 위험!
pull_request_target 이벤트는 포크의 PR에서도 시크릿에 접근 가능합니다. 포크 코드를 체크아웃하면 악성 코드가 실행될 수 있습니다.
# ❌ 불필요한 setup - node, npm, npx는 이미 설치됨
steps:
- uses: actions/setup-node@v{N}
- run: npx some-command
# ✅ 바로 사용
steps:
- run: npx some-command
- run: python script.py
- run: docker build .
중복 설치는 워크플로우 실행 시간을 늘리고 불필요한 네트워크 요청을 발생시킵니다.
주요 사전 설치 도구: Node.js, npm, npx, Python, pip, Ruby, gem, Go, Docker, git, gh, curl, wget, jq, yq
주요 미설치 도구: Bun, Deno, Rust, Zig, pnpm, Poetry, Ruff
사전 설치된 도구 확인:
권한은 가능한 하위 레벨에 선언. 범위를 좁게 유지:
# ✅ 권한 범위: workflow > job > step (좁을수록 좋음)
jobs:
build:
permissions:
contents: read # job 레벨에서 필요한 권한만
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
# 버전은 gh release view로 확인 후 사용
- uses: actions/checkout@v{N}
- name: Setup Bun
uses: oven-sh/setup-bun@v{N}
on:
push: # 푸시 시
branches: [main]
pull_request: # PR 생성/업데이트 시
branches: [main]
workflow_dispatch: # 수동 실행
schedule: # 스케줄 실행
- cron: "0 0 * * 1" # 매주 월요일 00:00 UTC
release: # 릴리스 생성 시
types: [published]
workflow_call: # 다른 워크플로우에서 호출
permissions:
contents: read # CI (빌드/테스트), 코드 체크아웃
contents: write # 커밋/푸시
pull-requests: write # PR 코멘트 봇
issues: write # 이슈 코멘트
packages: write # 패키지 배포 (contents: write와 함께)
id-token: write # OIDC 클라우드 인증 (contents: read와 함께)
# 버전은 gh release view --repo {owner}/{repo} --json tagName --jq '.tagName'으로 확인
steps:
- uses: actions/cache@v{N} # 의존성 캐싱
- uses: actions/checkout@v{N} # 코드 체크아웃
- uses: actions/download-artifact@v{N} # 아티팩트 다운로드
- uses: actions/upload-artifact@v{N} # 아티팩트 업로드
- uses: oven-sh/setup-bun@v{N} # Bun 설정
Weekly Installs
261
Repository
GitHub Stars
4
First Seen
Jan 25, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
claude-code227
opencode191
codex186
gemini-cli184
cursor181
github-copilot179
Azure Data Explorer (Kusto) 查询技能:KQL数据分析、日志遥测与时间序列处理
102,600 周安装