[CI] DEFAULT_ACTIONS_URL = https://codeberg.org
(cherry picked from commit52b364ddbd) (cherry picked from commit99887cd567) (cherry picked from commitcd5788782a) (cherry picked from commit71c698a704) (cherry picked from commit71386241dd) (cherry picked from commitb7ab05aeac) (cherry picked from commite78b9ca59c) (cherry picked from commitedb3adf460) (cherry picked from commit3e40088197) [BRANDING] DEFAULT_ACTIONS_URL = https://code.forgejo.org (cherry picked from commitd0e4512c90) (cherry picked from commit8ba6e04709) (cherry picked from commit6349081044) (cherry picked from commite06bd44495) (cherry picked from commitd58219d8e1) (cherry picked from commit052f2c2aa4) (cherry picked from commit29dc395386) (cherry picked from commit9eef3f59f3) (cherry picked from commitd650391fed) (cherry picked from commitc2e6e8c55d) (cherry picked from commite28a47741d) [CI] DEFAULT_ACTIONS_URL support for self & github (squash) Refs: https://codeberg.org/forgejo/forgejo/issues/1062 (cherry picked from commit74cc25376e) (cherry picked from commit405430708f) (cherry picked from commit 0274a6dee7f383bcd6b65b995b991b5ab0ee635a) (cherry picked from commitbe5cda0fd0)
This commit is contained in:
		
							parent
							
								
									2cc28d0785
								
							
						
					
					
						commit
						d27474849f
					
				
					 4 changed files with 86 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -2560,9 +2560,8 @@ LEVEL = Info
 | 
			
		|||
; [actions]
 | 
			
		||||
;; Enable/Disable actions capabilities
 | 
			
		||||
;ENABLED = false
 | 
			
		||||
;;
 | 
			
		||||
;; Default address to get action plugins, e.g. the default value means downloading from "https://gitea.com/actions/checkout" for "uses: actions/checkout@v3"
 | 
			
		||||
;DEFAULT_ACTIONS_URL = https://gitea.com
 | 
			
		||||
;; Default address to get action plugins, e.g. the default value means downloading from "https://code.forgejo.org/actions/checkout" for "uses: actions/checkout@v3"
 | 
			
		||||
;DEFAULT_ACTIONS_URL = https://code.forgejo.org
 | 
			
		||||
 | 
			
		||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
			
		||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,6 +5,7 @@ package setting
 | 
			
		|||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Actions settings
 | 
			
		||||
| 
						 | 
				
			
			@ -13,13 +14,32 @@ var (
 | 
			
		|||
		LogStorage        *Storage // how the created logs should be stored
 | 
			
		||||
		ArtifactStorage   *Storage // how the created artifacts should be stored
 | 
			
		||||
		Enabled           bool
 | 
			
		||||
		DefaultActionsURL string `ini:"DEFAULT_ACTIONS_URL"`
 | 
			
		||||
		DefaultActionsURL defaultActionsURL `ini:"DEFAULT_ACTIONS_URL"`
 | 
			
		||||
	}{
 | 
			
		||||
		Enabled:           false,
 | 
			
		||||
		DefaultActionsURL: "https://gitea.com",
 | 
			
		||||
		DefaultActionsURL: defaultActionsURLForgejo,
 | 
			
		||||
	}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type defaultActionsURL string
 | 
			
		||||
 | 
			
		||||
