Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pipeline do deploymnetu i dystrybucji aplikacji #143

Open
wants to merge 59 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
6debec4
Create deploy_pipeline.yml
martamazurkiewicz Oct 9, 2022
cc5a34e
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Oct 9, 2022
de1af89
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Oct 9, 2022
2f4ebd9
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Oct 9, 2022
6703209
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Oct 9, 2022
e7e3c9c
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Oct 9, 2022
7eb98c9
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Oct 9, 2022
3f5905b
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Oct 9, 2022
5e31895
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Oct 9, 2022
977c8df
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Oct 9, 2022
de51131
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Oct 9, 2022
5558da5
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 19, 2022
e11f6cb
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 19, 2022
86af80f
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 19, 2022
d83efaa
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 19, 2022
d2b8220
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 19, 2022
39af535
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 19, 2022
fc71306
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 19, 2022
b8fe6ff
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 19, 2022
6454be7
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 19, 2022
fe48314
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 19, 2022
971d64f
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 19, 2022
6daf837
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 19, 2022
c6a9f71
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 19, 2022
18a40f7
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 20, 2022
19e9a2b
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 20, 2022
aadccca
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 20, 2022
92a6127
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 20, 2022
f01923f
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 20, 2022
d1bf0bd
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 20, 2022
06f1e3f
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 20, 2022
06fa5a2
Changed provisioning profile name
martamazurkiewicz Dec 20, 2022
83fb2d7
Renamed provisioning profile
martamazurkiewicz Dec 20, 2022
d406263
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 20, 2022
fe419e8
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 20, 2022
e54251e
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 20, 2022
6e3a932
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 20, 2022
26bbbf3
Merge branch 'dev' into deploy_pipeline
martamazurkiewicz Dec 25, 2022
cde7a12
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 25, 2022
5e1adaf
Fixing provisioning profile name
martamazurkiewicz Dec 25, 2022
e4c6433
Merge branch 'deploy_pipeline' of github.com:SilverNETGroupSGGW/kampu…
martamazurkiewicz Dec 25, 2022
d55cdae
try to fix apple config
martamazurkiewicz Dec 25, 2022
e3ff9c6
trying to fix ios deployment
martamazurkiewicz Dec 25, 2022
5e3e05b
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 25, 2022
75bc2d1
Revert "trying to fix ios deployment"
martamazurkiewicz Dec 25, 2022
00be373
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 25, 2022
f615b7f
try exportOptions.plist
martamazurkiewicz Dec 25, 2022
4f5f160
Removing variables from exportOptions
martamazurkiewicz Dec 25, 2022
cd59e8f
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 25, 2022
26a47b5
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 25, 2022
6172638
Update deploy_pipeline.yml for Azure Pipelines
martamazurkiewicz Dec 25, 2022
0026025
added dev ios pipeline
martamazurkiewicz Dec 25, 2022
3c76b19
Commented out app store task
martamazurkiewicz Jan 10, 2023
81205ab
renamed maps variable
martamazurkiewicz Jan 10, 2023
89e958e
added trigger on master
martamazurkiewicz Jan 10, 2023
9a502cb
Fix varaibles for dev
martamazurkiewicz Jan 10, 2023
58f31ea
draft of readme
martamazurkiewicz Jan 10, 2023
9cf9aac
Fix typo
martamazurkiewicz Jan 10, 2023
56fb427
change flutter build type for dev pipeline
martamazurkiewicz Jan 10, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,3 +70,19 @@ Najnowsza wersja kodu jest oparta o mechanizm null safety. Domyślnie, wszystkie
Zwracajcie na to uwagę w kodzie, wiele oryginalnych typów nie przyjmie już ```null``` jako wartości. Większość argumentów dostanie adnotację ```required```.

Tłumaczenie zasad null safety w Darcie: https://dart.dev/null-safety/understanding-null-safety

# Pipeline'y
Konto Azure DevOps Silver .Net: https://dev.azure.com/silversggw/KampusSGGW

## Testowanie IOS
Przy braku dostępu do maca, aby przetestować wersję IOS aplikacji należy użyć pipeline'a `kampus_development`. Pipeline utworzy plik iOS, który przy pomocy iTunes można wrzucić na iPhone. Pipeline odpali się sam po merge'u do gałęzi `develop`.

### Wrzucenie pliku `` na iPhone przez iTunes
Plik należy przeciągnąć na ikonę urządzenia, gdy jest ono widoczne w iTunes. Ikona, będzie po lewej, w zakładce `devices`.

