summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorFuXiaoHei <fuxiaohei@vip.qq.com>2023-05-19 21:37:57 +0800
committerGitHub <noreply@github.com>2023-05-19 21:37:57 +0800
commitc757765a9e5c2d4f73b1a7c3debe3548c735bd54 (patch)
treeffed7692321760ea4f9c72670ed31437b52ff0e0 /modules
parent7985cde84df5ee93bfb37b20681d69e67d3f32fc (diff)
downloadgitea-c757765a9e5c2d4f73b1a7c3debe3548c735bd54.tar.gz
gitea-c757765a9e5c2d4f73b1a7c3debe3548c735bd54.zip
Implement actions artifacts (#22738)
Implement action artifacts server api. This change is used for supporting https://github.com/actions/upload-artifact and https://github.com/actions/download-artifact in gitea actions. It can run sample workflow from doc https://docs.github.com/en/actions/using-workflows/storing-workflow-data-as-artifacts. The api design is inspired by https://github.com/nektos/act/blob/master/pkg/artifacts/server.go and includes some changes from gitea internal structs and methods. Actions artifacts contains two parts: - Gitea server api and storage (this pr implement basic design without some complex cases supports) - Runner communicate with gitea server api (in comming) Old pr https://github.com/go-gitea/gitea/pull/22345 is outdated after actions merged. I create new pr from main branch. ![897f7694-3e0f-4f7c-bb4b-9936624ead45](https://user-images.githubusercontent.com/2142787/219382371-eb3cf810-e4e0-456b-a8ff-aecc2b1a1032.jpeg) Add artifacts list in actions workflow page.
Diffstat (limited to 'modules')
-rw-r--r--modules/setting/actions.go9
-rw-r--r--modules/storage/storage.go11
2 files changed, 16 insertions, 4 deletions
diff --git a/modules/setting/actions.go b/modules/setting/actions.go
index b11500dab4..eb1b637a1c 100644
--- a/modules/setting/actions.go
+++ b/modules/setting/actions.go
@@ -10,7 +10,8 @@ import (
// Actions settings
var (
Actions = struct {
- Storage // how the created logs should be stored
+ 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"`
}{
@@ -25,5 +26,9 @@ func loadActionsFrom(rootCfg ConfigProvider) {
log.Fatal("Failed to map Actions settings: %v", err)
}
- Actions.Storage = getStorage(rootCfg, "actions_log", "", nil)
+ actionsSec := rootCfg.Section("actions.artifacts")
+ storageType := actionsSec.Key("STORAGE_TYPE").MustString("")
+
+ Actions.LogStorage = getStorage(rootCfg, "actions_log", "", nil)
+ Actions.ArtifactStorage = getStorage(rootCfg, "actions_artifacts", storageType, actionsSec)
}
diff --git a/modules/storage/storage.go b/modules/storage/storage.go
index caecab306e..5b6efccb6a 100644
--- a/modules/storage/storage.go
+++ b/modules/storage/storage.go
@@ -128,6 +128,8 @@ var (
// Actions represents actions storage
Actions ObjectStorage = uninitializedStorage
+ // Actions Artifacts represents actions artifacts storage
+ ActionsArtifacts ObjectStorage = uninitializedStorage
)
// Init init the stoarge
@@ -212,9 +214,14 @@ func initPackages() (err error) {
func initActions() (err error) {
if !setting.Actions.Enabled {
Actions = discardStorage("Actions isn't enabled")
+ ActionsArtifacts = discardStorage("ActionsArtifacts isn't enabled")
return nil
}
- log.Info("Initialising Actions storage with type: %s", setting.Actions.Storage.Type)
- Actions, err = NewStorage(setting.Actions.Storage.Type, &setting.Actions.Storage)
+ log.Info("Initialising Actions storage with type: %s", setting.Actions.LogStorage.Type)
+ if Actions, err = NewStorage(setting.Actions.LogStorage.Type, &setting.Actions.LogStorage); err != nil {
+ return err
+ }
+ log.Info("Initialising ActionsArtifacts storage with type: %s", setting.Actions.ArtifactStorage.Type)
+ ActionsArtifacts, err = NewStorage(setting.Actions.ArtifactStorage.Type, &setting.Actions.ArtifactStorage)
return err
}