vsts-flutter-tasks
vsts-flutter-tasks copied to clipboard
Complete example to publish into playstore and apple store
Hi there, I wonder is there any complete example that run pipeline from build github repo to deploy into playtore & apple store? I tried to use google play and apple store extensions It's very hard for me to set it up because I can't find any fully document about it. Here is my try with ios build first:
# Flutter build
name: $(Date:yyyyMMdd)$(Rev:r)
variables:
projectDirectory: .
trigger:
- deployment
jobs:
- job: Build
pool:
vmImage: 'macOS-latest'
steps:
- task: FlutterInstall@0
inputs:
channel: 'dev'
version: 'latest'
- task: CmdLine@2
displayName: 'Update packages'
inputs:
script: '$(FlutterToolPath)/flutter packages upgrade'
- task: InstallAppleCertificate@2
inputs:
certSecureFile: '[my_cert.p12]'
certPwd: '[password]'
keychain: 'temp'
- task: InstallAppleProvisioningProfile@1
inputs:
provisioningProfileLocation: 'secureFiles'
provProfileSecureFile: '[my_profile.mobileprovision]'
- task: FlutterBuild@0
inputs:
target: ios
projectDirectory: $(projectDirectory)
iosCodesign: false
- task: CopyFiles@2
inputs:
contents: '/ios/iphoneos/Runner.app'
targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
artifactName: 'store'
- task: AppStoreRelease@1
inputs:
serviceEndpoint: 'itunes connection'
appIdentifier: '[app_bundle]'
appType: 'iOS'
releaseTrack: 'TestFlight'
shouldSkipWaitingForProcessing: true
shouldSkipSubmission: true
appSpecificId: '[my_app_id]'
teamId: '[my_team_id]'
teamName: '[my_team_name]'
At the moment I have trouble on the CopyFiles task, it says found 0 files.
And the problem is that I don't know whether I'm doing correctly or not.
Is there anyone that succeeded to publish into playstore & apple store with azure pipeline?
Can you please share the yml setup?
Thanks!
@ductranit
- develop
name: $(Date:yyyyMMdd)$(Rev:r)
variables:
FlutterChannel: 'stable'
FlutterVersion: 'latest'
ProjectDirectory: '$(Build.SourcesDirectory)'
Flavor: 'dev'
BuildNumber: '$(Build.BuildNumber)'
BuildMessage: '$(Build.SourceVersionMessage)'
BuildAndroidDirectory: '$(ProjectDirectory)/build/app/outputs/flutter-apk/app-$(Flavor)-release.apk'
BuildIOSDirectory: '$(ProjectDirectory)/build/ios/App-$(Build.BuildNumber)/appname.ipa'
jobs:
- job: Mobile
variables:
- group: inf-android
- group: inf-ios
steps:
- task: FlutterInstall@0
displayName: 'FlutterInstall'
inputs:
channel: 'stable'
- task: CmdLine@2
displayName: '[Flutter] doctor'
inputs:
script: |
$(FlutterToolPath)/flutter config --android-sdk /Users/testuser/Library/Android/Sdk
$(FlutterToolPath)/flutter doctor
- task: CmdLine@2
displayName: Run install
inputs:
script: |
$(FlutterToolPath)/flutter pub get
- task: InstallAppleCertificate@2
inputs:
certSecureFile: 'infCert.p12'
certPwd: $(p12password)
keychain: 'temp'
deleteCert: true
- task: InstallAppleProvisioningProfile@1
inputs:
provisioningProfileLocation: 'secureFiles'
provProfileSecureFile: 'testapp.mobileprovision'
removeProfile: true
- task: FlutterBuild@0
displayName: 'Build IOS'
inputs:
target: "ios"
buildFlavour: "dev"
buildNumber: '$(Build.BuildNumber)'
buildName: $(buildName)
- task: Bash@3
displayName: 'Prepare an App Store package'
inputs:
targetType: 'inline'
script: |
xcodebuild -workspace ios/Runner.xcworkspace -scheme dev -sdk iphoneos -configuration Release-dev archive -archivePath build/ios/Runner.xcarchive
xcodebuild -exportArchive -archivePath build/ios/Runner.xcarchive -exportOptionsPlist ci/ExportOptions.plist -exportPath build/ios/App-$(Build.BuildNumber)
- task: FlutterBuild@0
displayName: 'Build Android'
inputs:
target: "apk"
projectDirectory: '$(ProjectDirectory)'
buildFlavour: "dev"
- task: CopyFiles@2
displayName: 'Copy IOS'
inputs:
sourceFolder: '$(Build.SourcesDirectory)'
contents: '$(BuildIOSDirectory)'
targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: CopyFiles@2
displayName: 'Copy Android'
inputs:
sourceFolder: '$(Build.SourcesDirectory)'
contents: '$(BuildAndroidDirectory)'
targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: '$(Build.ArtifactStagingDirectory)'
artifactName: drop