[CI] DEFAULT_ACTIONS_URL = https://codeberg.org

[CI] Revert "Restrict `[actions].DEFAULT_ACTIONS_URL` to only `github` or `self` (#25581)"

This reverts commit 67bd9d4f1e.

(cherry picked from commit 0547e94023)
(cherry picked from commit d21ad654ad)
(cherry picked from commit b905e9d838)
(cherry picked from commit 251a5bf235b1723bc2bc324f9e8c03a8668bb5ae)
(cherry picked from commit b370e47694)
(cherry picked from commit 2cc28d0785)
(cherry picked from commit ed870a39e9)
(cherry picked from commit 7bb0c4654e)
(cherry picked from commit bab1f552c3)

Conflicts:
	custom/conf/app.example.ini
	modules/setting/actions.go
	https://codeberg.org/forgejo/forgejo/pulls/1413

[CI] DEFAULT_ACTIONS_URL = https://codeberg.org

(cherry picked from commit 52b364ddbd)
(cherry picked from commit 99887cd567)
(cherry picked from commit cd5788782a)
(cherry picked from commit 71c698a704)
(cherry picked from commit 71386241dd)
(cherry picked from commit b7ab05aeac)
(cherry picked from commit e78b9ca59c)
(cherry picked from commit edb3adf460)
(cherry picked from commit 3e40088197)

[BRANDING] DEFAULT_ACTIONS_URL = https://code.forgejo.org

(cherry picked from commit d0e4512c90)
(cherry picked from commit 8ba6e04709)
(cherry picked from commit 6349081044)
(cherry picked from commit e06bd44495)
(cherry picked from commit d58219d8e1)
(cherry picked from commit 052f2c2aa4)
(cherry picked from commit 29dc395386)
(cherry picked from commit 9eef3f59f3)
(cherry picked from commit d650391fed)
(cherry picked from commit c2e6e8c55d)
(cherry picked from commit e28a47741d)

[CI] DEFAULT_ACTIONS_URL support for self & github (squash)

Refs: https://codeberg.org/forgejo/forgejo/issues/1062
(cherry picked from commit 74cc25376e)
(cherry picked from commit 405430708f)
(cherry picked from commit 0274a6dee7f383bcd6b65b995b991b5ab0ee635a)
(cherry picked from commit be5cda0fd0)
(cherry picked from commit d27474849f)
(cherry picked from commit 4a5e9e2d81)
(cherry picked from commit 65b31906b2)
(cherry picked from commit 13cf0b0963)

Conflicts:
	custom/conf/app.example.ini
	modules/setting/actions.go
	https://codeberg.org/forgejo/forgejo/pulls/1413
(cherry picked from commit 49529badce)

Conflicts:
	custom/conf/app.example.ini
	docs/content/administration/config-cheat-sheet.en-us.md
	modules/setting/actions.go
	https://codeberg.org/forgejo/forgejo/pulls/1460
(cherry picked from commit 00327b9b1f)
(cherry picked from commit 3b322e43d5)
(cherry picked from commit 492cc52059)

Conflicts:
	modules/setting/actions.go
	https://codeberg.org/forgejo/forgejo/pulls/1573
This commit is contained in:
Earl Warren 2023-07-03 09:45:12 +02:00
parent 65eea1d536
commit 9027b655df
No known key found for this signature in database
GPG key ID: 0579CB2928A78A00
3 changed files with 11 additions and 54 deletions

View file

@ -2564,9 +2564,8 @@ LEVEL = Info
; [actions] ; [actions]
;; Enable/Disable actions capabilities ;; Enable/Disable actions capabilities
;ENABLED = true ;ENABLED = true
;; ;; 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 platform to get action plugins, `github` for `https://github.com`, `self` for the current Gitea instance. ;DEFAULT_ACTIONS_URL = https://code.forgejo.org
;DEFAULT_ACTIONS_URL = github
;; Default artifact retention time in days, default is 90 days ;; Default artifact retention time in days, default is 90 days
;ARTIFACT_RETENTION_DAYS = 90 ;ARTIFACT_RETENTION_DAYS = 90
;; Timeout to stop the task which have running status, but haven't been updated for a long time ;; Timeout to stop the task which have running status, but haven't been updated for a long time

View file

