fastlane

Fastlane Deployment Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "fastlane" with this command: npx skills add pstuart/pstuart/pstuart-pstuart-fastlane

Fastlane Deployment Skill

Fastlane automates iOS and Android app building, testing, and deployment. This skill provides action references, common workflows, and Fastfile patterns.

Quick Reference

Core Tools (Aliases)

Tool Action Purpose

gym

build_app

Build and sign iOS/macOS apps

pilot

upload_to_testflight

Upload to TestFlight

deliver

upload_to_app_store

Upload to App Store

supply

upload_to_play_store

Upload to Google Play

match

sync_code_signing

Sync certificates/profiles

cert

get_certificates

Create iOS certificates

sigh

get_provisioning_profile

Generate provisioning profiles

snapshot

capture_ios_screenshots

iOS screenshots

screengrab

capture_android_screenshots

Android screenshots

produce

create_app_online

Create app on App Store Connect

pem

get_push_certificate

Push notification certificates

scan

run_tests

Run iOS/macOS tests

precheck

check_app_store_metadata

Validate metadata before submission

Common Workflows

iOS TestFlight Deployment

lane :beta do app_store_connect_api_key( key_id: ENV["ASC_KEY_ID"], issuer_id: ENV["ASC_ISSUER_ID"], key_filepath: ENV["ASC_KEY_PATH"] ) increment_build_number match(type: "appstore") build_app(scheme: "MyApp") upload_to_testflight slack(message: "Build uploaded to TestFlight!") end

iOS App Store Release

lane :release do app_store_connect_api_key(...) capture_screenshots sync_code_signing(type: "appstore") build_app(scheme: "MyApp") upload_to_app_store( submit_for_review: true, automatic_release: true ) end

Android Play Store Deployment

lane :deploy do gradle(task: "clean assembleRelease") upload_to_play_store( track: "production", json_key: ENV["GOOGLE_PLAY_JSON_KEY"] ) end

Android Beta (Internal Testing)

lane :beta do gradle(task: "clean bundleRelease") upload_to_play_store( track: "internal", aab: "app/build/outputs/bundle/release/app-release.aab" ) end

Code Signing with Match

Appfile

app_identifier("com.example.app")

Matchfile

git_url("git@github.com:org/certificates.git") storage_mode("git") type("appstore")

Usage in lane

lane :setup_signing do match(type: "development") # Dev certs match(type: "appstore") # Distribution certs end

CI/CD Integration

GitHub Actions Environment

lane :ci_build do setup_ci # Sets up keychain for CI match(type: "appstore", readonly: true) build_app(scheme: "MyApp") end

Environment Variables

App Store Connect API Key (recommended over password auth)

app_store_connect_api_key( key_id: ENV["ASC_KEY_ID"], issuer_id: ENV["ASC_ISSUER_ID"], key_content: ENV["ASC_KEY_CONTENT"], # Base64 encoded .p8 is_key_content_base64: true )

Google Play Service Account

upload_to_play_store( json_key_data: ENV["GOOGLE_PLAY_JSON_KEY"] )

Detailed Action References

For complete action parameters and examples, see:

  • Building: references/building.md

  • gym, gradle, xcodebuild, cocoapods

  • Code Signing: references/code-signing.md

  • match, cert, sigh, notarize

  • App Store: references/app-store.md

  • deliver, pilot, produce, precheck

  • Google Play: references/google-play.md

  • supply, gradle actions

  • Screenshots: references/screenshots.md

  • snapshot, screengrab, frameit

  • Testing: references/testing.md

  • scan, slather, swiftlint

  • Utilities: references/utilities.md

  • notifications, source control, misc

Essential Commands

Initialize fastlane

fastlane init

List all actions

fastlane actions

Get action details

fastlane action [action_name]

Run a lane

bundle exec fastlane [lane_name]

Run with verbose output

bundle exec fastlane [lane_name] --verbose

App Store Connect Restrictions

Metadata Character Limits

Field Max Length Notes

App Name 30 characters Shown on App Store

Subtitle 30 characters Below app name

Keywords 100 characters Total including commas, no spaces after commas

Promotional Text 170 characters Can update without new build

Description 4000 characters

What's New 4000 characters Release notes

Screenshot Size Requirements

Device Class Resolution Required

iPhone 6.9" (16 Pro Max) 1320×2868 Yes

iPhone 6.7" (15 Pro Max) 1290×2796 Yes

iPhone 6.5" (11 Pro Max) 1242×2688 Yes

iPhone 5.5" (8 Plus) 1242×2208 Yes

iPad 12.9" 2048×2732 If iPad supported

Known Issue: Screenshots from Xcode 26 beta simulators (iPhone 17 series) may have resolutions not yet recognized by App Store Connect. Use iPhone 16 series simulators.

API Key Configuration

The App Store Connect API key must be properly formatted in JSON:

{ "key_id": "YOUR_KEY_ID", "issuer_id": "YOUR_ISSUER_ID", "key": "-----BEGIN PRIVATE KEY-----\nLINE1...\nLINE2...\n-----END PRIVATE KEY-----", "duration": 1200, "in_house": false }

Critical: The PEM key MUST have \n newline characters between lines. A single-line PEM causes OpenSSL::PKey::ECError: invalid curve name .

Common Errors and Solutions

Error Cause Solution

invalid curve name

API key PEM on single line Add \n between 64-char lines

Invalid screenshot size

Unrecognized device resolution Use supported device simulators

Keywords too long

Over 100 characters total Trim keywords, remove duplicates

Subtitle too long

Over 30 characters Shorten subtitle

No data from fetch_app_store_review_detail

Known bug for new apps Ignore - metadata uploads successfully

validate_only not found

Parameter renamed Use verify_only instead

Bundler version mismatch Gemfile.lock version conflict Use fastlane directly instead of bundle exec fastlane

Fastfile Structure

fastlane/Fastfile

default_platform(:ios)

platform :ios do before_all do # Runs before every lane end

lane :test do run_tests(scheme: "MyApp") end

lane :beta do # Beta deployment end

after_all do |lane| # Runs after successful lane completion end

error do |lane, exception| slack( message: "Error in #{lane}: #{exception.message}", success: false ) end end

platform :android do lane :deploy do gradle(task: "assembleRelease") end end

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

book-publisher

No summary provided by upstream source.

Repository SourceNeeds Review
General

swift-modern-architecture-skill

No summary provided by upstream source.

Repository SourceNeeds Review
General

cleanup author references

No summary provided by upstream source.

Repository SourceNeeds Review