mirror of
https://github.com/go-gitea/gitea.git
synced 2024-08-26 21:54:19 -04:00
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.
34 lines
1.4 KiB
Go
34 lines
1.4 KiB
Go
// Copyright 2023 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package v1_20 //nolint
|
|
|
|
import (
|
|
"code.gitea.io/gitea/modules/timeutil"
|
|
|
|
"xorm.io/xorm"
|
|
)
|
|
|
|
func CreateActionArtifactTable(x *xorm.Engine) error {
|
|
// ActionArtifact is a file that is stored in the artifact storage.
|
|
type ActionArtifact struct {
|
|
ID int64 `xorm:"pk autoincr"`
|
|
RunID int64 `xorm:"index UNIQUE(runid_name)"` // The run id of the artifact
|
|
RunnerID int64
|
|
RepoID int64 `xorm:"index"`
|
|
OwnerID int64
|
|
CommitSHA string
|
|
StoragePath string // The path to the artifact in the storage
|
|
FileSize int64 // The size of the artifact in bytes
|
|
FileCompressedSize int64 // The size of the artifact in bytes after gzip compression
|
|
ContentEncoding string // The content encoding of the artifact
|
|
ArtifactPath string // The path to the artifact when runner uploads it
|
|
ArtifactName string `xorm:"UNIQUE(runid_name)"` // The name of the artifact when runner uploads it
|
|
Status int64 `xorm:"index"` // The status of the artifact
|
|
CreatedUnix timeutil.TimeStamp `xorm:"created"`
|
|
UpdatedUnix timeutil.TimeStamp `xorm:"updated index"`
|
|
}
|
|
|
|
return x.Sync(new(ActionArtifact))
|
|
}
|