@ -7,8 +7,6 @@ import (
"fmt" "fmt"
"strings" "strings"
"time" "time"
"code.gitea.io/gitea/modules/log"
) )
// Actions settings // Actions settings
@ -24,7 +22,7 @@ var (
AbandonedJobTimeout time.Duration `ini:"ABANDONED_JOB_TIMEOUT"` AbandonedJobTimeout time.Duration `ini:"ABANDONED_JOB_TIMEOUT"`
}{ }{
Enabled: true, Enabled: true,
DefaultActionsURL: defaultActionsURLGitHub, DefaultActionsURL: defaultActionsURLForgejo,
} }
) )
@ -37,18 +35,14 @@ func (url defaultActionsURL) URL() string {
case defaultActionsURLSelf: case defaultActionsURLSelf:
return strings.TrimSuffix(AppURL, "/") return strings.TrimSuffix(AppURL, "/")
default: default:
// This should never happen, but just in case, use GitHub as fallback return string(url)
return "https://github.com"
} }
} }
const ( const (
defaultActionsURLForgejo = "https://code.forgejo.org"
defaultActionsURLGitHub = "github" // https://github.com defaultActionsURLGitHub = "github" // https://github.com
defaultActionsURLSelf = "self" // the root URL of the self-hosted Gitea instance defaultActionsURLSelf = "self" // the root URL of the self-hosted instance
// DefaultActionsURL only supports GitHub and the self-hosted Gitea.
// It's intentionally not supported more, so please be cautious before adding more like "gitea" or "gitlab".
// If you get some trouble with `uses: username/action_name@version` in your workflow,
// please consider to use `uses: https://the_url_you_want_to_use/username/action_name@version` instead.
) )
func loadActionsFrom(rootCfg ConfigProvider) error { func loadActionsFrom(rootCfg ConfigProvider) error {
@ -58,19 +52,6 @@ func loadActionsFrom(rootCfg ConfigProvider) error {
return fmt.Errorf("failed to map Actions settings: %v", err) return fmt.Errorf("failed to map Actions settings: %v", err)
} }
if urls := string(Actions.DefaultActionsURL); urls != defaultActionsURLGitHub && urls != defaultActionsURLSelf {
url := strings.Split(urls, ",")[0]
if strings.HasPrefix(url, "https://") || strings.HasPrefix(url, "http://") {
log.Error("[actions] DEFAULT_ACTIONS_URL does not support %q as custom URL any longer, fallback to %q",
urls,
defaultActionsURLGitHub,
)
Actions.DefaultActionsURL = defaultActionsURLGitHub
} else {
return fmt.Errorf("unsupported [actions] DEFAULT_ACTIONS_URL: %q", urls)
}
}
// don't support to read configuration from [actions] // don't support to read configuration from [actions]
Actions.LogStorage, err = getStorage(rootCfg, "actions_log", "", nil) Actions.LogStorage, err = getStorage(rootCfg, "actions_log", "", nil)
if err != nil { if err != nil {

View file

@ -110,7 +110,6 @@ func Test_getDefaultActionsURLForActions(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
iniStr string iniStr string
wantErr assert.ErrorAssertionFunc
wantURL string wantURL string
}{ }{
{ {
@ -118,8 +117,7 @@ func Test_getDefaultActionsURLForActions(t *testing.T) {
iniStr: ` iniStr: `
[actions] [actions]
`, `,
wantErr: assert.NoError, wantURL: "https://code.forgejo.org",
wantURL: "https://github.com",
}, },
{ {
name: "github", name: "github",
@ -127,7 +125,6 @@ func Test_getDefaultActionsURLForActions(t *testing.T) {
[actions] [actions]
DEFAULT_ACTIONS_URL = github DEFAULT_ACTIONS_URL = github
`, `,
wantErr: assert.NoError,
wantURL: "https://github.com", wantURL: "https://github.com",
}, },
{ {
@ -136,35 +133,15 @@ DEFAULT_ACTIONS_URL = github
[actions] [actions]
DEFAULT_ACTIONS_URL = self DEFAULT_ACTIONS_URL = self
`, `,
wantErr: assert.NoError,
wantURL: "http://test_get_default_actions_url_for_actions:3000", wantURL: "http://test_get_default_actions_url_for_actions:3000",
}, },
{
name: "custom url",
iniStr: `
[actions]
DEFAULT_ACTIONS_URL = https://gitea.com
`,
wantErr: assert.NoError,
wantURL: "https://github.com",
},
{ {
name: "custom urls", name: "custom urls",
iniStr: ` iniStr: `
[actions] [actions]
DEFAULT_ACTIONS_URL = https://gitea.com,https://github.com DEFAULT_ACTIONS_URL = https://example.com
`, `,
wantErr: assert.NoError, wantURL: "https://example.com",
wantURL: "https://github.com",
},
{
name: "invalid",
iniStr: `
[actions]
DEFAULT_ACTIONS_URL = gitea
`,
wantErr: assert.Error,
wantURL: "https://github.com",
}, },
} }
@ -172,7 +149,7 @@ DEFAULT_ACTIONS_URL = gitea
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
cfg, err := NewConfigProviderFromData(tt.iniStr) cfg, err := NewConfigProviderFromData(tt.iniStr)
require.NoError(t, err) require.NoError(t, err)
if !tt.wantErr(t, loadActionsFrom(cfg)) { if !assert.NoError(t, loadActionsFrom(cfg)) {
return return
} }
assert.EqualValues(t, tt.wantURL, Actions.DefaultActionsURL.URL()) assert.EqualValues(t, tt.wantURL, Actions.DefaultActionsURL.URL())