Skip to content

Commit e37cc41

Browse files
authored
fix(api): rename artifactory integration model (#5968)
1 parent 2af7ac2 commit e37cc41

File tree

14 files changed

+140
-99
lines changed

14 files changed

+140
-99
lines changed

contrib/integrations/artifactory/plugin-artifactory-build-info/main.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,12 @@ func (e *artifactoryBuildInfoPlugin) Manifest(_ context.Context, _ *empty.Empty)
6565
}
6666

6767
func (e *artifactoryBuildInfoPlugin) Run(_ context.Context, opts *integrationplugin.RunQuery) (*integrationplugin.RunResult, error) {
68-
artifactoryURL := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactManagerConfigURL)]
69-
token := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactManagerConfigToken)]
70-
tokenName := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactManagerConfigTokenName)]
71-
lowMaturitySuffix := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactManagerConfigPromotionLowMaturity)]
68+
artifactoryURL := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactoryConfigURL)]
69+
token := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactoryConfigToken)]
70+
tokenName := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactoryConfigTokenName)]
71+
lowMaturitySuffix := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactoryConfigPromotionLowMaturity)]
7272
artifactoryProjectKey := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactProjectKey)]
73-
buildInfo := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactManagerConfigBuildInfoPrefix)]
73+
buildInfo := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactoryConfigBuildInfoPrefix)]
7474

7575
version := opts.GetOptions()["cds.version"]
7676
projectKey := opts.GetOptions()["cds.project"]

contrib/integrations/artifactory/plugin-artifactory-download-artifact/main.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ func (e *artifactoryDownloadArtifactPlugin) Manifest(_ context.Context, _ *empty
6161
}
6262

6363
func (e *artifactoryDownloadArtifactPlugin) Run(_ context.Context, opts *integrationplugin.RunQuery) (*integrationplugin.RunResult, error) {
64-
cdsRepo := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactManagerConfigCdsRepository)]
65-
artifactoryURL := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactManagerConfigURL)]
66-
token := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactManagerConfigToken)]
64+
cdsRepo := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactoryConfigCdsRepository)]
65+
artifactoryURL := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactoryConfigURL)]
66+
token := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactoryConfigToken)]
6767

6868
filePath := opts.GetOptions()[sdk.ArtifactDownloadPluginInputFilePath]
6969
path := opts.GetOptions()[sdk.ArtifactDownloadPluginInputDestinationPath]

contrib/integrations/artifactory/plugin-artifactory-promote/main.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ func (e *artifactoryPromotePlugin) Manifest(_ context.Context, _ *empty.Empty) (
4949
}
5050

5151
func (e *artifactoryPromotePlugin) Run(_ context.Context, opts *integrationplugin.RunQuery) (*integrationplugin.RunResult, error) {
52-
artifactoryURL := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactManagerConfigURL)]
53-
token := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactManagerConfigToken)]
52+
artifactoryURL := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactoryConfigURL)]
53+
token := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactoryConfigToken)]
5454

5555
artifactList := opts.GetOptions()["artifacts"]
5656
srcMaturity := opts.GetOptions()["srcMaturity"]

contrib/integrations/artifactory/plugin-artifactory-release/main.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,11 @@ func (e *artifactoryReleasePlugin) Manifest(_ context.Context, _ *empty.Empty) (
6969
}
7070

7171
func (e *artifactoryReleasePlugin) Run(_ context.Context, opts *integrationplugin.RunQuery) (*integrationplugin.RunResult, error) {
72-
artifactoryURL := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactManagerConfigURL)]
73-
token := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactManagerConfigToken)]
74-
releaseToken := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactManagerConfigReleaseToken)]
72+
artifactoryURL := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactoryConfigURL)]
73+
token := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactoryConfigToken)]
74+
releaseToken := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactoryConfigReleaseToken)]
7575

76-
buildInfo := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactManagerConfigBuildInfoPrefix)]
76+
buildInfo := opts.GetOptions()[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactoryConfigBuildInfoPrefix)]
7777

7878
version := opts.GetOptions()["cds.version"]
7979
projectKey := opts.GetOptions()["cds.project"]

