Appearance
杂项
解决 gitea action 仓库执行失败后任务无法删除的问题
不知道为什么,gitea的工作流存在runner意外掉线后状态不同步的问题,页面栏上一直有一个运行的任务,详情栏还删不掉。整个排查过程也是非常的有意思,然后删除部分其实分了两步
首先关掉gitea,并且备份数据库。我使用的是sqlite,因此直接复制然后用navicat打开就行,然后找到action_run这张表,然后查看你的仓库表(repository里有)看看对应仓库的运行记录,或者直接在前台看运行的#运行次数然后过滤index也行,反正能找到定位到具体的工作流就行。然后依据id在所有action开头的表中删掉相关的行就行

(注:这个是我删除好的效果)

然后到了这一步还没完,标签栏里会一直有一个正在运行的1来恶心你,一开始我是去前端的仓库里找(参照前端指南),结果templates里actions里的内容没有,最后直接前端审查标题栏的css,找到了对应的后端模板结构,然后再一路搜索找到了对应的变量repo.NumOpenActionRuns = repo.NumActionRuns - repo.NumClosedActionRuns
这个结构实际上就是之前说的仓库表,然后把NumActionRuns变量减一就完事了。完美
go
func (repo *Repository) AfterLoad() {
repo.NumOpenIssues = repo.NumIssues - repo.NumClosedIssues
repo.NumOpenPulls = repo.NumPulls - repo.NumClosedPulls
repo.NumOpenMilestones = repo.NumMilestones - repo.NumClosedMilestones
repo.NumOpenProjects = repo.NumProjects - repo.NumClosedProjects
repo.NumOpenActionRuns = repo.NumActionRuns - repo.NumClosedActionRuns
if repo.DefaultWikiBranch == "" {
repo.DefaultWikiBranch = setting.Repository.DefaultBranch
}
}