Aller au contenu principal

Skill: ops-mobile-release

Inline

Publishing apps to the App Store and Google Play. Trigger when the user wants to deploy a mobile app or configure Fastlane.

Configuration​

PropertyValue
Contextinline
Pre-approved toolsNone declared: the project's permission settings apply
Triggerkeywords: ops, mobile, release

Detailed description​

Mobile Release

Fastlane Setup​

# fastlane/Fastfile
default_platform(:ios)

platform :ios do
desc "Deploy to TestFlight"
lane :beta do
increment_build_number
build_app(scheme: "MyApp")
upload_to_testflight
end

desc "Deploy to App Store"
lane :release do
increment_build_number
build_app(scheme: "MyApp")
upload_to_app_store
end
end

platform :android do
desc "Deploy to Play Store Internal"
lane :beta do
gradle(task: "bundleRelease")
upload_to_play_store(track: "internal")
end

desc "Deploy to Play Store"
lane :release do
gradle(task: "bundleRelease")
upload_to_play_store
end
end

GitHub Actions​

name: Mobile Release

on:
push:
tags:
- 'v*'

jobs:
ios:
runs-on: macos-latest
steps:
- uses: actions/checkout@v7
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true # runs bundle install, caches gems
- run: bundle exec fastlane ios release
env:
# JSON {"key_id", "issuer_id", "key"}: read as `api_key` by deliver/pilot
# (upload_to_app_store, upload_to_testflight)
APP_STORE_CONNECT_API_KEY: ${{ secrets.ASC_API_KEY_JSON }}

android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-java@v6
with:
distribution: 'temurin'
java-version: '17'
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true # fastlane runs through Bundler: Ruby + gems first
- run: bundle exec fastlane android release
env:
SUPPLY_JSON_KEY_DATA: ${{ secrets.PLAY_SERVICE_ACCOUNT_JSON }} # read by supply

Release Checklist​

iOS​

  • Increment version/build number
  • Screenshots up to date
  • App Store description
  • Privacy policy URL
  • TestFlight beta OK

Android​

  • versionCode/versionName incremented
  • APK/AAB signed
  • Play Store screenshots
  • Description up to date
  • Internal testing OK

See also​

If the app ships with Expo / EAS, Expo's own eas-app-stores skill (expo/skills, MIT, pin 13ad8e05) covers eas.json, signing, versions and store submission. EAS has a free tier and paid plans; the skill states their limits. Fastlane publishes no skill: the fastlane path stays here.

Automatic triggering​

This skill is automatically activated when:

  • The matching keywords are detected in the conversation
  • The task context matches the skill's domain

Triggering examples​

  • "I want to ops..."
  • "I want to mobile..."
  • "I want to release..."

Context inline​

Inline means the skill runs in the conversation (the default, no context key):

  • Sees the full history
  • Its work is visible as it happens
  • Right for almost every skill

See also​