Использование переменных среды в запросе cURL для Devops Azure - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь загрузить zip-файл в Netlify с помощью задачи командной строки, используя cURL в Azure DevOps.

Очевидно, я не хочу, чтобы мой токен доступа Netlify был в файле yaml, поэтому яМы создали для него секретную переменную (с помощью дизайнера пользовательского интерфейса) и сопоставили ее с помощью синтаксиса в docs .

Однако я продолжаю получать 401 от Netlify.Я могу подтвердить через POSTMAN, что токен доступа действителен.Так что я не уверен, что я делаю не так здесь.Я неправильно использую переменные env в запросе?

вот часть файла YAML, которая касается загрузки файла.

- script:  >-
      curl
      -H 'Authorization: Bearer $env:ACCESS_TOKEN' 
      -H 'Content-Type: application/zip'
      --data-binary '@$(Build.BuildId).zip'
      https://api.netlify.com/api/v1/sites/$env:SITE_ID/deploys
  workingDirectory: '$(Build.ArtifactStagingDirectory)'
  displayName: 'Upload to Netlify'
  env: 
    ACCESS_TOKEN: $netlifyAccessToken
    SITE_ID: $netlifySiteId

Ответ от Netlify:

{"code":401,"message":"Access Denied: Origin returned bad status 401"}` 

РЕДАКТИРОВАТЬ:

Ниже приведен полный файл YAML после того, как мне удалось заставить его работать, используя синтаксис 'input-macro' из документов

trigger:
- master

pool:
  vmImage: 'Ubuntu-16.04'

variables:
  configuration: debug
  platform: x64

steps:
- task: DotNetCoreInstaller@0
  displayName: Install .NET Core SDK
  name: install_dotnetcore_sdk
  enabled: true
  inputs:
    packageType: 'sdk'
    version: '2.2.101'

- script: dotnet tool install -g Wyam.Tool
  displayName: Install Wyam

- script: wyam
  displayName: Build Site 

- task: ArchiveFiles@2
  displayName: Zip Site
  inputs:
    rootFolderOrFile: '$(Agent.BuildDirectory)/s/output' 
    includeRootFolder: true
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip' 
    replaceExistingArchive: true

- script:  >-
      curl
      -H 'Authorization: Bearer $(netlifyAccessToken)' 
      -H 'Content-Type: application/zip'
      --data-binary '@$(Build.BuildId).zip'
      https://api.netlify.com/api/v1/sites/$(netlifySiteId)/deploys
  workingDirectory: '$(Build.ArtifactStagingDirectory)'
  displayName: 'Upload to Netlify'

1 Ответ

0 голосов
/ 28 декабря 2018

вам нужно использовать синтаксис bash для получения для этого переменной среды, а не powershell (поскольку вы используете bash, а не powershell):

-H "Authorization: Bearer $ACCESS_TOKEN"

Я также подозреваю, что вам нужно обновить объявление env:

env: 
  ACCESS_TOKEN: $(netlifyAccessToken) << ADO token to replace with variable from build scope
  SITE_ID: $(netlifySiteId)
...