type
status
date
slug
summary
category
tags
create_time
Jul 18, 2025 05:54 PM
icon
password
my_create_time

📝 前言

这是 DevOps 专题的第六篇,回顾一下前几篇的内容:
这一篇我们开始介绍如何使用 Gitea Actions(ssh-action)来完成远程部署,这是一种更为常见的部署方式。

🧭 背景介绍

Gitea Action 可用于自动化测试、打包构建,甚至是部署任务。
当代码合并到主分支时,可通过 Action 自动将代码部署到远程服务器,如生产环境、测试环境或内网机器,极大提升效率并降低人为失误。

📋 前提条件

在开始之前,请确保你已满足以下条件:
  • 拥有可 SSH 登录的远程服务器
  • Linux shell、SSH、Gitea 基本操作有一定了解

🚀 详细步骤

1️⃣ 下载离线 actions 和依赖

由于受到众所周知的网络环境影响,我们构建时使用的 action 并不能稳定下载,因此建议都手动下载,并上传到自己私有仓库中,这里在上一篇中也已经介绍过了。
另外ssh-action还依赖drone-ssh工具,也是需要我们下载并上传到私有的文件服务器上。
还有需要注意的是在推送官方action到自己的git仓库时,要把tag也一起推送,完整推送命令示例如下:
 

2️⃣ 文件服务器配置

这里就简单的使用 nginx 快速搭建一个文件服务器即可,参考配置如下:
PS:这里我一般都是会在/etc/nginx/sites-available/创建.conf文件,然后通过软链接的方式进行启用:ln -s /etc/nginx/sites-available/xxx.conf /etc/nginx/sites-enabled/
创建文件服务目录并设置权限:
下载drone-ssh工具,并设置执行权限:

3️⃣ 配置工作流

继续还是用上一篇文章的示例项目,修改.gitea/workflows/build.yaml文件:
配置变更说明:
  • 环境变量: 这次我们新加了3个全局变量,分别为 REMOTE_HOSTDRONE_SSH_RELEASE_URLDRONE_SSH_VERSION,第1个就不用说是需要部署到远程的服务器地址,第2、3个是离线下载drone-ssh的环境变量,这个变量名称是不能改的,ssh-action 代码里面已写死。
  • deploy job: 这次我们在deploy job中新加了ssh-action的引用,方便我们更好的执行远程命令,当然你也可以直接使用 ssh 命令,只是没那么方便和优雅而已。
  • secrets: 我们在docker-login-actionssh-action中都引用到了secrets,这是为了安全起见,下面会介绍到如何创建secrets
  • script: 需要在远程执行的脚本命令,支持多行命令。

4️⃣ 创建 secrets

一般较为敏感的信息,如:密码、密钥、APIKEY等建议都使用secrets进行引用,避免信息泄露。
我们进入 Gitea 项目,点击设置 → Actions → 密钥 → Add secret 即可创建 secret,如下图所示:
notion image
notion image
值填写我们的SSH私钥,通常是在~/.ssh/id_xxx,注意是不带.pub后缀名的。
PS:这里需要提前将公钥添加到目标主机的~/.ssh/authorized_keys文件内。
镜像仓库密码也按同理进行创建即可,名称为:REGISTRY_PASSWD

✅ 总结

通过 Gitea Action 结合 SSH 和 Secrets,我们实现了一个小而美的自动化部署方案,完全自托管、无需依赖 GitHub/GitLab 等第三方平台。
另外 ssh-action 不只是支持密钥认证,同时也支持密码认证、多主机部署、代理连接等功能,详细可参看项目文档
💡
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
若文章对您有帮助,欢迎 请我喝杯咖啡~
 
上一篇
Gitea Action 定时构建和手动构建指南(实战五)
下一篇
网站朋友动态开源说明

评论
Loading...