func (url defaultActionsURL) URL() string {
 | 
			
		||||
	switch url {
 | 
			
		||||
	case defaultActionsURLGitHub:
 | 
			
		||||
		return "https://github.com"
 | 
			
		||||
	case defaultActionsURLSelf:
 | 
			
		||||
		return strings.TrimSuffix(AppURL, "/")
 | 
			
		||||
	default:
 | 
			
		||||
		return string(url)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	defaultActionsURLForgejo = "https://code.forgejo.org"
 | 
			
		||||
	defaultActionsURLGitHub  = "github" // https://github.com
 | 
			
		||||
	defaultActionsURLSelf    = "self"   // the root URL of the self-hosted instance
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func loadActionsFrom(rootCfg ConfigProvider) error {
 | 
			
		||||
	sec := rootCfg.Section("actions")
 | 
			
		||||
	err := sec.MapTo(&Actions)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,6 +8,7 @@ import (
 | 
			
		|||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"github.com/stretchr/testify/assert"
 | 
			
		||||
	"github.com/stretchr/testify/require"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func Test_getStorageInheritNameSectionTypeForActions(t *testing.T) {
 | 
			
		||||
| 
						 | 
				
			
			@ -95,3 +96,63 @@ STORAGE_TYPE = minio
 | 
			
		|||
	assert.EqualValues(t, "local", Actions.ArtifactStorage.Type)
 | 
			
		||||
	assert.EqualValues(t, "actions_artifacts", filepath.Base(Actions.ArtifactStorage.Path))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Test_getDefaultActionsURLForActions(t *testing.T) {
 | 
			
		||||
	oldActions := Actions
 | 
			
		||||
	oldAppURL := AppURL
 | 
			
		||||
	defer func() {
 | 
			
		||||
		Actions = oldActions
 | 
			
		||||
		AppURL = oldAppURL
 | 
			
		||||
	}()
 | 
			
		||||
 | 
			
		||||
	AppURL = "http://test_get_default_actions_url_for_actions:3000/"
 | 
			
		||||
 | 
			
		||||
	tests := []struct {
 | 
			
		||||
		name    string
 | 
			
		||||
		iniStr  string
 | 
			
		||||
		wantURL string
 | 
			
		||||
	}{
 | 
			
		||||
		{
 | 
			
		||||
			name: "default",
 | 
			
		||||
			iniStr: `
 | 
			
		||||
[actions]
 | 
			
		||||
`,
 | 
			
		||||
			wantURL: "https://code.forgejo.org",
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name: "github",
 | 
			
		||||
			iniStr: `
 | 
			
		||||
[actions]
 | 
			
		||||
DEFAULT_ACTIONS_URL = github
 | 
			
		||||
`,
 | 
			
		||||
			wantURL: "https://github.com",
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name: "self",
 | 
			
		||||
			iniStr: `
 | 
			
		||||
[actions]
 | 
			
		||||
DEFAULT_ACTIONS_URL = self
 | 
			
		||||
`,
 | 
			
		||||
			wantURL: "http://test_get_default_actions_url_for_actions:3000",
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name: "custom urls",
 | 
			
		||||
			iniStr: `
 | 
			
		||||
[actions]
 | 
			
		||||
DEFAULT_ACTIONS_URL = https://example.com
 | 
			
		||||
`,
 | 
			
		||||
			wantURL: "https://example.com",
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, tt := range tests {
 | 
			
		||||
		t.Run(tt.name, func(t *testing.T) {
 | 
			
		||||
			cfg, err := NewConfigProviderFromData(tt.iniStr)
 | 
			
		||||
			require.NoError(t, err)
 | 
			
		||||
			if !assert.NoError(t, loadActionsFrom(cfg)) {
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
			assert.EqualValues(t, tt.wantURL, Actions.DefaultActionsURL.URL())
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -184,7 +184,7 @@ func generateTaskContext(t *actions_model.ActionTask) *structpb.Struct {
 | 
			
		|||
		"workspace":         "",                                                   // string, The default working directory on the runner for steps, and the default location of your repository when using the checkout action.
 | 
			
		||||
 | 
			
		||||
		// additional contexts
 | 
			
		||||
		"gitea_default_actions_url": setting.Actions.DefaultActionsURL,
 | 
			
		||||
		"gitea_default_actions_url": setting.Actions.DefaultActionsURL.URL(),
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Error("structpb.NewStruct failed: %v", err)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue