使用SSH在Azure Pipeline中检出git子模块

问题描述 投票:0回答:1

我尝试在Azure DevOps管道中通过ssh而不是https(如果使用“ Checkout子模块”,则默认通过ssh)检出git子模块。使用图片中的选项可以使用-但是对于开发人员来说,如果他们正在使用存储库,那么总是输入密码很烦人。enter image description here

为此,我按照以下说明添加了ssh key.我创建了一个公共密钥和一个私有密钥,并复制了known_host条目。

这是我的YAML文件摘要:

stages:
- stage: DeployBackend
jobs:
  - job: SSH
    steps:
      - task: InstallSSHKey@0
        inputs:
          knownHostsEntry: $(known_host)
          sshPublicKey: $(public_key)
          sshKeySecureFile: 'private_key_file'
  - job: Deploy
    steps:
      - checkout: self
        submodules: true
      - script: |
          -- here I run all docker commands to build the container and push it to Azure --
        displayName: "Deploy"

如果我使用SSH密钥将存储库克隆到本地计算机,则不会有任何问题。但是,如果我运行管道,它将在子模块结帐时崩溃:

请确保您具有正确的访问权限和存储库存在。致命:克隆'[email protected]:v3 / repoLink'进入子模块路径'/ home / vsts / work / 1 / s / app / submoduleFolder'失败克隆“ app / submoduleFolder”失败。重试计划的克隆到'/ home / vsts / work / 1 / s / app / submoduleFolder'...主机密钥验证失败了致命的:无法从远程存储库读取。

这是存储库中的.gitmodules文件-可以在本地正常运行,没有任何问题:

[submodule "app/subModuleName"]
    path = app/subModuleName
    url = [email protected]:v3/***/subModuleName
    branch = master

我什至用脚本将id_rsaknown_hostsid_rsa.pub文件写入了.ssh,但似乎它们甚至没有用于ssh验证。

更新

解决方案是同时完成所有任务。变量不在不同的job实例之间共享。

ssh azure-devops git-submodules
1个回答
0
投票

解决方案是同时完成所有任务。变量不在不同的job实例之间共享。

此作品:

jobs:
    - job: jobName
      steps:
        - task: AzureKeyVault@1
          inputs:
            azureSubscription: '***'
            KeyVaultName: '***'
          displayName: "Read Secrets from KeyVault"
        - task: InstallSSHKey@0
          inputs:
            knownHostsEntry: $(known_host)
            sshPublicKey: $(public_key)
            sshKeySecureFile: 'private_key_file'
          displayName: "Create SSH files"
        - script: |
            git clone --recurse-submodules [email protected]:v3/****
            git submodule update --init --recursive
            docker login -u $(userName) -p $(password) ***
            docker build ****
            docker push ****
          displayName: "Build and Push Docker Container"
© www.soinside.com 2019 - 2024. All rights reserved.