在 Azure Devops 上的 cURL 请求中使用环境变量
Using Environment Variables in a cURL request on Azure Devops
我正在尝试使用 Azure DevOps 上的 cURL 通过命令行任务将 zip 文件上传到 Netlify。
显然我不想在 yaml 文件中使用我的 Netlify 访问令牌,所以我为它创建了一个秘密变量(使用 UI 设计器)并使用docs。
但是我一直从 Netlify 收到 401 回复。我可以通过 POSTMAN 确认访问令牌有效。所以我不确定我在这里做错了什么。我是否在请求中错误地使用了环境变量?
这是处理上传文件的 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"}`
编辑:
下面是我使用 docs
中的 'input-macro' 语法使其工作后的完整 YAML 文件
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'
你需要使用 bash 语法来检索环境变量,而不是 powershell(因为你使用的是 bash,而不是 powershell):
-H "Authorization: Bearer $ACCESS_TOKEN"
我还怀疑您需要更新环境声明:
env:
ACCESS_TOKEN: $(netlifyAccessToken) << ADO token to replace with variable from build scope
SITE_ID: $(netlifySiteId)
我正在尝试使用 Azure DevOps 上的 cURL 通过命令行任务将 zip 文件上传到 Netlify。
显然我不想在 yaml 文件中使用我的 Netlify 访问令牌,所以我为它创建了一个秘密变量(使用 UI 设计器)并使用docs。
但是我一直从 Netlify 收到 401 回复。我可以通过 POSTMAN 确认访问令牌有效。所以我不确定我在这里做错了什么。我是否在请求中错误地使用了环境变量?
这是处理上传文件的 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"}`
编辑:
下面是我使用 docs
中的 'input-macro' 语法使其工作后的完整 YAML 文件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'
你需要使用 bash 语法来检索环境变量,而不是 powershell(因为你使用的是 bash,而不是 powershell):
-H "Authorization: Bearer $ACCESS_TOKEN"
我还怀疑您需要更新环境声明:
env:
ACCESS_TOKEN: $(netlifyAccessToken) << ADO token to replace with variable from build scope
SITE_ID: $(netlifySiteId)