我正在尝试将存储库从 GitHub 克隆到远程服务器。
我的解决方案使用 appleboy/ssh-action GitHub 操作正在运行,但有人告诉我可以使用 来实现相同的操作操作/结帐@v2 GitHub 操作。
我试图改变 - 用途:值为 操作/结帐@V2 ` 但是代码不起作用。
我找不到任何关于如何使用 的模板操作/结帐@v2 .任何建议将不胜感激。
name: deploy to a server on push
on:
push:
branches: [ master ]
jobs:
deploy-to-server:
runs-on: ubuntu-latest
steps:
- uses: appleboy/ssh-action@master
with:
host: 123.132.123.132
username: tomas
key: ${{ secrets.PRIVATE_KEY }}
port: 59666
script:
git clone https://github.com/Tomas-R/website.git
最佳答案
作为 actions/checkout@v2
的文档说
This action checks-out your repository under $GITHUB_WORKSPACE, so your workflow can access it.
steps:
- name: Checkout the repo
uses: actions/checkout@v2
with:
# This will create a directory named `my-repo` and copy the repo contents to it
# so that you can easily upload it to your remote server
path: my-repo
要将此 checkout 的 repo 复制到远程服务器,您可以使用 scp
命令如下。 # Runs a set of commands using the runners shell
- name: Upload repo to remote server
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
run: |
ssh-agent -a $SSH_AUTH_SOCK > /dev/null
ssh-add - <<< "${{ secrets.PRIVATE_KEY }}"
scp -o StrictHostKeyChecking=no -r -P 59666 my-repo tomas@123.132.123.132:/target/directory
通过使用上述命令,我们,ssh-agent
并将其绑定(bind)到已知位置。 my-repo
复制内容到远程服务器上的目标目录。 这样,私钥永远不会被写入磁盘/被暴露。
还有另一种更简单的方法来运行
scp
使用 Copy via ssh GitHub 操作。 - name: Copy folder content recursively to remote
uses: garygrossgarten/github-action-scp@release
with:
local: my-repo
remote: ~/target/directory
host: 123.132.123.132
port: 59666
username: tomas
privateKey: ${{secrets.PRIVATE_KEY}}
关于github-actions - git : Using actions/checkout@v2 instead of appleboy/ssh-action@master to clone repository to a server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68132791/