Clean up models (#3228)

This commit is contained in:
qwerty287 2024-01-22 07:56:18 +01:00 committed by GitHub
parent a19c488a99
commit 5e2f7d81b3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
27 changed files with 101 additions and 98 deletions

View file

@ -37,10 +37,8 @@ func (r *Runner) createLogger(logger zerolog.Logger, uploads *sync.WaitGroup, wo
var secrets []string
for _, secret := range workflow.Config.Secrets {
if secret.Mask {
secrets = append(secrets, secret.Value)
}
}
loglogger.Debug().Msg("log stream opened")

View file

@ -3784,9 +3784,6 @@ const docTemplate = `{
"refspec": {
"type": "string"
},
"remote": {
"type": "string"
},
"repo_id": {
"type": "integer"
},
@ -3913,9 +3910,6 @@ const docTemplate = `{
"type": "string"
}
},
"clone_url": {
"type": "string"
},
"commit": {
"type": "string"
},
@ -3925,9 +3919,6 @@ const docTemplate = `{
"deploy_to": {
"type": "string"
},
"enqueued_at": {
"type": "integer"
},
"errors": {
"type": "array",
"items": {
@ -4037,18 +4028,12 @@ const docTemplate = `{
"address": {
"type": "string"
},
"email": {
"type": "string"
},
"id": {
"type": "integer"
},
"password": {
"type": "string"
},
"token": {
"type": "string"
},
"username": {
"type": "string"
}

View file

@ -151,7 +151,7 @@ func TestToConfigFull(t *testing.T) {
OnFailure: true,
OnSuccess: true,
Failure: "fail",
AuthConfig: backend.Auth{Username: "user", Password: "123456", Email: "user@example.com"},
AuthConfig: backend.Auth{Username: "user", Password: "123456"},
NetworkMode: "bridge",
Ports: []backend.Port{{Number: 21}, {Number: 22}},
})

View file

@ -18,5 +18,4 @@ package types
type Auth struct {
Username string `json:"username,omitempty"`
Password string `json:"password,omitempty"`
Email string `json:"email,omitempty"`
}

View file

@ -18,5 +18,4 @@ package types
type Secret struct {
Name string `json:"name,omitempty"`
Value string `json:"value,omitempty"`
Mask bool `json:"mask,omitempty"`
}

View file

@ -129,7 +129,6 @@ func (c *Compiler) Compile(conf *yaml_types.Workflow) (*backend_types.Config, er
config.Secrets = append(config.Secrets, &backend_types.Secret{
Name: sec.Name,
Value: sec.Value,
Mask: true,
})
}

View file

@ -111,7 +111,6 @@ func (c *Compiler) createProcess(container *yaml_types.Container, stepType backe
if utils.MatchHostname(container.Image, registry.Hostname) {
authConfig.Username = registry.Username
authConfig.Password = registry.Password
authConfig.Email = registry.Email
break
}
}

View file

@ -70,8 +70,6 @@ func PostRegistry(c *gin.Context) {
Address: in.Address,
Username: in.Username,
Password: in.Password,
Token: in.Token,
Email: in.Email,
}
if err := registry.Validate(); err != nil {
c.String(http.StatusBadRequest, "Error inserting registry. %s", err)
@ -119,12 +117,6 @@ func PatchRegistry(c *gin.Context) {
if in.Password != "" {
registry.Password = in.Password
}
if in.Token != "" {
registry.Token = in.Token
}
if in.Email != "" {
registry.Email = in.Email
}
if err := registry.Validate(); err != nil {
c.String(http.StatusUnprocessableEntity, "Error updating registry. %s", err)

View file

@ -176,7 +176,6 @@ func convertPullHook(from *internal.PullRequestHook) *model.Pipeline {
from.PullRequest.Source.Branch.Name,
from.PullRequest.Dest.Branch.Name,
),
CloneURL: fmt.Sprintf("https://bitbucket.org/%s", from.PullRequest.Source.Repo.FullName),
ForgeURL: from.PullRequest.Links.HTML.Href,
Branch: from.PullRequest.Dest.Branch.Name,
Message: from.PullRequest.Desc,

View file

@ -142,7 +142,6 @@ func Test_helper(t *testing.T) {
g.Assert(pipeline.ForgeURL).Equal(hook.PullRequest.Links.HTML.Href)
g.Assert(pipeline.Ref).Equal("refs/heads/main")
g.Assert(pipeline.Refspec).Equal("change:main")
g.Assert(pipeline.CloneURL).Equal("https://bitbucket.org/baz/bar")
g.Assert(pipeline.Message).Equal(hook.PullRequest.Desc)
g.Assert(pipeline.Timestamp).Equal(hook.PullRequest.Updated.Unix())
})

View file

@ -212,7 +212,6 @@ func Test_helper(t *testing.T) {
g.Assert(pipeline.Branch).Equal(*from.PullRequest.Base.Ref)
g.Assert(pipeline.Ref).Equal("refs/pull/42/merge")
g.Assert(pipeline.Refspec).Equal("changes:main")
g.Assert(pipeline.CloneURL).Equal("https://github.com/octocat/hello-world-fork")
g.Assert(pipeline.Commit).Equal(*from.PullRequest.Head.SHA)
g.Assert(pipeline.Message).Equal(*from.PullRequest.Title)
g.Assert(pipeline.Title).Equal(*from.PullRequest.Title)
@ -264,7 +263,6 @@ func Test_helper(t *testing.T) {
g.Assert(pipeline.Author).Equal(*from.Sender.Login)
g.Assert(pipeline.Avatar).Equal(*from.Sender.AvatarURL)
g.Assert(pipeline.Email).Equal(*from.HeadCommit.Author.Email)
g.Assert(pipeline.CloneURL).Equal(*from.Repo.CloneURL)
})
g.It("should convert a tag from webhook", func() {

View file

@ -90,7 +90,6 @@ func parsePushHook(hook *github.PushEvent) (*model.Repo, *model.Pipeline) {
Email: hook.GetHeadCommit().GetAuthor().GetEmail(),
Avatar: hook.GetSender().GetAvatarURL(),
Author: hook.GetSender().GetLogin(),
CloneURL: hook.GetRepo().GetCloneURL(),
Sender: hook.GetSender().GetLogin(),
ChangedFiles: getChangedFilesFromCommits(hook.Commits),
}
@ -164,7 +163,6 @@ func parsePullHook(hook *github.PullRequestEvent, merge bool) (*github.PullReque
Avatar: hook.GetPullRequest().GetUser().GetAvatarURL(),
Title: hook.GetPullRequest().GetTitle(),
Sender: hook.GetSender().GetLogin(),
CloneURL: hook.GetPullRequest().GetHead().GetRepo().GetCloneURL(),
Refspec: fmt.Sprintf(refSpec,
hook.GetPullRequest().GetHead().GetRef(),
hook.GetPullRequest().GetBase().GetRef(),

View file

@ -120,7 +120,6 @@ func convertMergeRequestHook(hook *gitlab.MergeEvent, req *http.Request) (int, *
pipeline.Message = lastCommit.Message
pipeline.Commit = lastCommit.ID
pipeline.CloneURL = obj.Source.HTTPURL
pipeline.Ref = fmt.Sprintf(mergeRefs, obj.IID)
pipeline.Branch = obj.SourceBranch

View file

@ -18,15 +18,15 @@ type Agent struct {
ID int64 `json:"id" xorm:"pk autoincr 'id'"`
Created int64 `json:"created" xorm:"created"`
Updated int64 `json:"updated" xorm:"updated"`
Name string `json:"name"`
Name string `json:"name" xorm:"name"`
OwnerID int64 `json:"owner_id" xorm:"'owner_id'"`
Token string `json:"token"`
LastContact int64 `json:"last_contact"`
Platform string `json:"platform" xorm:"VARCHAR(100)"`
Backend string `json:"backend" xorm:"VARCHAR(100)"`
Capacity int32 `json:"capacity"`
Version string `json:"version"`
NoSchedule bool `json:"no_schedule"`
Token string `json:"token" xorm:"token"`
LastContact int64 `json:"last_contact" xorm:"last_contact"`
Platform string `json:"platform" xorm:"VARCHAR(100) 'platform'"`
Backend string `json:"backend" xorm:"VARCHAR(100) 'backend'"`
Capacity int32 `json:"capacity" xorm:"capacity"`
Version string `json:"version" xorm:"version"`
NoSchedule bool `json:"no_schedule" xorm:"no_schedule"`
} // @name Agent
// TableName return database table name for xorm

View file

@ -36,7 +36,6 @@ type EnvironStore interface {
// Environ represents an environment variable.
type Environ struct {
ID int64 `json:"id"`
Name string `json:"name"`
Value string `json:"value,omitempty"`
}
@ -56,7 +55,6 @@ func (e *Environ) Validate() error {
// Copy makes a copy of the environment variable without the value.
func (e *Environ) Copy() *Environ {
return &Environ{
ID: e.ID,
Name: e.Name,
}
}

View file

@ -29,7 +29,6 @@ type Feed struct {
Branch string `json:"branch,omitempty" xorm:"feed_pipeline_branch"`
Ref string `json:"ref,omitempty" xorm:"feed_pipeline_ref"`
Refspec string `json:"refspec,omitempty" xorm:"feed_pipeline_refspec"`
Remote string `json:"remote,omitempty" xorm:"feed_pipeline_clone_url"`
Title string `json:"title,omitempty" xorm:"feed_pipeline_title"`
Message string `json:"message,omitempty" xorm:"feed_pipeline_message"`
Author string `json:"author,omitempty" xorm:"feed_pipeline_author"`

View file

@ -24,12 +24,10 @@ type Pipeline struct {
RepoID int64 `json:"-" xorm:"UNIQUE(s) INDEX 'pipeline_repo_id'"`
Number int64 `json:"number" xorm:"UNIQUE(s) 'pipeline_number'"`
Author string `json:"author" xorm:"INDEX 'pipeline_author'"`
ConfigID int64 `json:"-" xorm:"pipeline_config_id"`
Parent int64 `json:"parent" xorm:"pipeline_parent"`
Event WebhookEvent `json:"event" xorm:"pipeline_event"`
Status StatusValue `json:"status" xorm:"INDEX 'pipeline_status'"`
Errors []*errors.PipelineError `json:"errors" xorm:"json 'pipeline_errors'"`
Enqueued int64 `json:"enqueued_at" xorm:"pipeline_enqueued"`
Created int64 `json:"created_at" xorm:"pipeline_created"`
Updated int64 `json:"updated_at" xorm:"updated NOT NULL DEFAULT 0 'updated'"`
Started int64 `json:"started_at" xorm:"pipeline_started"`
@ -39,7 +37,6 @@ type Pipeline struct {
Branch string `json:"branch" xorm:"pipeline_branch"`
Ref string `json:"ref" xorm:"pipeline_ref"`
Refspec string `json:"refspec" xorm:"pipeline_refspec"`
CloneURL string `json:"clone_url" xorm:"pipeline_clone_url"`
Title string `json:"title" xorm:"pipeline_title"`
Message string `json:"message" xorm:"TEXT 'pipeline_message'"`
Timestamp int64 `json:"timestamp" xorm:"pipeline_timestamp"`

View file

@ -57,8 +57,6 @@ type Registry struct {
Address string `json:"address" xorm:"UNIQUE(s) INDEX 'registry_addr'"`
Username string `json:"username" xorm:"varchar(2000) 'registry_username'"`
Password string `json:"password" xorm:"TEXT 'registry_password'"`
Token string `json:"token" xorm:"TEXT 'registry_token'"`
Email string `json:"email" xorm:"varchar(500) 'registry_email'"`
} // @name Registry
// Validate validates the registry information.
@ -83,7 +81,5 @@ func (r *Registry) Copy() *Registry {
RepoID: r.RepoID,
Address: r.Address,
Username: r.Username,
Email: r.Email,
Token: r.Token,
}
}

View file

@ -18,7 +18,6 @@ import (
"context"
"errors"
"fmt"
"time"
"github.com/rs/zerolog/log"
@ -130,7 +129,6 @@ func createNewOutOfOld(old *model.Pipeline) *model.Pipeline {
newPipeline.Status = model.StatusPending
newPipeline.Started = 0
newPipeline.Finished = 0
newPipeline.Enqueued = time.Now().UTC().Unix()
newPipeline.Errors = nil
return &newPipeline
}

View file

@ -256,7 +256,6 @@ func (b *StepBuilder) toInternalRepresentation(parsed *yaml_types.Workflow, envi
Hostname: reg.Address,
Username: reg.Username,
Password: reg.Password,
Email: reg.Email,
})
}

View file

@ -32,7 +32,6 @@ pipelines.pipeline_commit as feed_pipeline_commit,
pipelines.pipeline_branch as feed_pipeline_branch,
pipelines.pipeline_ref as feed_pipeline_ref,
pipelines.pipeline_refspec as feed_pipeline_refspec,
pipelines.pipeline_clone_url as feed_pipeline_clone_url,
pipelines.pipeline_title as feed_pipeline_title,
pipelines.pipeline_message as feed_pipeline_message,
pipelines.pipeline_author as feed_pipeline_author,

View file

@ -0,0 +1,57 @@
// Copyright 2024 Woodpecker Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package migration
import (
"src.techknowlogick.com/xormigrate"
"xorm.io/xorm"
)
type oldRegistry029 struct {
ID int64 `json:"id" xorm:"pk autoincr 'registry_id'"`
Token string `json:"token" xorm:"TEXT 'registry_token'"`
Email string `json:"email" xorm:"varchar(500) 'registry_email'"`
}
func (oldRegistry029) TableName() string {
return "registry"
}
type oldPipeline029 struct {
ID int64 `json:"id" xorm:"pk autoincr 'pipeline_id'"`
ConfigID int64 `json:"-" xorm:"pipeline_config_id"`
Enqueued int64 `json:"enqueued_at" xorm:"pipeline_enqueued"`
CloneURL string `json:"clone_url" xorm:"pipeline_clone_url"`
}
// TableName return database table name for xorm
func (oldPipeline029) TableName() string {
return "pipelines"
}
var cleanRegistryPipeline = xormigrate.Migration{
ID: "clean-registry-pipeline",
MigrateSession: func(sess *xorm.Session) (err error) {
if err := sess.Sync(new(oldRegistry029), new(oldPipeline029)); err != nil {
return err
}
if err := dropTableColumns(sess, "pipelines", "pipeline_clone_url", "pipeline_config_id", "pipeline_enqueued"); err != nil {
return err
}
return dropTableColumns(sess, "registry", "registry_email", "registry_token")
},
}

View file

@ -58,6 +58,7 @@ var migrationTasks = []*xormigrate.Migration{
&removePluginOnlyOptionFromSecretsTable,
&convertToNewPipelineErrorFormat,
&renameLinkToURL,
&cleanRegistryPipeline,
}
var allBeans = []any{

View file

@ -114,7 +114,6 @@ func (s storage) CreatePipeline(pipeline *model.Pipeline, stepList ...*model.Ste
pipeline.Number = number + 1
pipeline.Created = time.Now().UTC().Unix()
pipeline.Enqueued = pipeline.Created
// only Insert set auto created ID back to object
if _, err := sess.Insert(pipeline); err != nil {
return err

View file

@ -32,8 +32,6 @@ func TestRegistryFind(t *testing.T) {
Address: "index.docker.io",
Username: "foo",
Password: "bar",
Email: "foo@bar.com",
Token: "12345",
})
assert.NoError(t, err)
@ -43,8 +41,6 @@ func TestRegistryFind(t *testing.T) {
assert.Equal(t, "index.docker.io", registry.Address)
assert.Equal(t, "foo", registry.Username)
assert.Equal(t, "bar", registry.Password)
assert.Equal(t, "foo@bar.com", registry.Email)
assert.Equal(t, "12345", registry.Token)
}
func TestRegistryList(t *testing.T) {

View file

@ -30,9 +30,6 @@ export type Pipeline = {
// When the pipeline was updated last time in database.
updated_at: number;
// When the pipeline was enqueued.
enqueued_at: number;
// When the pipeline began execution.
started_at: number;

View file

@ -75,6 +75,7 @@ type (
Event string `json:"event"`
Status string `json:"status"`
Errors PipelineError `json:"errors"`
// Deprecated TODO remove in 3.x
Enqueued int64 `json:"enqueued_at"`
Created int64 `json:"created_at"`
Updated int64 `json:"updated_at"`
@ -134,8 +135,10 @@ type (
Address string `json:"address"`
Username string `json:"username"`
Password string `json:"password,omitempty"`
Email string `json:"email"`
Token string `json:"token"`
// Deprecated
Email string `json:"email"` // TODO remove in 3.x
// Deprecated
Token string `json:"token"` // TODO remove in 3.x
}
// Secret represents a secret variable, such as a password or token.