You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by ab...@apache.org on 2024/05/15 13:16:39 UTC
(incubator-devlake) branch main updated: Add commit_sha to github_releases and cicd_releases. (#7473)
This is an automated email from the ASF dual-hosted git repository.
abeizn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
The following commit(s) were added to refs/heads/main by this push:
new ccb7d93e7 Add commit_sha to github_releases and cicd_releases. (#7473)
ccb7d93e7 is described below
commit ccb7d93e7ab79b3be1fdfde578f9e90939131374
Author: Lynwee <li...@merico.dev>
AuthorDate: Wed May 15 21:16:31 2024 +0800
Add commit_sha to github_releases and cicd_releases. (#7473)
* feat(githubgraphql): add releases
* fix(githubgraphql): fix lint errors
* fix(githubgraphql): fix lint errors
* feat(githubgraphql): add commit_sha field
---
.../core/models/domainlayer/devops/cicd_release.go | 4 +-
.../20240515_add_commit_sha_to_cicd_release.go | 49 ++++++++++++++++++++++
backend/core/models/migrationscripts/register.go | 1 +
.../20240515_add_release_commit_sha.go | 46 ++++++++++++++++++++
.../github/models/migrationscripts/register.go | 1 +
backend/plugins/github/models/release.go | 1 +
backend/plugins/github/tasks/release_convertor.go | 1 +
.../github_graphql/tasks/release_collector.go | 37 +++++++++-------
.../github_graphql/tasks/release_extractor.go | 1 +
9 files changed, 124 insertions(+), 17 deletions(-)
diff --git a/backend/core/models/domainlayer/devops/cicd_release.go b/backend/core/models/domainlayer/devops/cicd_release.go
index f9ed74012..7a8b62061 100644
--- a/backend/core/models/domainlayer/devops/cicd_release.go
+++ b/backend/core/models/domainlayer/devops/cicd_release.go
@@ -42,8 +42,8 @@ type CicdRelease struct {
RepoId string `gorm:"type:varchar(255)"`
//RepoUrl string `gorm:"index;not null"`
- TagName string `json:"tagName"`
- //CommitSha string `gorm:"primaryKey;type:varchar(255)"`
+ TagName string `json:"tagName"`
+ CommitSha string `gorm:"uniqueIndex;type:varchar(255)"`
//CommitMsg string
//RefName string `gorm:"type:varchar(255)"`
}
diff --git a/backend/core/models/migrationscripts/20240515_add_commit_sha_to_cicd_release.go b/backend/core/models/migrationscripts/20240515_add_commit_sha_to_cicd_release.go
new file mode 100644
index 000000000..58afad5d2
--- /dev/null
+++ b/backend/core/models/migrationscripts/20240515_add_commit_sha_to_cicd_release.go
@@ -0,0 +1,49 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You 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 migrationscripts
+
+import (
+ "github.com/apache/incubator-devlake/core/context"
+ "github.com/apache/incubator-devlake/core/errors"
+ "github.com/apache/incubator-devlake/core/plugin"
+ "github.com/apache/incubator-devlake/helpers/migrationhelper"
+)
+
+var _ plugin.MigrationScript = (*addCommitShaToCicdRelease)(nil)
+
+type cicdRelease20240515 struct {
+ CommitSha string
+}
+
+func (cicdRelease20240515) TableName() string {
+ return "cicd_releases"
+}
+
+type addCommitShaToCicdRelease struct{}
+
+func (*addCommitShaToCicdRelease) Up(basicRes context.BasicRes) errors.Error {
+ return migrationhelper.AutoMigrateTables(basicRes, &cicdRelease20240515{})
+}
+
+func (*addCommitShaToCicdRelease) Version() uint64 {
+ return 20240515194901
+}
+
+func (*addCommitShaToCicdRelease) Name() string {
+ return "add commit_sha to cicd_releases"
+}
diff --git a/backend/core/models/migrationscripts/register.go b/backend/core/models/migrationscripts/register.go
index ac7f66fc9..8618db1aa 100644
--- a/backend/core/models/migrationscripts/register.go
+++ b/backend/core/models/migrationscripts/register.go
@@ -114,5 +114,6 @@ func All() []plugin.MigrationScript {
new(addDisplayTitleAndUrl),
new(addSubtaskStates),
new(addCicdRelease),
+ new(addCommitShaToCicdRelease),
}
}
diff --git a/backend/plugins/github/models/migrationscripts/20240515_add_release_commit_sha.go b/backend/plugins/github/models/migrationscripts/20240515_add_release_commit_sha.go
new file mode 100644
index 000000000..40833eb40
--- /dev/null
+++ b/backend/plugins/github/models/migrationscripts/20240515_add_release_commit_sha.go
@@ -0,0 +1,46 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You 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 migrationscripts
+
+import (
+ "github.com/apache/incubator-devlake/core/context"
+ "github.com/apache/incubator-devlake/core/errors"
+ "github.com/apache/incubator-devlake/helpers/migrationhelper"
+)
+
+type addReleaseCommitSha struct{}
+
+type release20240515 struct {
+ CommitSha string
+}
+
+func (release20240515) TableName() string {
+ return "_tool_github_releases"
+}
+
+func (u *addReleaseCommitSha) Up(baseRes context.BasicRes) errors.Error {
+ return migrationhelper.AutoMigrateTables(baseRes, &release20240515{})
+}
+
+func (*addReleaseCommitSha) Version() uint64 {
+ return 20240515194858
+}
+
+func (*addReleaseCommitSha) Name() string {
+ return "add commit_sha to _tool_github_releases"
+}
diff --git a/backend/plugins/github/models/migrationscripts/register.go b/backend/plugins/github/models/migrationscripts/register.go
index 89ebfa429..496f54544 100644
--- a/backend/plugins/github/models/migrationscripts/register.go
+++ b/backend/plugins/github/models/migrationscripts/register.go
@@ -49,5 +49,6 @@ func All() []plugin.MigrationScript {
new(modifyIssueTypeLength),
new(addWorkflowDisplayTitle),
new(addReleaseTable),
+ new(addReleaseCommitSha),
}
}
diff --git a/backend/plugins/github/models/release.go b/backend/plugins/github/models/release.go
index d71383182..1e4ae1688 100644
--- a/backend/plugins/github/models/release.go
+++ b/backend/plugins/github/models/release.go
@@ -42,6 +42,7 @@ type GithubRelease struct {
ResourcePath string `json:"resourcePath"`
TagName string `json:"tagName"`
UpdatedAt time.Time `json:"updatedAt"`
+ CommitSha string `json:"commit_sha"`
URL string `json:"url"`
}
diff --git a/backend/plugins/github/tasks/release_convertor.go b/backend/plugins/github/tasks/release_convertor.go
index bcf4914ac..1a1389093 100644
--- a/backend/plugins/github/tasks/release_convertor.go
+++ b/backend/plugins/github/tasks/release_convertor.go
@@ -83,6 +83,7 @@ func ConvertRelease(taskCtx plugin.SubTaskContext) errors.Error {
IsLatest: githubRelease.IsLatest,
IsPrerelease: githubRelease.IsPrerelease,
TagName: githubRelease.TagName,
+ CommitSha: githubRelease.CommitSha,
AuthorID: githubRelease.AuthorID,
diff --git a/backend/plugins/github_graphql/tasks/release_collector.go b/backend/plugins/github_graphql/tasks/release_collector.go
index e80c13887..4b71626d0 100644
--- a/backend/plugins/github_graphql/tasks/release_collector.go
+++ b/backend/plugins/github_graphql/tasks/release_collector.go
@@ -48,22 +48,29 @@ type GraphqlQueryReleaseAuthor struct {
ID string `graphql:"id"`
}
+type GraphqlQueryReleaseTagCommit struct {
+ ID string `graphql:"id"`
+ Oid string `graphql:"oid"`
+ AbbreviatedOid string `graphql:"abbreviatedOid"`
+}
+
type GraphqlQueryRelease struct {
- Author GraphqlQueryReleaseAuthor `graphql:"author"`
- DatabaseID int `graphql:"databaseId"`
- Id string `graphql:"id"`
- CreatedAt time.Time `graphql:"createdAt"`
- Description string `graphql:"description"`
- DescriptionHTML string `graphql:"descriptionHTML"`
- IsDraft bool `graphql:"isDraft"`
- IsLatest bool `graphql:"isLatest"`
- IsPrerelease bool `graphql:"isPrerelease"`
- Name string `graphql:"name"`
- PublishedAt time.Time `graphql:"publishedAt"`
- ResourcePath string `graphql:"resourcePath"`
- TagName string `graphql:"tagName"`
- UpdatedAt time.Time `graphql:"updatedAt"`
- URL string `graphql:"url"`
+ Author GraphqlQueryReleaseAuthor `graphql:"author"`
+ DatabaseID int `graphql:"databaseId"`
+ Id string `graphql:"id"`
+ CreatedAt time.Time `graphql:"createdAt"`
+ Description string `graphql:"description"`
+ DescriptionHTML string `graphql:"descriptionHTML"`
+ IsDraft bool `graphql:"isDraft"`
+ IsLatest bool `graphql:"isLatest"`
+ IsPrerelease bool `graphql:"isPrerelease"`
+ Name string `graphql:"name"`
+ PublishedAt time.Time `graphql:"publishedAt"`
+ ResourcePath string `graphql:"resourcePath"`
+ TagName string `graphql:"tagName"`
+ TagCommit GraphqlQueryReleaseTagCommit `graphql:"tagCommit"`
+ UpdatedAt time.Time `graphql:"updatedAt"`
+ URL string `graphql:"url"`
}
var CollectReleaseMeta = plugin.SubTaskMeta{
diff --git a/backend/plugins/github_graphql/tasks/release_extractor.go b/backend/plugins/github_graphql/tasks/release_extractor.go
index 4d019dcc8..ef98a2803 100644
--- a/backend/plugins/github_graphql/tasks/release_extractor.go
+++ b/backend/plugins/github_graphql/tasks/release_extractor.go
@@ -97,6 +97,7 @@ func convertGitHubRelease(release *GraphqlQueryRelease, connectionId uint64, git
TagName: release.TagName,
UpdatedAt: release.UpdatedAt,
URL: release.URL,
+ CommitSha: release.TagCommit.Oid,
}
if release.Author.Name != nil {
ret.AuthorName = *release.Author.Name