почему конвейер сборки azure не создает папку dist для сборки angular
Похоже, что папка, которая создается во время сборки, удаляется до того, как я смогу запустить любую другую папку с задачами dist.
trigger:
- master
pool: default
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- script: |
npm install -g @angular/cli
npm install
ng build --prod
displayName: 'npm install and build'
#i added this task and it seems like the node_modules and the dist
#folder that was generated during the build are not getting copied to the (a)directory
#only the source code get copied. it seems like the folders are getting
#deleted even before the #PublishPipelineArtifact@1 task ran
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Pipeline.Workspace)/s'
publishLocation: 'pipeline'
Я также пытаюсь вывести сборку в
3 ответа
Во-первых, отдельно
npm install
скрипт со скриптом. Во-вторых, я бегал
npm build
вместо того
ng build
. Мне потребовалось несколько часов, чтобы заметить. Это решило проблему отсутствия создания моей папки dist.
- script: |
npm install
displayName: 'npm install'
- script: |
ng build --prod
displayName: 'ng build'
У меня была такая же проблема, когда мне не удалось найти папку dist, но, похоже, мне не хватало только ./ перед dist в задаче CopyFiles@2 .
Ниже приведен рабочий конвейер сборки для ветки dev/main приложения angular.
trigger:
- main
- dev
pool:
vmImage: ubuntu-latest
jobs:
- job: 'Dev_build'
condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/dev'))
steps:
- task: NodeTool@0
inputs:
versionSpec: '16.x'
displayName: 'Install Node.js'
- script: |
npm install -g @angular/cli
npm install
ng build --configuration test
displayName: 'npm install and build'
# Used to diagnostic the file structure
# - task: Bash@3
# inputs:
# targetType: 'inline'
# script: 'find -name node_modules -prune -o -print'
- task: CopyFiles@2
inputs:
SourceFolder: './dist'
Contents: '**'
TargetFolder: '$(build.artifactstagingdirectory)'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact'
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
ArtifactName: 'www'
- job: 'Prod_build'
condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/main'))
steps:
- task: NodeTool@0
inputs:
versionSpec: '16.x'
displayName: 'Install Node.js'
- script: |
npm install -g @angular/cli
npm install
ng build --configuration --production
displayName: 'npm install and build'
- task: CopyFiles@2
inputs:
SourceFolder: './dist'
Contents: '**'
TargetFolder: '$(build.artifactstagingdirectory)'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact'
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
ArtifactName: 'www'
Pipeline.Workspace
относится к /home/vsts/work/1
находится ли ваш исходный код в c:\agent_work\1\s
(System.DefaultWorkingDirectory
). Итак, если ваш проект находится непосредственно в вашей корневой папке, вы сможете опубликовать папку dist, используя это:
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(System.DefaultWorkingDirectory)/dist'
Также обратите внимание, что PublishPipelineArtifact@1 не имеетpublishLocation
свойство. Напротив, PublishBuildArtifacts@1 имеет.