GitHub Actions Pipeline

SkillCloud & infra

Use when creating or updating GitHub Actions CI/CD workflows for automated testing, static analysis, and artifact deployment.

Use GitHub Actions Pipeline in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add GitHub Actions Pipeline and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the GitHub Actions Pipeline skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

GitHub Actions PipelineStart free

What this skill tells your AI

The instructions your AI receives, as published by dhruvanbhalara/skills in skills/github/github-actions/SKILL.md and read by ahel’s review.

  • Use GitHub Actions as the primary CI/CD platform
  • Trigger on push to main and on all Pull Requests
  • Pipeline MUST include these stages in order:

Stage 1: Quality Gate

- name: Analyze
  run: flutter analyze --fatal-infos --fatal-warnings
- name: Format Check
  run: dart format --set-exit-if-changed .
- name: Run Tests
  run: flutter test --coverage
  • Zero warnings policy: --fatal-infos ensures no info-level issues pass
  • Format check MUST use --set-exit-if-changed to enforce consistent formatting

Stage 2: Build

- name: Build APK
  run: flutter build apk --flavor prod --dart-define-from-file=config/prod.json --release
- name: Build IPA
  run: flutter build ipa --flavor prod --dart-define-from-file=config/prod.json --release --export-options-plist=ios/ExportOptions.plist
  • Always build with --flavor prod and --dart-define-from-file=config/prod.json
  • Use a single main.dart: do NOT pass -t lib/main_prod.dart

Stage 3: Deploy (on main merge only)

  • Upload to Firebase App Distribution for internal testing
  • Upload to Google Play Internal Track / TestFlight for staging
  • Production release requires manual approval gate

Caching Strategy

To optimize build speeds, cache dependencies in your GitHub Actions workflows:

- name: Cache Flutter dependencies
  uses: actions/cache@v4
  with:
    path: |
      ~/.pub-cache
      .dart_tool
    key: ${{ runner.os }}-pub-${{ hashFiles('**/pubspec.lock') }}
    restore-keys: |
      ${{ runner.os }}-pub-

- name: Cache iOS/macOS Native dependencies (SPM & CocoaPods)
  uses: actions/cache@v4
  with:
    path: |
      ~/Library/Caches/org.swift.swiftpm
      ~/Library/Developer/Xcode/DerivedData
      ios/Pods
    key: ${{ runner.os }}-native-${{ hashFiles('ios/Podfile.lock', '**/pubspec.yaml') }}
    restore-keys: |
      ${{ runner.os }}-native-

Versioning Strategy

  • Follow Semantic Versioning: MAJOR.MINOR.PATCH+BUILD
  • Bump PATCH for bug fixes, MINOR for features, MAJOR for breaking changes
  • Set version in pubspec.yaml: version: 1.2.3+45
  • The +BUILD number MUST auto-increment in CI (use build number from CI environment)

Code Signing

  • Store signing keys and certificates in GitHub Secrets (never in repo)
  • Android: Store keystore as base64-encoded secret, decode in CI
  • iOS: Use App Store Connect API key for automated signing
  • NEVER commit *.jks, *.keystore, *.p12, or *.mobileprovision files

PR Requirements

  • All PRs MUST pass: analysis (0 warnings), formatting, and tests before merge
  • Require at least 1 code review approval
  • Branch protection on main: no direct pushes, require status checks

Release Checklist

  • Version bumped in pubspec.yaml
  • CHANGELOG.md updated
  • All tests passing on CI
  • Build succeeds for both Android and iOS
  • Tested on physical device with production flavor
  • Git tag created matching version (v1.2.3)

Signals

GitHub stars
30
Forks
4
Last commit
Aug 2026

ahel review

  • S4info
    community integration, published by dhruvanbhalara, not github

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Item type
skill
Key
github-actions-dhruvanbhalara
Source
github.com/dhruvanbhalara/skills