每当我将更改推送到主分支时,我想在我的 VPS 上自动部署我的私有存储库。我的 yaml 文件如下所示:
name: push-and-deploy-to-server
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: checkout repo
uses: actions/checkout@v2
- name: ssh and deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: 22
script: |
git pull origin main
git status
npm install --only=prod
pm2 restart index.js
这不起作用,我收到以下错误:
err: fatal: could not read Username for 'https://github.com': No such device or address
当通过 ssh 进入我的服务器并自己克隆存储库时,它会要求我提供用户名和密码(访问令牌)。当我提供它时,它可以工作,但使用 yaml 文件时,它不起作用。
如何克隆和部署私有存储库?顺便说一句,这是一个 Nodejs 项目。
考虑您的设置
您当前的配置和 github 机密设置有何作用?
appleboy/ssh-action@master
ssh 进入您的 VPS git pull origin main
。您遇到的问题是您的 VPS 未经过身份验证,无法访问您的存储库。
您有多种选择。
${{ secrets.SSH_USERNAME }}
,并使用您的 Github 个人访问令牌针对 github 验证该用户,您可以在 https://github.com/settings/tokens 下生成该令牌,并赋予其读取存储库权限。然后测试您是否可以将您的存储库克隆到 VPS 中,如果可以,那么您的下一个构建将会成功。${{ secrets.SSH_USERNAME }}
生成新的 ssh 密钥,并将其添加到存储库设置部署密钥下。使用部署密钥时,您需要确保 vps 中的远程存储库使用的是 [email protected]:<username>/<repository>.git
git url 而不是 https
url。appleboy/scp-action
之前使用step
appleboy/ssh-action
并将所有内容从当前目录复制到您的VPS,然后使用npm install
运行您的appleboy/ssh-action
等。如果您的服务器上安装了 git,您可以继续操作。但是scp项目也可以将代码直接部署到您的服务器。
name: push-and-deploy-to-server
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: checkout repo
uses: actions/checkout@v2
- name: ssh and deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "."
target: "the/server/path"
我使用了 IP 地址而不是域名,因为我感觉我的托管服务正在搞砸我。 查看此网址了解更多详情
@Sam Leurs 你找到解决方案了吗?