## Deploy IOS
Aby zbudować wersję IOS aplikacji, która nadaje się na AppStoreConnect należy użyć pipeline'a `kampus_production`. Pipeline utworzy plik IPA `ipa_kampus_<build_id>/Kampus SGGW.ipa`. Pipeline odpali się sam po pull requeście do brancha `master`.

### Zarządzanie certyfikatami i zmiennymi
Po roku należy zmienić certyfikaty p12 i mobileprovisioning. Nowe certyfikaty należy wrzucić w zakładce _Pipeline -> Library_ i nazwać tak jak poprzednie certyfikaty. Należy zmienić także hasło certyfikatu p12 - _Library -> silvernet variable group -> P12password_ (zmienna musi pozostać sekretem! Ikona kłódki przed save).
Pipeline wykorzystuje także token do API Google maps. Token to zmienna `maps_api_key`.
84 changes: 84 additions & 0 deletions build_ios_dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: DEV_$(Build.BuildId)_$(SourceBranchName)_$(Date:yyyyMMdd)

trigger:
- develop

parameters:
- name: verbose
displayName: 'verbose run'
type: boolean
default: false
- name: run_tests
displayName: 'run flutter unit tests'
type: boolean
default: false

variables:
- group: silvernet

stages:
- stage: Build
displayName: Build
pool:
vmImage: 'macOS-latest'
jobs:
- job: iosbuild
displayName: Build iOS bundle
steps:
- task: Bash@3
displayName: deploy maps api key
inputs:
targetType: 'inline'
script: |
sed -i "" "s/$(key_alias)/$DEV_MAPS_API_KEY/" $(Build.SourcesDirectory)/ios/Runner/AppDelegate.swift
cat $(Build.SourcesDirectory)/ios/Runner/AppDelegate.swift
env:
DEV_MAPS_API_KEY: $(DEV_MAPS_API_KEY)
- task: InstallAppleCertificate@2
displayName: install Apple Certificate
inputs:
certSecureFile: 'develop_ios.p12'
certPwd: $(DEV_P12password)
keychain: 'temp'
- task: InstallAppleProvisioningProfile@1
displayName: install Apple Provisioning Profile
inputs:
provProfileSecureFile: 'DEV_azure_pipeline_kampus.mobileprovision'
removeProfile: true
- task: FlutterInstall@0
inputs:
mode: 'auto'
channel: 'stable'
version: 'latest'
- task: Bash@3
displayName: run flutter doctor
inputs:
targetType: 'inline'
script: |
$(FlutterToolPath)/flutter doctor -v
$(FlutterToolPath)/flutter --version
condition: eq(${{ parameters.verbose }}, 'true')
- task: FlutterBuild@0
displayName: build application
inputs:
target: ios
projectDirectory: '$(Build.SourcesDirectory)'
- task: FlutterTest@0
displayName: "Run unit tests"
inputs:
generateCodeCoverageReport: true
projectDirectory: '$(Build.SourcesDirectory)'
condition: eq(${{ parameters.run_tests }}, 'true')
- task: CopyFiles@2
displayName: "Copy app to staging directory"
inputs:
sourceFolder: '$(Agent.BuildDirectory)'
contents: '**/ios/*'
targetFolder: '$(Build.StagingDirectory)'
flattenFolders: true
- task: PublishBuildArtifacts@1
displayName: "Publish iOS files"
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'ios_kampus_$(Build.BuildId)'
publishLocation: 'Container'
104 changes: 104 additions & 0 deletions deploy_pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
name: $(Build.BuildId)_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:.r)

trigger:
- master

parameters:
- name: verbose
displayName: 'verbose run'
type: boolean
default: false
- name: run_tests
displayName: 'run flutter unit tests'
type: boolean
default: false

variables:
- group: silvernet

