使用Workflow自动上传文件
基本操作流程
- 设置服务器地址、用户名、密码和远程路径
1 | SERVER="your_server" |
- 设置本地文件夹路径
1 | LOCAL_FOLDER_PATH="/path/to/local/folder" |
- 使用 scp 命令上传文件夹
1 | sshpass -p "$PASSWORD" scp -r "$LOCAL_FOLDER_PATH""$USERNAME@$SERVER:$REMOTE_PATH" |
- 您可以使用
GitHub Secrets
来安全地存储敏感信息,例如密码、密钥或访问令牌等。下面是一个简单的例子,它演示了如何在工作流中使用GitHub Secrets
来存储和使用SSH
密码。
- 在您的 GitHub 仓库中,导航到
Settings
选项卡,然后单击Secrets
。 - 单击
New repository secret
按钮,然后输入一个名称(例如SSH_PASSWORD
)和您的SSH
密码。单击Add secret
按钮保存您的密钥。 - 在您的工作流文件中,您可以使用
${{ secrets.SSH_PASSWORD }}
来引用您刚才存储的密钥。例如:
1 | jobs: |
注解
在上面的示例中,我们使用
${{ secrets.SSH_PASSWORD }}
来引用存储在GitHub Secrets
中的SSH
密码。这样,我们就可以在工作流中安全地使用这个密码,而不必担心泄露敏感信息。actions/checkout@v2
是一个GitHub Action
,它可以检出您的仓库代码。它的工作原理是使用git
命令来克隆您的仓库到工作流运行环境中。默认情况下,它只会获取触发工作流的那个ref/SHA
的单个提交。但您也可以通过设置fetch-depth: 0
来获取所有分支和标签的所有历史记录¹。此外,这个
Action
还会将身份验证令牌持久化到本地git
配置中。这样,您的脚本就可以运行经过身份验证的git
命令。在后续步骤中,该令牌会在后置作业清理期间被删除。您可以通过设置persist-credentials: false
来选择退出¹。简而言之,actions/checkout@v2
能够检出您的代码,是因为它使用了git
命令来克隆您的仓库,并将身份验证令牌持久化到本地git
配置中。希望这对您有所帮助!在上面给出的
shell
脚本示例中,我们使用了sshpass
命令来非交互式地提供SSH
密码。这样,我们就可以在脚本中使用scp
命令来上传文件夹,而不需要手动输入密码。如果您直接使用scp
命令,那么在执行命令时,系统会提示您输入密码。这在交互式环境中是可以的,但在脚本中就不太方便了。为了避免这种情况,我们使用了sshpass
命令来非交互式地提供密码。当然,除了使用密码登录,您还可以使用SSH
密钥来进行身份验证。这种方法更安全,也更方便。如果您希望使用SSH
密钥来进行身份验证,那么您就不需要使用sshpass
命令了。