95 lines
2.8 KiB
YAML
95 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: "20"
|
|
|
|
- task: Npm@1
|
|
displayName: "npm install"
|
|
inputs:
|
|
command: "install"
|
|
workingDir: "$(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: Npm@1
|
|
displayName: "npm run build"
|
|
inputs:
|
|
command: "custom"
|
|
workingDir: "$(System.DefaultWorkingDirectory)/functions"
|
|
customCommand: "run build"
|
|
|
|
- task: CmdLine@2
|
|
displayName: "install firebase tools"
|
|
inputs:
|
|
script: curl -sL firebase.tools | upgrade=true bash
|
|
workingDirectory: $(Agent.ToolsDirectory)
|
|
|
|
- task: CmdLine@2
|
|
displayName: "Deploy functions to firebase"
|
|
inputs:
|
|
script: firebase deploy --only functions --token $(FIREBASE_TOKEN)
|
|
workingDirectory: "$(System.DefaultWorkingDirectory)"
|
|
|
|
- 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"
|
|
compression: "zip"
|
|
|
|
- task: CopyFiles@2
|
|
displayName: "Copy archive to staging directory"
|
|
inputs:
|
|
SourceFolder: "$(System.DefaultWorkingDirectory)"
|
|
Contents: "fitlien-services-$(buildNumber).zip"
|
|
TargetFolder: "$(System.ArtifactsDirectory)"
|