如何解决Git:使用 actions/checkout@v2 而不是 appleboy/ssh-action@master 将存储库克隆到服务器
我正在尝试将存储库从 GitHub 克隆到远程服务器。
我使用 appleboy/ssh-action GitHub 操作的解决方案有效,但我被告知使用 actions/checkout@v2 GitHub 操作也可以实现相同的效果。 我试图将 - uses: 值更改为 actions/checkout@V2`,但代码不起作用。
我找不到关于如何使用 actions/checkout@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
的文档所说
此操作会在 $GITHUB_WORKSPACE 下检出您的存储库,以便您的工作流程可以访问它。
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
要将此签出的存储库复制到远程服务器,您可以使用 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
并将其绑定到已知位置。 - 将私钥从 secret 导入到 ssh-agent。
- 将内容从
my-repo
复制到远程服务器上的目标目录。
这样,私钥永远不会写入磁盘/被暴露。
还有另一种使用 Copy via ssh GitHub 操作运行 scp
的更简单方法。
- 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}}
,
actions/checkout documentation for private repository 上有关于此场景的一些信息吗?
要签出私人回购:
- name: Checkout private tools
uses: actions/checkout@v2
with:
repository: my-org/my-private-tools
token: ${{ secrets.GitHub_PAT }} # `GitHub_PAT` is a secret that contains your PAT
path: my-tools
${{ github.token }} 的范围是当前存储库,所以如果你 想要签出您需要的其他私有存储库 提供您自己的 PAT。
因此,在您的情况下,使用 Tomas-R
和 website
以及秘密 PRIVATE_KEY
,工作流程应如下所示:
- name: Checkout private tools
uses: actions/checkout@v2
with:
repository: Tomas-R/website
token: ${{ secrets.PRIVATE_KEY }} # Where `PRIVATE_KEY` is a secret that contains your PAT
path: .
但正如您所说,[克隆存储库](克隆操作排序:匹配描述)还有其他选项。不强制执行任何操作(其中一些可能更安全,质量/灵活性更高,或者更符合您的上下文)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。