stages:
- stage: Build
displayName: Build
pool:
vmImage: 'macOS-latest'
jobs:
- job: iosbuild
displayName: Build iOS bundle
steps:
- task: Bash@3
displayName: deploy maps api key
inputs:
targetType: 'inline'
script: |
sed -i "" "s/$(key_alias)/$MAPS_API_KEY/" $(Build.SourcesDirectory)/ios/Runner/AppDelegate.swift
cat $(Build.SourcesDirectory)/ios/Runner/AppDelegate.swift
env:
MAPS_API_KEY: $(MAPS_API_KEY)
- task: InstallAppleCertificate@2
displayName: install Apple Certificate
inputs:
certSecureFile: 'distribution_ios.p12'
certPwd: $(P12password)
keychain: 'temp'
- task: InstallAppleProvisioningProfile@1
displayName: install Apple Provisioning Profile
inputs:
provProfileSecureFile: 'azure_pipeline_kampus.mobileprovision'
removeProfile: true
- task: FlutterInstall@0
inputs:
mode: 'auto'
channel: 'stable'
version: 'latest'
- task: Bash@3
displayName: run flutter doctor
inputs:
targetType: 'inline'
script: |
$(FlutterToolPath)/flutter doctor -v
$(FlutterToolPath)/flutter --version
condition: eq(${{ parameters.verbose }}, 'true')
- task: FlutterBuild@0
displayName: build application
inputs:
target: ipa
projectDirectory: '$(Build.SourcesDirectory)'
exportOptionsPlist: 'ios/exportOptions.plist'
- task: FlutterTest@0
displayName: "Run unit tests"
inputs:
generateCodeCoverageReport: true
projectDirectory: '$(Build.SourcesDirectory)'
condition: eq(${{ parameters.run_tests }}, 'true')
- task: CopyFiles@2
displayName: "Copy app to staging directory"
inputs:
sourceFolder: '$(Agent.BuildDirectory)'
contents: '**/ipa/*.ipa'
targetFolder: '$(Build.StagingDirectory)'
flattenFolders: true
- task: PublishBuildArtifacts@1
displayName: "Publish IPA file"
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'ipa_kampus_$(Build.BuildId)'
publishLocation: 'Container'
# - task: AppStoreRelease@1
# inputs:
# serviceEndpoint: 'silver_appstore'
# releaseTrack: 'TestFlight'
# appIdentifier: 'com.silvers.kampus-sggw'
# appType: 'iOS'
# appSpecificId: '1586959639'
# - task: AppStoreRelease@1
# inputs:
# authType: 'UserAndPass'
# username: '$(fastLane.auth.userName)'
# password: '$(fastLane.auth.password)'
# isTwoFactorAuth: true
# appSpecificPassword: '$(fastLane.auth.appPassword)'
# releaseTrack: 'TestFlight'
# appIdentifier: 'com.silvers.kampus-sggw'
# appType: 'iOS'
# shouldSkipWaitingForProcessing: true
# appSpecificId: '1586959639'
18 changes: 9 additions & 9 deletions ios/Runner.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -355,8 +355,8 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CODE_SIGN_IDENTITY = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 3;
DEVELOPMENT_TEAM = MZMZBQPXAR;
ENABLE_BITCODE = NO;
Expand All @@ -368,7 +368,7 @@
MARKETING_VERSION = 1.0.2;
PRODUCT_BUNDLE_IDENTIFIER = "com.silvers.kampus-sggw";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
PROVISIONING_PROFILE_SPECIFIER = "azure_pipeline_kampus";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
Expand Down Expand Up @@ -490,8 +490,8 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CODE_SIGN_IDENTITY = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 3;
DEVELOPMENT_TEAM = MZMZBQPXAR;
ENABLE_BITCODE = NO;
Expand All @@ -503,7 +503,7 @@
MARKETING_VERSION = 1.0.2;
PRODUCT_BUNDLE_IDENTIFIER = "com.silvers.kampus-sggw";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
PROVISIONING_PROFILE_SPECIFIER = "azure_pipeline_kampus";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
Expand All @@ -517,8 +517,8 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CODE_SIGN_IDENTITY = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 3;
DEVELOPMENT_TEAM = MZMZBQPXAR;
ENABLE_BITCODE = NO;
Expand All @@ -530,7 +530,7 @@
MARKETING_VERSION = 1.0.2;
PRODUCT_BUNDLE_IDENTIFIER = "com.silvers.kampus-sggw";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
PROVISIONING_PROFILE_SPECIFIER = "azure_pipeline_kampus";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
Expand Down
25 changes: 25 additions & 0 deletions ios/exportOptions.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>compileBitcode</key>
<true/>
<key>method</key>
<string>app-store</string>
<key>provisioningProfiles</key>
<dict>
<key>com.silvers.kampus-sggw</key>
<string>azure_pipeline_kampus</string>
</dict>
<key>signingCertificate</key>
<string>iPhone Distribution</string>
<key>signingStyle</key>
<string>manual</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>MZMZBQPXAR</string>
<key>thinning</key>
<string>&lt;none&gt;</string>
</dict>
</plist>