contrib/integrations/artifactory/plugin-artifactory-upload-artifact/main.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,14 @@ func (e *artifactoryUploadArtifactPlugin) Manifest(_ context.Context, _ *empty.E
6464

6565
func (e *artifactoryUploadArtifactPlugin) Run(_ context.Context, opts *integrationplugin.RunQuery) (*integrationplugin.RunResult, error) {
6666
prefix := "cds.integration.artifact_manager"
67-
cdsRepo := opts.GetOptions()[fmt.Sprintf("%s.%s", prefix, sdk.ArtifactManagerConfigCdsRepository)]
68-
artifactoryURL := opts.GetOptions()[fmt.Sprintf("%s.%s", prefix, sdk.ArtifactManagerConfigURL)]
69-
token := opts.GetOptions()[fmt.Sprintf("%s.%s", prefix, sdk.ArtifactManagerConfigToken)]
67+
cdsRepo := opts.GetOptions()[fmt.Sprintf("%s.%s", prefix, sdk.ArtifactoryConfigCdsRepository)]
68+
artifactoryURL := opts.GetOptions()[fmt.Sprintf("%s.%s", prefix, sdk.ArtifactoryConfigURL)]
69+
token := opts.GetOptions()[fmt.Sprintf("%s.%s", prefix, sdk.ArtifactoryConfigToken)]
7070
pathToUpload := opts.GetOptions()[fmt.Sprintf("%s.upload.path", prefix)]
7171
projectKey := opts.GetOptions()["cds.project"]
7272
workflowName := opts.GetOptions()["cds.workflow"]
7373
version := opts.GetOptions()["cds.version"]
74-
buildInfo := opts.GetOptions()[fmt.Sprintf("%s.%s", prefix, sdk.ArtifactManagerConfigBuildInfoPrefix)]
74+
buildInfo := opts.GetOptions()[fmt.Sprintf("%s.%s", prefix, sdk.ArtifactoryConfigBuildInfoPrefix)]
7575

7676
artiClient, err := art.CreateArtifactoryClient(artifactoryURL, token)
7777
if err != nil {

engine/api/api.go

+42-36
Original file line numberDiff line numberDiff line change
@@ -548,8 +548,49 @@ func (a *API) Serve(ctx context.Context) error {
548548
return sdk.WrapError(err, "cannot connect to cache store")
549549
}
550550

551-
log.Info(ctx, "Initializing HTTP router")
552551
a.GoRoutines = sdk.NewGoRoutines(ctx)
552+
553+
log.Info(ctx, "Running migration")
554+
migrate.Add(ctx, sdk.Migration{Name: "RunsSecrets", Release: "0.47.0", Blocker: false, Automatic: true, ExecFunc: func(ctx context.Context) error {
555+
return migrate.RunsSecrets(ctx, a.DBConnectionFactory.GetDBMap(gorpmapping.Mapper))
556+
}})
557+
558+
migrate.Add(ctx, sdk.Migration{Name: "AuthConsumerTokenExpiration", Release: "0.47.0", Blocker: true, Automatic: true, ExecFunc: func(ctx context.Context) error {
559+
return migrate.AuthConsumerTokenExpiration(ctx, a.DBConnectionFactory.GetDBMap(gorpmapping.Mapper), time.Duration(a.Config.Auth.TokenDefaultDuration)*(24*time.Hour))
560+
}})
561+
562+
migrate.Add(ctx, sdk.Migration{Name: "ArtifactoryIntegration", Release: "0.49.0", Blocker: true, Automatic: true, ExecFunc: func(ctx context.Context) error {
563+
return migrate.ArtifactoryIntegration(ctx, a.DBConnectionFactory.GetDBMap(gorpmapping.Mapper))
564+
}})
565+
566+
isFreshInstall, errF := version.IsFreshInstall(a.mustDB())
567+
if errF != nil {
568+
return sdk.WrapError(errF, "Unable to check if it's a fresh installation of CDS")
569+
}
570+
571+
if isFreshInstall {
572+
if err := migrate.SaveAllMigrations(a.mustDB()); err != nil {
573+
return sdk.WrapError(err, "Cannot save all migrations to done")
574+
}
575+
} else {
576+
if sdk.VersionCurrent().Version != "" && !strings.HasPrefix(sdk.VersionCurrent().Version, "snapshot") {
577+
major, minor, _, errV := version.MaxVersion(a.mustDB())
578+
if errV != nil {
579+
return sdk.WrapError(errV, "Cannot fetch max version of CDS already started")
580+
}
581+
if major != 0 || minor != 0 {
582+
minSemverCompatible, _ := semver.Parse(migrate.MinCompatibleRelease)
583+
if major < minSemverCompatible.Major || (major == minSemverCompatible.Major && minor < minSemverCompatible.Minor) {
584+
return fmt.Errorf("there are some mandatory migrations which aren't done. Please check each changelog of CDS. Maybe you have skipped a release migration. The minimum compatible release is %s, please update to this release before", migrate.MinCompatibleRelease)
585+
}
586+
}
587+
}
588+
589+
// Run all migrations in several goroutines
590+
migrate.Run(ctx, a.mustDB())
591+
}
592+
593+
log.Info(ctx, "Initializing HTTP router")
553594
a.Router = &Router{
554595
Mux: mux.NewRouter(),
555596
Background: ctx,
@@ -710,41 +751,6 @@ func (a *API) Serve(ctx context.Context) error {
710751
a.WorkflowRunCraft(ctx, 100*time.Millisecond)
711752
})
712753

713-
migrate.Add(ctx, sdk.Migration{Name: "RunsSecrets", Release: "0.47.0", Blocker: false, Automatic: true, ExecFunc: func(ctx context.Context) error {
714-
return migrate.RunsSecrets(ctx, a.DBConnectionFactory.GetDBMap(gorpmapping.Mapper))
715-
}})
716-
717-
migrate.Add(ctx, sdk.Migration{Name: "AuthConsumerTokenExpiration", Release: "0.47.0", Blocker: true, Automatic: true, ExecFunc: func(ctx context.Context) error {
718-
return migrate.AuthConsumerTokenExpiration(ctx, a.DBConnectionFactory.GetDBMap(gorpmapping.Mapper), time.Duration(a.Config.Auth.TokenDefaultDuration)*(24*time.Hour))
719-
}})
720-
721-
isFreshInstall, errF := version.IsFreshInstall(a.mustDB())
722-
if errF != nil {
723-
return sdk.WrapError(errF, "Unable to check if it's a fresh installation of CDS")
724-
}
725-
726-
if isFreshInstall {
727-
if err := migrate.SaveAllMigrations(a.mustDB()); err != nil {
728-
return sdk.WrapError(err, "Cannot save all migrations to done")
729-
}
730-
} else {
731-
if sdk.VersionCurrent().Version != "" && !strings.HasPrefix(sdk.VersionCurrent().Version, "snapshot") {
732-
major, minor, _, errV := version.MaxVersion(a.mustDB())
733-
if errV != nil {
734-
return sdk.WrapError(errV, "Cannot fetch max version of CDS already started")
735-
}
736-
if major != 0 || minor != 0 {
737-
minSemverCompatible, _ := semver.Parse(migrate.MinCompatibleRelease)
738-
if major < minSemverCompatible.Major || (major == minSemverCompatible.Major && minor < minSemverCompatible.Minor) {
739-
return fmt.Errorf("there are some mandatory migrations which aren't done. Please check each changelog of CDS. Maybe you have skipped a release migration. The minimum compatible release is %s, please update to this release before", migrate.MinCompatibleRelease)
740-
}
741-
}
742-
}
743-
744-
// Run all migrations in several goroutines
745-
migrate.Run(ctx, a.mustDB())
746-
}
747-
748754
log.Info(ctx, "Bootstrapping database...")
749755
defaultValues := sdk.DefaultValues{
750756
DefaultGroupName: a.Config.Auth.DefaultGroup,

engine/api/integration/builtin.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ var (
1616
sdk.RabbitMQIntegration,
1717
sdk.OpenstackIntegration,
1818
sdk.AWSIntegration,
19-
sdk.ArtifactManagerIntegration,
19+
sdk.ArtifactoryIntegration,
2020
}
2121
)
2222

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package migrate
2+
3+
import (
4+
"context"
5+
6+
"github.com/go-gorp/gorp"
7+
"github.com/ovh/cds/engine/api/integration"
8+
"github.com/ovh/cds/sdk"
9+
)
10+
11+
func ArtifactoryIntegration(ctx context.Context, dbFunc func() *gorp.DbMap) error {
12+
tx, err := dbFunc().Begin()
13+
if err != nil {
14+
return sdk.WithStack(err)
15+
}
16+
17+
defer tx.Rollback()
18+
19+
model, err := integration.LoadModelByNameWithClearPassword(tx, "ArtifactManager")
20+
if err != nil {
21+
return sdk.WithStack(err)
22+
}
23+
24+
// We just need to update the name, because bootstrap.InitializeDB
25+
// that runs after will update all the data based on this name
26+
model.Name = sdk.ArtifactoryIntegration.Name
27+
if err := integration.UpdateModel(tx, &model); err != nil {
28+
return err
29+
}
30+
31+
if err := tx.Commit(); err != nil {
32+
return sdk.WithStack(err)
33+
}
34+
35+
return nil
36+
}

engine/api/purge/purge.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -333,8 +333,8 @@ func DeleteArtifactsFromRepositoryManager(ctx context.Context, db gorp.SqlExecut
333333
return nil
334334
}
335335
var (
336-
rtName = artifactManagerInteg.ProjectIntegration.Config[sdk.ArtifactManagerConfigPlatform].Value
337-
rtURL = artifactManagerInteg.ProjectIntegration.Config[sdk.ArtifactManagerConfigURL].Value
336+
rtName = artifactManagerInteg.ProjectIntegration.Config[sdk.ArtifactoryConfigPlatform].Value
337+
rtURL = artifactManagerInteg.ProjectIntegration.Config[sdk.ArtifactoryConfigURL].Value
338338
)
339339

340340
// Load the token from secrets
@@ -345,7 +345,7 @@ func DeleteArtifactsFromRepositoryManager(ctx context.Context, db gorp.SqlExecut
345345

346346
var rtToken string
347347
for _, s := range secrets {
348-
if s.Name == fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactManagerConfigToken) {
348+
if s.Name == fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactoryConfigToken) {
349349
rtToken = s.Value
350350
break
351351
}
@@ -366,8 +366,8 @@ func DeleteArtifactsFromRepositoryManager(ctx context.Context, db gorp.SqlExecut
366366
return err
367367
}
368368

369-
lowMaturity := artifactManagerInteg.ProjectIntegration.Config[sdk.ArtifactManagerConfigPromotionLowMaturity].Value
370-
highMaturity := artifactManagerInteg.ProjectIntegration.Config[sdk.ArtifactManagerConfigPromotionHighMaturity].Value
369+
lowMaturity := artifactManagerInteg.ProjectIntegration.Config[sdk.ArtifactoryConfigPromotionLowMaturity].Value
370+
highMaturity := artifactManagerInteg.ProjectIntegration.Config[sdk.ArtifactoryConfigPromotionHighMaturity].Value
371371

372372
toDeleteProperties := []sdk.KeyValues{
373373
{

engine/api/workflow/execute_node_run.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,7 @@ func getIntegrationPlugins(db gorp.SqlExecutor, wr *sdk.WorkflowRun, nr *sdk.Wor
643643
if err != nil {
644644
return nil, nil, sdk.NewErrorFrom(sdk.ErrNotFound, "Cannot find plugin for integration model id %d, %v", artifactManagerInteg.ProjectIntegration.Model.ID, err)
645645
}
646-
platform := artifactManagerInteg.ProjectIntegration.Config[sdk.ArtifactManagerConfigPlatform]
646+
platform := artifactManagerInteg.ProjectIntegration.Config[sdk.ArtifactoryConfigPlatform]
647647
for _, plg := range plgs {
648648
if strings.HasPrefix(plg.Name, fmt.Sprintf("%s-", platform.Value)) {
649649
plugins = append(plugins, plg)

engine/api/workflow/workflow_run_results.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -197,15 +197,15 @@ func verifyAddResultArtifactManager(ctx context.Context, db gorp.SqlExecutor, st
197197
}
198198
var artifactManagerToken string
199199
for _, s := range secrets {
200-
if s.Name == fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactManagerConfigToken) {
200+
if s.Name == fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactoryConfigToken) {
201201
artifactManagerToken = s.Value
202202
break
203203
}
204204
}
205205
if artifactManagerToken == "" {
206206
return "", sdk.NewErrorFrom(sdk.ErrNotFound, "unable to find artifact manager token")
207207
}
208-
artifactClient, err := artifact_manager.NewClient(artiInteg.ProjectIntegration.Config[sdk.ArtifactManagerConfigPlatform].Value, artiInteg.ProjectIntegration.Config[sdk.ArtifactManagerConfigURL].Value, artifactManagerToken)
208+
artifactClient, err := artifact_manager.NewClient(artiInteg.ProjectIntegration.Config[sdk.ArtifactoryConfigPlatform].Value, artiInteg.ProjectIntegration.Config[sdk.ArtifactoryConfigURL].Value, artifactManagerToken)
209209
if err != nil {
210210
return "", err
211211
}

engine/api/workflow_purge_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ func Test_Purge_DeleteArtifactsFromRepositoryManager(t *testing.T) {
162162
p := assets.InsertTestProject(t, db, api.Cache, sdk.RandomString(10), sdk.RandomString(10))
163163
w := assets.InsertTestWorkflow(t, db, api.Cache, p, sdk.RandomString(10))
164164

165-
integrationModel, err := integration.LoadModelByName(db, sdk.ArtifactManagerIntegration.Name)
165+
integrationModel, err := integration.LoadModelByName(db, sdk.ArtifactoryIntegration.Name)
166166
require.NoError(t, err)
167167

168168
integrationConfig := integrationModel.DefaultConfig.Clone()

engine/worker/internal/action/builtin_artifact_download.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ func GetArtifactFromIntegrationPlugin(ctx context.Context, wk workerruntime.Runt
175175
return res, err
176176
}
177177
opts := sdk.ParametersToMap(wk.Parameters())
178-
repoName := opts[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactManagerConfigCdsRepository)]
178+
repoName := opts[fmt.Sprintf("cds.integration.artifact_manager.%s", sdk.ArtifactoryConfigCdsRepository)]
179179
if repoName != artData.RepoName {
180180
wg.Done()
181181
wk.SendLog(ctx, workerruntime.LevelDebug, fmt.Sprintf("%s does not match configured repo name %s - skipped", repoName, artData.RepoName))

0 commit comments

Comments
 (0)