mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-31 22:41:03 +00:00 
			
		
		
		
	Merge pull request '[v7.0/forgejo] badges: Relax the default workflow badge conditions' (#3846) from bp-v7.0/forgejo-d6915f4 into v7.0/forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3846 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
This commit is contained in:
		
				commit
				
					
						cbdef1792f
					
				
			
		
					 4 changed files with 35 additions and 7 deletions
				
			
		|  | @ -326,15 +326,18 @@ func GetLatestRun(ctx context.Context, repoID int64) (*ActionRun, error) { | ||||||
| 
 | 
 | ||||||
| func GetLatestRunForBranchAndWorkflow(ctx context.Context, repoID int64, branch, workflowFile, event string) (*ActionRun, error) { | func GetLatestRunForBranchAndWorkflow(ctx context.Context, repoID int64, branch, workflowFile, event string) (*ActionRun, error) { | ||||||
| 	var run ActionRun | 	var run ActionRun | ||||||
| 	q := db.GetEngine(ctx).Where("repo_id=?", repoID).And("ref=?", branch).And("workflow_id=?", workflowFile) | 	q := db.GetEngine(ctx).Where("repo_id=?", repoID).And("workflow_id=?", workflowFile) | ||||||
| 	if event != "" { | 	if event != "" { | ||||||
| 		q = q.And("event=?", event) | 		q = q.And("event=?", event) | ||||||
| 	} | 	} | ||||||
|  | 	if branch != "" { | ||||||
|  | 		q = q.And("ref=?", branch) | ||||||
|  | 	} | ||||||
| 	has, err := q.Desc("id").Get(&run) | 	has, err := q.Desc("id").Get(&run) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} else if !has { | 	} else if !has { | ||||||
| 		return nil, util.NewNotExistErrorf("run with repo_id %d, ref %s, workflow_id %s", repoID, branch, workflowFile) | 		return nil, util.NewNotExistErrorf("run with repo_id %d, ref %s, event %s, workflow_id %s", repoID, branch, event, workflowFile) | ||||||
| 	} | 	} | ||||||
| 	return &run, nil | 	return &run, nil | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								release-notes/8.0.0/fix/3843.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								release-notes/8.0.0/fix/3843.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | - Fixed a bug that resulted in workflow badges not working for workflows that weren't running on push (such as scheduled workflows, and ones that run on tags and for prs) | ||||||
|  | @ -45,10 +45,9 @@ func errorBadge(ctx *context_module.Context, label, text string) { | ||||||
| 
 | 
 | ||||||
| func GetWorkflowBadge(ctx *context_module.Context) { | func GetWorkflowBadge(ctx *context_module.Context) { | ||||||
| 	branch := ctx.Req.URL.Query().Get("branch") | 	branch := ctx.Req.URL.Query().Get("branch") | ||||||
| 	if branch == "" { | 	if branch != "" { | ||||||
| 		branch = ctx.Repo.Repository.DefaultBranch | 		branch = fmt.Sprintf("refs/heads/%s", branch) | ||||||
| 	} | 	} | ||||||
| 	branch = fmt.Sprintf("refs/heads/%s", branch) |  | ||||||
| 	event := ctx.Req.URL.Query().Get("event") | 	event := ctx.Req.URL.Query().Get("event") | ||||||
| 
 | 
 | ||||||
| 	workflowFile := ctx.Params("workflow_name") | 	workflowFile := ctx.Params("workflow_name") | ||||||
|  |  | ||||||
|  | @ -1,4 +1,5 @@ | ||||||
| // Copyright 2023 The Gitea Authors. All rights reserved. | // Copyright 2023 The Gitea Authors. All rights reserved. | ||||||
|  | // Copyright 2024 The Forgejo Authors c/o Codeberg e.V.. All rights reserved. | ||||||
| // SPDX-License-Identifier: MIT | // SPDX-License-Identifier: MIT | ||||||
| 
 | 
 | ||||||
| package integration | package integration | ||||||
|  | @ -40,12 +41,17 @@ func TestBadges(t *testing.T) { | ||||||
| 					{ | 					{ | ||||||
| 						Operation:     "create", | 						Operation:     "create", | ||||||
| 						TreePath:      ".gitea/workflows/pr.yml", | 						TreePath:      ".gitea/workflows/pr.yml", | ||||||
| 						ContentReader: strings.NewReader("name: test\non:\n  push:\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - run: echo helloworld\n"), | 						ContentReader: strings.NewReader("name: pr\non:\n  push:\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - run: echo helloworld\n"), | ||||||
| 					}, | 					}, | ||||||
| 					{ | 					{ | ||||||
| 						Operation:     "create", | 						Operation:     "create", | ||||||
| 						TreePath:      ".gitea/workflows/self-test.yaml", | 						TreePath:      ".gitea/workflows/self-test.yaml", | ||||||
| 						ContentReader: strings.NewReader("name: test\non:\n  push:\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - run: echo helloworld\n"), | 						ContentReader: strings.NewReader("name: self-test\non:\n  push:\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - run: echo helloworld\n"), | ||||||
|  | 					}, | ||||||
|  | 					{ | ||||||
|  | 						Operation:     "create", | ||||||
|  | 						TreePath:      ".gitea/workflows/tag-test.yaml", | ||||||
|  | 						ContentReader: strings.NewReader("name: tags\non:\n  push:\n    tags: '*'\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - run: echo helloworld\n"), | ||||||
| 					}, | 					}, | ||||||
| 				}, | 				}, | ||||||
| 			) | 			) | ||||||
|  | @ -112,6 +118,25 @@ func TestBadges(t *testing.T) { | ||||||
| 			req = NewRequestf(t, "GET", "/user2/%s/actions/workflows/pr.yml/badge.svg?event=cron", repo.Name) | 			req = NewRequestf(t, "GET", "/user2/%s/actions/workflows/pr.yml/badge.svg?event=cron", repo.Name) | ||||||
| 			resp = MakeRequest(t, req, http.StatusSeeOther) | 			resp = MakeRequest(t, req, http.StatusSeeOther) | ||||||
| 			assertBadge(t, resp, "pr.yml-Not%20found-crimson") | 			assertBadge(t, resp, "pr.yml-Not%20found-crimson") | ||||||
|  | 
 | ||||||
|  | 			t.Run("tagged", func(t *testing.T) { | ||||||
|  | 				defer tests.PrintCurrentTest(t)() | ||||||
|  | 
 | ||||||
|  | 				// With no tags, the workflow has no runs, and isn't found | ||||||
|  | 				req := NewRequestf(t, "GET", "/user2/%s/actions/workflows/tag-test.yaml/badge.svg", repo.Name) | ||||||
|  | 				resp := MakeRequest(t, req, http.StatusSeeOther) | ||||||
|  | 				assertBadge(t, resp, "tag--test.yaml-Not%20found-crimson") | ||||||
|  | 
 | ||||||
|  | 				// Lets create a tag! | ||||||
|  | 				owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) | ||||||
|  | 				err := release.CreateNewTag(git.DefaultContext, owner, repo, "main", "v1", "message") | ||||||
|  | 				assert.NoError(t, err) | ||||||
|  | 
 | ||||||
|  | 				// Now the workflow is wating | ||||||
|  | 				req = NewRequestf(t, "GET", "/user2/%s/actions/workflows/tag-test.yaml/badge.svg", repo.Name) | ||||||
|  | 				resp = MakeRequest(t, req, http.StatusSeeOther) | ||||||
|  | 				assertBadge(t, resp, "tag--test.yaml-waiting-lightgrey") | ||||||
|  | 			}) | ||||||
| 		}) | 		}) | ||||||
| 
 | 
 | ||||||
| 		t.Run("Stars", func(t *testing.T) { | 		t.Run("Stars", func(t *testing.T) { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue