fitlien-services/fitlien-services-pipeline.yaml

96 lines
2.8 KiB
YAML

trigger:
- main
pool:
vmImage: "ubuntu-latest"
variables:
major: $(VERSION_MAJOR)
minor: $(VERSION_MINOR)
prefix: $[format('{0}.{1}', variables['major'], variables['minor'])]
patch: $[counter(variables['prefix'], 100)]
buildNumber: $(major).$(minor).$(patch)
steps:
- task: PowerShell@2
displayName: "Setting build version"
inputs:
targetType: "inline"
script: |
Write-Host "##vso[build.updatebuildnumber]$(buildNumber)"
- task: UseNode@1
displayName: "Setting up node"
inputs:
version: "22"
- task: Bash@3
inputs:
targetType: "inline"
script: |
rm -rf node_modules
npm clean-install
workingDirectory: "$(System.DefaultWorkingDirectory)/functions"
- task: PowerShell@2
displayName: "Set version in package.json"
inputs:
targetType: "inline"
script: |
$pkg = Get-Content -Path "$(System.DefaultWorkingDirectory)/functions/package.json" -Raw | ConvertFrom-Json
$pkg.version = "$(buildNumber)"
$pkg | ConvertTo-Json -Depth 100 | Set-Content -Path "$(System.DefaultWorkingDirectory)/functions/package.json"
- task: CmdLine@2
displayName: "Copy .env.example to .env"
inputs:
script: |
cp "$(System.DefaultWorkingDirectory)/functions/.env.example" "$(System.DefaultWorkingDirectory)/functions/.env"
- task: replacetokens@6
displayName: "Replace tokens in .env file"
inputs:
root: "$(System.DefaultWorkingDirectory)/functions/"
sources: .env
- task: CmdLine@2
displayName: "install firebase tools"
inputs:
script: curl -sL firebase.tools | upgrade=true bash
workingDirectory: $(Agent.ToolsDirectory)
- task: Bash@3
displayName: "Deploy functions to firebase"
inputs:
targetType: "inline"
workingDirectory: "$(Build.SourcesDirectory)"
script: |
npm install -g typescript
cd functions
npm install
npm run build
cd $(Build.SourcesDirectory)
firebase deploy --only functions --token '$(FIREBASE_TOKEN)' --non-interactive
- task: DeleteFiles@1
displayName: "Remove node_modules, *.log files, src directory from functions directory"
inputs:
SourceFolder: "$(System.DefaultWorkingDirectory)/functions"
Contents: |
node_modules/**
*.log
- task: ArchiveFiles@2
displayName: "Archive functions directory"
inputs:
rootFolderOrFile: "$(System.DefaultWorkingDirectory)/functions"
includeRootFolder: false
archiveFile: "$(System.DefaultWorkingDirectory)/fitlien-services-$(buildNumber).zip"
- task: CopyFiles@2
displayName: "Copy archive to staging directory"
inputs:
SourceFolder: "$(System.DefaultWorkingDirectory)"
Contents: "fitlien-services-$(buildNumber).zip"
TargetFolder: "$(System.ArtifactsDirectory)"