(feat) ignore archive repos on sync (#3178)
* (feat) ignore archive repos on sync
This commit is contained in:
parent
3398f2eb57
commit
7e757c4a3d
6 changed files with 61 additions and 1 deletions
|
@ -65,6 +65,7 @@ type (
|
||||||
Secret string `json:"-"`
|
Secret string `json:"-"`
|
||||||
Build *Build `json:"build,omitempty"`
|
Build *Build `json:"build,omitempty"`
|
||||||
Perms *Perm `json:"permissions,omitempty"`
|
Perms *Perm `json:"permissions,omitempty"`
|
||||||
|
Archived bool `json:"archived"`
|
||||||
}
|
}
|
||||||
|
|
||||||
RepoBuildStage struct {
|
RepoBuildStage struct {
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -20,7 +20,7 @@ require (
|
||||||
github.com/drone/funcmap v0.0.0-20210823160631-9e9dec149056
|
github.com/drone/funcmap v0.0.0-20210823160631-9e9dec149056
|
||||||
github.com/drone/go-license v1.0.2
|
github.com/drone/go-license v1.0.2
|
||||||
github.com/drone/go-login v1.1.0
|
github.com/drone/go-login v1.1.0
|
||||||
github.com/drone/go-scm v1.16.3
|
github.com/drone/go-scm v1.17.0
|
||||||
github.com/drone/signal v1.0.0
|
github.com/drone/signal v1.0.0
|
||||||
github.com/dustin/go-humanize v1.0.0
|
github.com/dustin/go-humanize v1.0.0
|
||||||
github.com/go-chi/chi v3.3.3+incompatible
|
github.com/go-chi/chi v3.3.3+incompatible
|
||||||
|
|
2
go.sum
2
go.sum
|
@ -100,6 +100,8 @@ github.com/drone/go-scm v1.16.2 h1:IoxgyIACUArg3d7US8OR1Vwsph3U/x7imNTU5QK47C4=
|
||||||
github.com/drone/go-scm v1.16.2/go.mod h1:DFIJJjhMj0TSXPz+0ni4nyZ9gtTtC40Vh/TGRugtyWw=
|
github.com/drone/go-scm v1.16.2/go.mod h1:DFIJJjhMj0TSXPz+0ni4nyZ9gtTtC40Vh/TGRugtyWw=
|
||||||
github.com/drone/go-scm v1.16.3 h1:jm8xSGv5vVfaVhPY7Dswjq2EdNm0HTDVCQ+/Lqe7KPM=
|
github.com/drone/go-scm v1.16.3 h1:jm8xSGv5vVfaVhPY7Dswjq2EdNm0HTDVCQ+/Lqe7KPM=
|
||||||
github.com/drone/go-scm v1.16.3/go.mod h1:DFIJJjhMj0TSXPz+0ni4nyZ9gtTtC40Vh/TGRugtyWw=
|
github.com/drone/go-scm v1.16.3/go.mod h1:DFIJJjhMj0TSXPz+0ni4nyZ9gtTtC40Vh/TGRugtyWw=
|
||||||
|
github.com/drone/go-scm v1.17.0 h1:Yg0IxA8XAIgAohcQy7S1P9D3Sd6sJq3dNMI7uajwXhQ=
|
||||||
|
github.com/drone/go-scm v1.17.0/go.mod h1:DFIJJjhMj0TSXPz+0ni4nyZ9gtTtC40Vh/TGRugtyWw=
|
||||||
github.com/drone/signal v1.0.0 h1:NrnM2M/4yAuU/tXs6RP1a1ZfxnaHwYkd0kJurA1p6uI=
|
github.com/drone/signal v1.0.0 h1:NrnM2M/4yAuU/tXs6RP1a1ZfxnaHwYkd0kJurA1p6uI=
|
||||||
github.com/drone/signal v1.0.0/go.mod h1:S8t92eFT0g4WUgEc/LxG+LCuiskpMNsG0ajAMGnyZpc=
|
github.com/drone/signal v1.0.0/go.mod h1:S8t92eFT0g4WUgEc/LxG+LCuiskpMNsG0ajAMGnyZpc=
|
||||||
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
|
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
|
||||||
|
|
|
@ -35,6 +35,7 @@ func convertRepository(src *scm.Repository, visibility string, trusted bool) *co
|
||||||
Visibility: convertVisibility(src, visibility),
|
Visibility: convertVisibility(src, visibility),
|
||||||
Branch: src.Branch,
|
Branch: src.Branch,
|
||||||
Trusted: trusted,
|
Trusted: trusted,
|
||||||
|
Archived: src.Archived,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -110,6 +110,13 @@ func (s *Synchronizer) Sync(ctx context.Context, user *core.User) (*core.Batch,
|
||||||
WithField("uid", repo.UID).
|
WithField("uid", repo.UID).
|
||||||
Traceln("syncer: skipping subrepositories")
|
Traceln("syncer: skipping subrepositories")
|
||||||
}
|
}
|
||||||
|
} else if repo.Archived {
|
||||||
|
if logrus.GetLevel() == logrus.TraceLevel {
|
||||||
|
logger.WithField("namespace", repo.Namespace).
|
||||||
|
WithField("name", repo.Name).
|
||||||
|
WithField("uid", repo.UID).
|
||||||
|
Traceln("syncer: skipping archived repositories")
|
||||||
|
}
|
||||||
} else if s.match(repo) {
|
} else if s.match(repo) {
|
||||||
remote[repo.UID] = repo
|
remote[repo.UID] = repo
|
||||||
if logrus.GetLevel() == logrus.TraceLevel {
|
if logrus.GetLevel() == logrus.TraceLevel {
|
||||||
|
|
|
@ -434,3 +434,52 @@ func TestSync_SkipSubrepo(t *testing.T) {
|
||||||
t.Errorf(diff)
|
t.Errorf(diff)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSyncArchive(t *testing.T) {
|
||||||
|
controller := gomock.NewController(t)
|
||||||
|
defer controller.Finish()
|
||||||
|
|
||||||
|
user := &core.User{ID: 1}
|
||||||
|
|
||||||
|
userStore := mock.NewMockUserStore(controller)
|
||||||
|
userStore.EXPECT().Update(gomock.Any(), user).Return(nil)
|
||||||
|
userStore.EXPECT().Update(gomock.Any(), user).Return(nil)
|
||||||
|
|
||||||
|
batcher := mock.NewMockBatcher(controller)
|
||||||
|
batcher.EXPECT().Batch(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
|
||||||
|
|
||||||
|
repoStore := mock.NewMockRepositoryStore(controller)
|
||||||
|
repoStore.EXPECT().List(gomock.Any(), gomock.Any()).Return([]*core.Repository{}, nil)
|
||||||
|
|
||||||
|
repoService := mock.NewMockRepositoryService(controller)
|
||||||
|
repoService.EXPECT().List(gomock.Any(), user).Return([]*core.Repository{
|
||||||
|
{
|
||||||
|
UID: "1",
|
||||||
|
Slug: "octocat/hello-world",
|
||||||
|
Namespace: "octocat",
|
||||||
|
Name: "hello-world",
|
||||||
|
Private: false,
|
||||||
|
Visibility: core.VisibilityPublic,
|
||||||
|
Archived: true,
|
||||||
|
},
|
||||||
|
}, nil)
|
||||||
|
|
||||||
|
s := New(
|
||||||
|
repoService,
|
||||||
|
repoStore,
|
||||||
|
userStore,
|
||||||
|
batcher,
|
||||||
|
)
|
||||||
|
got, err := s.Sync(context.Background(), user)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
want := &core.Batch{}
|
||||||
|
|
||||||
|
ignore := cmpopts.IgnoreFields(core.Repository{},
|
||||||
|
"Synced", "Created", "Updated")
|
||||||
|
if diff := cmp.Diff(got, want, ignore); len(diff) != 0 {
|
||||||
|
t.Errorf(diff)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue