如何使用 Github Actions 进行 SFTP?
Posted
技术标签:
【中文标题】如何使用 Github Actions 进行 SFTP?【英文标题】:How to SFTP with Github Actions? 【发布时间】:2020-12-21 03:03:52 【问题描述】:当我推送到 Github 时,我想使用 Github 操作通过 SFTP(此服务器的唯一选项)将文件传输到远程服务器。
我正在使用此操作https://github.com/marketplace/actions/ftp-deploy
我在 .github/workflows/main.yml
的仓库中创建了一个文件,并添加了:
on: push
name: Publish Website
jobs:
FTP-Deploy-Action:
name: FTP-Deploy-Action
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.1.0
with:
fetch-depth: 2
- name: FTP-Deploy-Action
uses: SamKirkland/FTP-Deploy-Action@3.1.1
with:
ftp-server: $ secrets.FTP_SERVER
ftp-username: $ secrets.FTP_USERNAME
ftp-password: $ secrets.FTP_PASSWORD
我为此 repo 创建了一个 Secret,其中包含以下内容:
FTP_SERVER: sftp.server.com, FTP_USERNAME: user, FTP_PASSWORD: password
我可以看到在 Github 中运行的操作,但它在 FTP-Deploy-Action
任务上出错。
##[错误]需要输入但未提供:ftp-server
这是保密的,并且适用于 Filezilla。
有人知道我是否设置错了吗?
【问题讨论】:
您可以尝试使用原始服务器 url、用户名和密码(而不是密码)来查看错误是否消失?通过 github 操作的 SFTP 的一个常见问题是提示接受服务器证书。您可以使用git-ftp-args: --insecure
绕过它
是的@manishg 硬编码值有效。我想知道为什么 Secrets 没有
您的操作日志中有任何线索吗?
请注意,4.0 版已删除 sftp 支持。详情见SamKirkland/FTP-Deploy-Action Release Notes
【参考方案1】:
我能够让它在我自己的仓库中运行。我认为问题可能在于您的秘密是如何设置的。该错误通常显示何时未提供 github 操作的所需参数,因此好奇键是否不同或它们是否保存为空。我会删除 FTP_SERVER
秘密并再次创建它以确保。
Workflow Success Run
Workflow Code
- name: FTP-Deploy-Action
uses: SamKirkland/FTP-Deploy-Action@3.1.1
with:
ftp-server: $ secrets.FTP_SERVER
ftp-username: $ secrets.FTP_USERNAME
ftp-password: $ secrets.FTP_PASSWORD
local-dir: toupload
更新:为下方留下的每条评论添加示例,
供参考的秘密创建示例。基本上为每个条目创建一个秘密,而不是用逗号分隔的分组秘密
来源:https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets
【讨论】:
很奇怪。只是好奇:你的秘密是如何建立的?逗号是否像我上面的那样分开?在新线路上? 每个条目一个秘密。意思是,秘密名称是 FTP_SERVER 并且使用您的示例的值是 sftp.server.com 然后对其他两个秘密重复相同的操作。我更新了上面的响应,所以你可以看到为 FTP_SERVER 创建的秘密 哦!我以为它们是一组键值对!谢谢! 我收到错误:进程“/usr/bin/git”失败,退出代码为 5,SamKirkland/FTP-Deploy-Action@3.1.1 和您提供的相同密钥?有什么我可以做的吗? @realarb 将 git-ftp-args: --insecure 放在 .yml 文件中的 ftp-password 参数后面以上是关于如何使用 Github Actions 进行 SFTP?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 GitHub Actions 工作流程中进行 apt-get install?