我在 GitHub 上有一个私有存储库,我的目标是每当有新的提交时,该存储库就会更新到 VPS。
我目前正在使用 SSH 操作登录服务器,找到存储库并从源中提取。 但问题是存储库是私有的,需要认证。 我尝试在全局 git config 中设置用户名和密码,但即使这样仍然需要认证。
我目前正在使用 SSH 操作登录服务器,找到存储库并从源中提取。 但问题是存储库是私有的,需要认证。 我尝试在全局 git config 中设置用户名和密码,但即使这样仍然需要认证。
我自己想出了解决方案。我进行的各种操作存在以下问题:我试图执行类似于 git pull https://${{ secrets.TOKEN }}@github.com/repo
的操作。
解决方案是将整个命令 git pull https://token@github.com/repo
作为一个密码,并通过SSH运行脚本:${{ secrets.SCRIPT }}
。
最终我的操作如下:
name: Remote SSH
on: [push]
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: executing remote ssh commands using password
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.IP }}
username: ${{ secrets.USER }}
password: ${{ secrets.PRIVATE_KEY }}
port: ${{ secrets.PORT }}
script: |
cd Repository
${{ secrets.SCRIPT}}
pm2 restart 0
- name: pass environment
uses: appleboy/ssh-action@master
env:
FOO: "BAR"
BAR: "FOO"
SHA: ${{ github.sha }}
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
port: ${{ secrets.PORT }}
envs: FOO,BAR
script: |
echo "I am $FOO"
echo "I am $BAR"
echo "sha: $SHA"
太好了,你的解决方案解决了我的问题!
我只是更改了命令,指定了我想要更新的分支,因为它没有很好地更新分支,所以我的解决方案是:
git pull https://${{secrets.PAT}}@github.com/repo.git branch_name
name: Remote SSH
on: [push]
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: executing remote ssh commands using password
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.IP }}
username: ${{ secrets.USER }}
password: ${{ secrets.PRIVATE_KEY }}
port: ${{ secrets.PORT }}
script: |
cd Repository
git fetch origin
git clean -df
${{ secrets.SCRIPT}}
pm2 restart 0