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) { | ||||
| 	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 != "" { | ||||
| 		q = q.And("event=?", event) | ||||
| 	} | ||||
| 	if branch != "" { | ||||
| 		q = q.And("ref=?", branch) | ||||
| 	} | ||||
| 	has, err := q.Desc("id").Get(&run) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} 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 | ||||
| } | ||||
|  |  | |||
							
								
								
									
										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) { | ||||
| 	branch := ctx.Req.URL.Query().Get("branch") | ||||
| 	if branch == "" { | ||||
| 		branch = ctx.Repo.Repository.DefaultBranch | ||||
| 	} | ||||
| 	if branch != "" { | ||||
| 		branch = fmt.Sprintf("refs/heads/%s", branch) | ||||
| 	} | ||||
| 	event := ctx.Req.URL.Query().Get("event") | ||||
| 
 | ||||
| 	workflowFile := ctx.Params("workflow_name") | ||||
|  |  | |||
|  | @ -1,4 +1,5 @@ | |||
| // 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 | ||||
| 
 | ||||
| package integration | ||||
|  | @ -40,12 +41,17 @@ func TestBadges(t *testing.T) { | |||
| 					{ | ||||
| 						Operation:     "create", | ||||
| 						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", | ||||
| 						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) | ||||
| 			resp = MakeRequest(t, req, http.StatusSeeOther) | ||||
| 			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) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue