当我尝试将 .net core 2.2 webapi 发布到我的 azure 应用程序服务(通过使用 Azure 应用程序服务部署的 azure devops 或通过 Visual Studio 发布方法)时,我不断收到:“您正在查找的资源已被删除,其名称已被删除已更改,或暂时不可用。”
但是当我直接使用 Visual Studio 发布它(没有包或 zip 配置)时,它就可以工作了。(但我们不能继续这样做,因为我们需要它在 azure devops 管道上工作)。
我尝试使用 dotnet build/publish 和 vsbuild 以不同的方式构建项目。我还尝试使用不同的发布方法(zip、package、web 部署)。
我仔细检查了生成的 xml 文件(deploy.cmd、deploy-readme、parameters、setparametersa 和 sourcemanifest),检查是否存在错误的命名问题,或者文件夹结构是否不正确,但一切都正确匹配。我的项目所在的 zip 文件也与所有生成的 xml 文件(根)位于同一位置。
奇怪的是,它之前可以正常工作,而我们正在使用 terraform 来生成天蓝色资源。所以我们扔掉了手动制作的资源并使用 terraform 重新制作了它们,然后我们得到了错误。我们没有改变管道上的任何内容。
yaml 从管道构建代码:
trigger:
- master
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true …Run Code Online (Sandbox Code Playgroud) msbuild webdeploy azure-web-app-service azure-devops terraform-provider-azure
我已从 Azure Devops 用户界面生成了个人访问令牌,但无法使用它向 Devops API 发出请求。
我尝试了许多不同的标头字段,但我总是被重定向到登录页面,就好像我没有经过身份验证一样。
token = #Token generated on Devops project page
token_bytes = token.encode('utf-8')
token64 = base64.b64encode(token_bytes)
authorization_string = "basic " + str(token64)
repo_endpoint_url = "https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=5.1".format(organization=organization, project=project)
headers = {"Content-Type" : "application/json", "Authorization" : authorization_string}
response = requests.get(repo_endpoint_url, headers)
Run Code Online (Sandbox Code Playgroud)
响应始终为 203,登录页面为 HTML。如果标头中没有访问令牌,这就是我期望看到的内容。
我尝试过使用“Bearer”而不是“basic”,我尝试过添加 {username}:{token} 以及许多其他小调整。
我究竟做错了什么?
python request access-token azure-devops azure-devops-rest-api
NPM 已通过 Azure DevOps 代理安装在我的 mac os Mojave v10.14.6 上。我可以访问 npm 但任何命令都会给出相同的错误。这是唯一有效的命令 sudo npm --version =6.12.0 sudo npm -p process.platform = darwin
这与我在任何其他命令中收到的错误消息相同:
错误:EISDIR:对目录进行非法操作,读取 TypeError:无法在退出时读取未定义的属性“加载”(/usr/local/lib/node_modules/npm/lib/utils/error-handler.js:97:27) errorHandler (/usr/local/lib/node_modules/npm/lib/utils/error-handler.js:216:3) 位于 /usr/local/lib/node_modules/npm/bin/npm-cli.js:78:20在 cb (/usr/local/lib/node_modules/npm/lib/npm.js:225:22) 在 /usr/local/lib/node_modules/npm/lib/npm.js:263:24 在 /usr/local /lib/node_modules/npm/lib/config/core.js:81:7 at Array.forEach () at /usr/local/lib/node_modules/npm/lib/config/core.js:80:13 at f ( /usr/local/lib/node_modules/npm/node_modules/once/once.js:25:25)在最终确定(/usr/local/lib/node_modules/npm/lib/config/core.js:187:14)/ usr/local/lib/node_modules/npm/lib/utils/error-handler.js:97 var doExit = npm.config.loaded ?npm.config.get('_exit') : true
我已经从nodejs.org下载了最新版本的节点版本,但这没有帮助。我相信问题是它缺少 .npmrc 但我可能是错的。我运行了locate命令,以下是deb/myagent下的所有结果,都是用于构建应用程序的azure devops拉取源:
Mac-mini:/sedev$ 定位 .npmrc
/Applications/Xcode.app/Contents/Developer/usr/share/xcs/xcsd/node_modules/nsp/node_modules/npmconf/test/fixtures/.npmrc
/Applications/Xcode.app/Contents/Developer/usr/share/xcs/xcsd/node_modules/nsp/node_modules/silent-npm-registry-client/node_modules/npm-registry-client/node_modules/npmlog/.npmrc
/Users/sedev/.npmrc
/Users/sedev/myagent/_work/10/s/app.WebUi/wwwroot/bower_components/vaadin-checkbox/.npmrc
/Users/sedev/myagent/_work/10/s/app.WebUi/wwwroot/bower_components/vaadin-control-state-mixin/.npmrc
/Users/sedev/myagent/_work/10/s/app.WebUi/wwwroot/bower_components/vaadin-element-mixin/.npmrc
/Users/sedev/myagent/_work/10/s/app.WebUi/wwwroot/bower_components/vaadin-grid/.npmrc
/Users/sedev/myagent/_work/10/s/app.WebUi/wwwroot/bower_components/vaadin-grid-5.0.0-alpha6/.npmrc
/Users/sedev/myagent/_work/10/s/app.WebUi/wwwroot/bower_components/vaadin-icons/.npmrc
/Users/sedev/myagent/_work/10/s/app.WebUi/wwwroot/bower_components/vaadin-text-field/.npmrc
/Users/sedev/myagent/_work/10/s/app.WebUi/wwwroot/bower_components/vaadin-themable-mixin/.npmrc
Mac-mini:/ sedev$
Run Code Online (Sandbox Code Playgroud) 我想在 bash 任务中生成一个密码。我想出了以下几点:
- task: Bash@3
displayName: 'Bash generate password'
inputs:
targetType: 'inline'
script: |
password=$(cat /dev/urandom | tr -dc 'A-Za-z0-9_!@#$%^&*()\-+=' | fold -w 32 | head -n 1)
echo "##vso[task.setvariable variable=password]$password"
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎不起作用,因为任务会永远运行。代理是Linux机器。
我们有一个 Azure DevOps Pipeline,它以 ZIP 包https://learn.microsoft.com/en-us/azure/app-service/deploy-run-package的形式运行我们的应用程序 ,而不是 ZIP Deploy。因此,我们无法通过 SFTP 进入我们的 Web 应用程序并进行更改。为什么 Pipeline 将我们的应用程序作为 ZIP 包运行,我们如何更改它?这是管道:
trigger: none
pool:
vmImage: 'windows-latest'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: 'Solution1.sln'
- task: VSBuild@1
inputs:
solution: '$(agent.builddirectory)\s\Folder\Project.csproj'
msbuildArgs: '/p:OutputPath="$(build.binariesDirectory)\Folder\bin" /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:SkipInvalidConfigurations=true /p:publishUrl="$(build.artifactStagingDirectory)\ProjectTempFolder"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: CopyFiles@2
inputs:
SourceFolder: '$(build.artifactStagingDirectory)\ProjectTempFolder'
Contents: |
**
TargetFolder: '$(build.ArtifactStagingDirectory)\ProjectArtifacts'
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(build.ArtifactStagingDirectory)\ProjectArtifacts'
includeRootFolder: false
archiveType: 'zip'
archiveFile: '$(build.ArtifactStagingDirectory)\Project.zip'
replaceExistingArchive: true
- task: PublishBuildArtifacts@1
inputs: …Run Code Online (Sandbox Code Playgroud) 我正在 Azure 中设置应用程序 CI/CD,但我不明白为什么它在构建过程中仍然失败。
这是我的 yaml
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
steps:
- task: NodeTool@0
inputs:
versionSpec: '8.x'
displayName: 'Install Node.js'
- script: |
npm install
displayName: 'npm install'
- script: |
npm uninstall -g angular-cli
npm cache clean or npm cache verify #(if npm > 5)
npm install -g @angular/cli@7.1.4
displayName: 'npm install @angular/cli'
- script: |
ng build --prod
displayName: 'npm build'
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '/src/app/dist/my-app'
includeRootFolder: true
archiveType: 'zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
replaceExistingArchive: trueRun Code Online (Sandbox Code Playgroud)
我以为是 …
有什么方法可以运行具有稳定分支的功能分支更改的管道吗?
1)我有 2 个分支,分别称为 develop和feature。
develop2)我正在尝试在分支与分支之间执行拉取请求feature。
3)我已经在开发分支策略下进行了配置以运行成功的管道。使用了以下文档
4)当我们运行拉取请求时,它会合并并在分支更改的develop分支上运行管道feature还是仅在develop分支上运行管道?
坦率地说,我的问题是,当启动 PR 时,它会处理子分支与源分支的新更改并在源分支上运行管道吗?
谢谢!
我有一个用 YAML 编写的 Azure Pipeline,只要对分支进行更改,它就会从 CI 触发器运行master。它还可以从拉取请求或由用户针对任何分支手动触发。
由于使用了许多许可组件,因此构建master需要在特定代理上运行。其他版本则不然,事实上我宁愿它们在其他代理上运行。
所以我的问题是,有没有办法根据触发构建的内容或构建正在构建的分支来在 YAML 管道中指定不同的代理/池?我希望这是在管道中永久配置的行为,而不是要求用户在他们希望在其他地方构建的每个分支上更新 YAML。
我在有关池/需求/条件关键字的文档部分中看不到任何明显的内容。
我有一个用于构建管道的模板存储库,名为“azure-templates-repo”,我有 python 任务模板,如下所述:
steps:
- task: PythonScript@0
inputs:
scriptSource: 'filepath'
scriptPath: 'python_test.yml' #this is located on repo: 'azure-templates-repo'
Run Code Online (Sandbox Code Playgroud)
azure-pipeline.yml我的问题是关于 scriptPath,当我在存储库的构建管道中使用此模板时,azure 尝试在文件真正所在的位置my-great-app查找该文件。my-great-appazure-templates-repo
那么,有没有办法提及 azure 任务“pythonScript”的 filePath 参数的存储库?
我正在使用天蓝色的构建和发布管道。据我了解,构建管道会生成可供发布管道使用的工件,并且部署可以组织成多个阶段,并提供部署/重新部署阶段的选项。
但是,我还注意到发布管道中可用的所有任务也可以在构建管道中使用。构建管道的文档还指出它可用于构建、测试和部署。那么使用发布管道到底有什么好处呢?
azure azure-devops azure-pipelines-build-task azure-pipelines azure-pipelines-release-pipeline
azure-devops ×10
azure ×4
access-token ×1
angular ×1
azure-pipelines-release-pipeline ×1
bash ×1
git ×1
macos ×1
msbuild ×1
npm ×1
python ×1
request ×1
webdeploy ×1