situm-cordova-plugin-official
Version:
Situm Cordova-based Plugin for hybrid apps.
337 lines (257 loc) • 11.2 kB
YAML
trigger:
- develop
- release/*
- feature/*
pr: none
variables:
- group: Passwords
- group: SoftwareVersions
- group: ConfluencePages
- group: ChangelogIds
parameters:
- name: CordovaVersion
displayName: Plugin version (Only required for Release)
default: "0.0.0"
resources:
repositories:
- repository: sys_kubernetes_templates
type: bitbucket
endpoint: Bitbucket - sistemas
name: situm/sys-kubernetes-templates.git
ref: master
- repository: web_developers
type: bitbucket
endpoint: Bitbucket - sistemas
name: situm/web-developers.git
ref: master
- repository: cordova_sdk_validation
type: bitbucket
endpoint: Bitbucket - sistemas
name: situm/cordova-sdk-validation.git
ref: master
jobs:
- ${{ if or(contains(variables['Build.SourceBranch'], 'feature/'), contains(variables['Build.SourceBranch'],'develop'), ne(variables['Build.Reason'],'Manual')) }}:
- job: Test_iOS
pool:
vmImage: $(macOSVersion)
steps:
- template: azure/common-steps.yaml
- bash: |
echo -e "\n[+] Set xcode version to $(xcodeVersion)"
sudo xcode-select -switch $(xcodeVersion)
echo -e "\n[+] Copy JSON test files \n"
tests/scripts/copy_ios_resources.sh
echo -e "\n[+] Pod install \n"
cd src/ios
pod install
echo -e "\n[+] Execute xcode tests \n"
xcodebuild test -workspace SitumCordovaPlugin.xcworkspace -scheme CordovaLib -destination $(iosSimulator)
if [ $? -ne 0 ];then
echo -e "\n [!] Error with tests....... \n"
exit 1
fi
displayName: Execute Tests
- job: Test_Android
pool:
vmImage: $(ubuntuVersion)
steps:
- template: azure/common-steps.yaml
- bash: |
echo -e "\n[+] Copy JSON test files \n"
tests/scripts/copy_android_resources.sh
echo -e "\n[+] Execute gradle tests \n"
cd src/android
./gradlew test --continue --info
if [ $? -ne 0 ];then
echo -e "\n [!] Error with tests....... \n"
exit 1
fi
displayName: Execute Test
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: 'src/android/app/build/test-results/*/*.xml'
displayName: Publish test
condition: always()
- job: Test_JS
pool:
vmImage: $(ubuntuVersion)
steps:
- bash: |
cd situm-cordova-plugin
echo -e "\n[+] Install npm dependencies \n"
npm install
echo -e "\n[+] Execute npm tests \n"
npm test
displayName: JS Test
- ${{ if contains(variables['Build.SourceBranch'], 'release/') }}:
- job: Generate_Release
pool:
vmImage: $(ubuntuVersion)
steps:
- template: azure/common-steps.yaml
- task: NodeTool@0
inputs:
versionSource: 'spec'
versionSpec: $(nodeVersion)
- ${{ if eq(variables['Build.Reason'],'manual') }}:
- bash: |
if [[ "${{ parameters.CordovaVersion }}" == "0.0.0" ]];then
echo -e "\n[!] IMPORTANT: You don't set the plugin version when you run the release branch and I'm not fortune teller\n"
exit 1
else
echo "##vso[task.setvariable variable=version]$(echo ${{ parameters.CordovaVersion }})"
echo -e "\n[+] I'm a shy step so I don't tell you anything\n"
fi
displayName: Set Cordova Version Manual
- ${{ if ne(variables['Build.Reason'],'manual') }}:
- bash: |
CordovaVersion=$(echo $(Build.SourceBranch) | cut -d "/" -f 4)
echo "##vso[task.setvariable variable=version]$(echo $CordovaVersion)"
echo -e "\n[+] I'm a shy step that only executes where this pipeline run automatic\n"
displayName: Set Cordova Version Automatic
- bash: |
echo -e "\n[+] Installing NPM version $(npmVersion)\n"
npm install -g $(npmVersion)
currentBranch=$(echo $(Build.SourceBranch) | cut -d "/" -f 3,4)
echo "##vso[task.setvariable variable=currentBranch]$(echo $currentBranch)"
echo -e "\n[+] Variables:"
echo -e "\t[+] Plugin version: $(version)"
echo -e "\t[+] NPM CLI version: $(npm --version)"
echo -e "\t[+] Current branch: $currentBranch"
echo -e "\n[+] Setting git remote credentials\n"
if [ -d "situm-cordova-plugin" ];then
cd situm-cordova-plugin
fi
git remote set-url origin https://situmops:$(github_token)@github.com/$(Build.Repository.Name).git
cat .git/config
displayName: Initial Vars & Configs
- bash: |
cd situm-cordova-plugin
echo -e "\n[+] Setting NPM version to $(version)"
npm version $(version) --no-git-tag-version
echo -e "\n[+] Change plugin version in plugin.xml"
sed -i "s/version=\".*\">/version=\"$(version)\">/g" plugin.xml
echo -e "\n[+] Setting git to push NPM version\n"
git config --global user.email "sistemas@situm.es"
git config --global user.name "Situmops"
echo -e "\n[+] Fetch branches \n"
git fetch
echo -e "\n[+] Changing to $(currentBranch)"
git checkout $(currentBranch)
echo -e "\n[+] Add,Commit and Push to $(currentBranch)"
git commit -am "[skip ci] Setting the Cordova version to $(version)"
git push --set-upstream origin $(currentBranch)
git push
displayName: Make changes
- template: azure-templates/publish_release.yml@sys_kubernetes_templates
parameters:
bitbucket:
bitbucket_user: situmops
system: "N/A"
server: "github"
repoFolder: "situm-cordova-plugin"
mergeBranches:
- "master"
- "develop"
- bash: |
cd situm-cordova-plugin
echo -e "\n[+] Fetch all branches\n"
git fetch
echo -e "\n[+] Checkout and Pull to master branch\n"
git checkout master
git pull origin master
echo -e "\n[+] Configure NPM login"
echo "//registry.npmjs.org/:_authToken=$(NPM_TOKEN)" > ~/.npmrc
echo -e "\n[+] Publish NPM packages"
npm publish --access=public
displayName: NPM publish
- bash: |
cd situm-cordova-plugin
echo -e "\n[+] Install dependencies"
npm install
echo -e "\n[+] Generate Documentation\n"
npm run jsdoc
displayName: Generate JSDoc
- template: azure-templates/commit-doc.yaml@sys_kubernetes_templates
parameters:
version: $(version)
docPath: situm-cordova-plugin/docs/JSDoc
system: cordova
bitbucket:
bitbucket_user: $(bitbucket_user)
bitbucket_pass: $(bitbucket_pass)
release: "situm-cordova-plugin"
- checkout: cordova_sdk_validation
fetchTags: false
fetchDepth: 1
displayName: Checkout Cordova app example
- bash: |
cd cordova-sdk-validation
echo -e "\n[+] Setting git remote credentials\n"
git remote set-url origin https://$(bitbucket_user):$(bitbucket_pass)@bitbucket.org/situm/cordova-sdk-validation.git
cat .git/config
echo -e "\n[+] Fetch branches"
git fetch origin master
echo -e "\n[+] Checkout to master branch\n"
git checkout master
echo -e "\n[+] Commit empty change to run examples repo\n"
git commit -m "Publish Cordova SDK plugin release $(version)" --allow-empty
echo -e "\n[+] Push empty change \n"
git push origin master
displayName: Execute example app
- bash: |
if [ -d "situm-cordova-plugin" ]; then
cd situm-cordova-plugin
fi
echo -e "\n[+] Pull master changes and change to master branch \n"
git fetch
git checkout master
git pull origin master
iossdk=$(grep -oE '\s<framework src="SitumSDK" type="podspec" spec="[0-9]+\.[0-9]+\.[0-9]+" />' plugin.xml | awk -F'"' '{print $6}')
androidsdk=$(grep -oE 'es.situm:situm-sdk:[0-9]+\.[0-9]+\.[0-9]+@aar' src/android/situm.gradle | awk -F'[:@]' '{print $3}')
echo -e "\n[+] Checkout to previous commit\n"
git checkout HEAD~1
iossdk_old=$(grep -oE '\s<framework src="SitumSDK" type="podspec" spec="[0-9]+\.[0-9]+\.[0-9]+" />' plugin.xml | awk -F'"' '{print $6}')
androidsdk_old=$(grep -oE 'es.situm:situm-sdk:[0-9]+\.[0-9]+\.[0-9]+@aar' src/android/situm.gradle | awk -F'[:@]' '{print $3}')
echo -e "\n[+] Return repository to master branch\n"
git checkout master
echo -e "\n[+] Versions:"
echo -e "\t[+] Cordova SDK: $(version)"
echo -e "\t[+] ANDROID SDK: $androidsdk"
echo -e "\t[+] IOS SDK: $iossdk"
echo -e "\t[+] ANDROID SDK (OLD VERSION): $androidsdk_old"
echo -e "\t[+] IOS SDK (OLD IOS): $iossdk_old"
versions="| *VERSIÓN* | *FECHA* | *ANDROID SDK* | *IOS SDK* |\n|$(version)|$(date +"%d/%m/%Y")|"
if [ "$androidsdk" != "$androidsdk_old" ];then
versions="$versions *$androidsdk* |"
android_changelog_version=$androidsdk
else
android_changelog_version="0.0.0"
versions="$versions $androidsdk|"
fi
if [ "$iossdk" != "$iossdk_old" ];then
versions="$versions *$iossdk*|"
ios_changelog_version=$iossdk
else
ios_changelog_version="0.0.0"
versions="$versions $iossdk|"
fi
echo "##vso[task.setvariable variable=versions]$(echo $versions)"
echo "##vso[task.setvariable variable=android_changelog_version]$(echo $android_changelog_version)"
echo "##vso[task.setvariable variable=ios_changelog_version]$(echo $ios_changelog_version)"
displayName: Get Versions
- template: azure-templates/publish-changelog.yaml@sys_kubernetes_templates
parameters:
changelogId: $(Cordova_Changelog_id)
android_changelog_version: $(android_changelog_version)
ios_changelog_version: $(ios_changelog_version)
- template: azure-templates/release-table.yaml@sys_kubernetes_templates
parameters:
versions: $(versions)
releaseTable: CORDOVA_SDK_TABLE
confluence_release_page: $(CORDOVA_SDK_TABLE)
confluence_release_page_title: "SDK Automatic Release Table - Cordova Plugin"
bitbucket:
bitbucket_user: $(bitbucket_user)
bitbucket_pass: $(bitbucket_pass)