我用一个 API 函数构建了一个 Azure 静态 Web 应用程序,该函数具有一个依赖项。此依赖项位于 GitHub 上的私有存储库中。在我的本地开发机器上,我可以通过使用 SSH 身份验证下载依赖项来构建 Functions 应用程序。尝试使用 GitHub Actions 部署到 Azure 时出现错误Host key verification failed
。
我的 GitHub Actions 工作流程类似于 Azure 静态 Web 应用程序生成的默认工作流程,增加了使用webfactory/ssh-agent来促进 GitHub 上的 SSH 身份验证以检索私有存储库Y和一个git clone
用于测试目的的运行步骤:
# ... Same as on https://docs.microsoft.com/en-us/azure/static-web-apps/github-actions-workflow
jobs:
build_and_deploy_job:
runs-on: ubuntu-latest
name: Build and Deploy Job
steps:
- uses: actions/checkout@v2
with:
submodules: true
persist-credentials: false
- uses: webfactory/ssh-agent@v0.5.1
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE }}
- run: |
git clone ssh://git@github.com/X/Y.git Z
ls -la Z
- name: Build And Deploy
id: builddeploy
uses: Azure/static-web-apps-deploy@v0.0.1-preview
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_TOKEN }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
action: "upload"
app_location: "/"
api_location: "api"
output_location: "build"
# ... Same as on https://docs.microsoft.com/en-us/azure/static-web-apps/github-actions-workflow
在我的私有存储库Y中,我添加了与私有密钥关联的公钥secrets.SSH_PRIVATE
作为部署密钥。
运行工作流后,它显示git clone
命令运行正确,因为该ls -la
命令会显示我的私有存储库中的目录和文件。但是,当 yarn 获取包时,我的 API ( ) 的构建过程会yarn install --prefer-offline --production
导致错误。Host key verification failed
结果,GitHub Actions 无法下载我的私有存储库中的依赖项,也无法构建 API。这以失败的工作流程结束。