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" - 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: DeleteFiles@1 displayName: "Remove node_modules, *.log files, src directory from functions directory" inputs: SourceFolder: "$(System.DefaultWorkingDirectory)/functions" Contents: | node_modules/** *.log src/** - 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)" - 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: $(Agent.ToolsDirectory)