This is an automated email from the ASF dual-hosted git repository.
benjobs pushed a commit to branch dev-2.1.5
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git
The following commit(s) were added to refs/heads/dev-2.1.5 by this push:
new b0dfff8a8 [Feat] git clone by tag support. (#4008)
b0dfff8a8 is described below
commit b0dfff8a8b9375f739388e9b2968e3876f790fc3
Author: benjobs <[email protected]>
AuthorDate: Fri Aug 30 11:41:09 2024 +0800
[Feat] git clone by tag support. (#4008)
---
.../streampark/console/base/util/GitUtils.java | 50 ++++++++++++++++++----
.../console/core/service/ProjectService.java | 2 +
.../core/service/impl/ProjectServiceImpl.java | 18 +++++++-
.../console/core/task/ProjectBuildTask.java | 2 +-
.../console/core/service/ProjectServiceTest.java | 7 +++
.../GitUtilsTest.java} | 40 ++++++++---------
6 files changed, 85 insertions(+), 34 deletions(-)
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/util/GitUtils.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/util/GitUtils.java
index f13c158a2..bfee0ab95 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/util/GitUtils.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/base/util/GitUtils.java
@@ -53,13 +53,22 @@ public class GitUtils {
try {
CloneCommand cloneCommand =
Git.cloneRepository().setURI(request.getUrl()).setDirectory(request.getStoreDir());
- if (request.getBranches() != null) {
- cloneCommand.setBranch(Constants.R_HEADS + request.getBranches());
+ setCredentials(cloneCommand, request);
+ if (StringUtils.isNotBlank(request.getBranch())) {
+ cloneCommand.setBranch(Constants.R_HEADS + request.getBranch());
cloneCommand.setBranchesToClone(
- Collections.singletonList(Constants.R_HEADS +
request.getBranches()));
+ Collections.singletonList(Constants.R_HEADS +
request.getBranch()));
}
- setCredentials(cloneCommand, request);
- return cloneCommand.call();
+
+ Git git = cloneCommand.call();
+ if (StringUtils.isNotBlank(request.getBranch())) {
+ git.checkout().setName(request.getBranch()).call();
+ } else if (StringUtils.isNotBlank(request.getTag())) {
+ git.checkout().setName(request.getTag()).call();
+ } else {
+ throw new IllegalArgumentException("git clone failed, No tag or branch
specified");
+ }
+ return git;
} catch (Exception e) {
if (e instanceof InvalidRemoteException && request.getAuthType() ==
GitAuthType.HTTP) {
String url = httpUrlToSSH(request.getUrl());
@@ -70,7 +79,7 @@ public class GitUtils {
}
}
- public static List<String> getBranchList(GitGetRequest request) throws
GitAPIException {
+ public static List<String> getBranches(GitGetRequest request) throws
GitAPIException {
try {
LsRemoteCommand command =
Git.lsRemoteRepository().setRemote(request.getUrl()).setHeads(true);
setCredentials(command, request);
@@ -88,7 +97,31 @@ public class GitUtils {
if (e instanceof InvalidRemoteException && request.getAuthType() ==
GitAuthType.HTTP) {
String url = httpUrlToSSH(request.getUrl());
request.setUrl(url);
- return getBranchList(request);
+ return getBranches(request);
+ }
+ throw e;
+ }
+ }
+
+ public static List<String> getTags(GitGetRequest request) throws
GitAPIException {
+ try {
+ LsRemoteCommand command =
Git.lsRemoteRepository().setRemote(request.getUrl()).setTags(true);
+ setCredentials(command, request);
+ Collection<Ref> refList = command.call();
+ List<String> branchList = new ArrayList<>(4);
+ for (Ref ref : refList) {
+ String refName = ref.getName();
+ if (refName.startsWith(Constants.R_TAGS)) {
+ String branchName = refName.replace(Constants.R_TAGS, "");
+ branchList.add(branchName);
+ }
+ }
+ return branchList;
+ } catch (Exception e) {
+ if (e instanceof InvalidRemoteException && request.getAuthType() ==
GitAuthType.HTTP) {
+ String url = httpUrlToSSH(request.getUrl());
+ request.setUrl(url);
+ return getTags(request);
}
throw e;
}
@@ -197,6 +230,7 @@ public class GitUtils {
@Setter
public static class GitCloneRequest extends GitGetRequest {
private File storeDir;
- private String branches;
+ private String branch;
+ private String tag;
}
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ProjectService.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ProjectService.java
index ae4eb87d4..19f6937fe 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ProjectService.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/ProjectService.java
@@ -62,4 +62,6 @@ public interface ProjectService extends IService<Project> {
List<String> getAllBranches(Project project);
GitAuthorizedError gitCheck(Project project);
+
+ List<String> getAllTags(Project project);
}
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ProjectServiceImpl.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ProjectServiceImpl.java
index 8b9c167b6..c82a7006d 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ProjectServiceImpl.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/service/impl/ProjectServiceImpl.java
@@ -322,7 +322,7 @@ public class ProjectServiceImpl extends
ServiceImpl<ProjectMapper, Project>
request.setUsername(project.getUserName());
request.setPassword(project.getPassword());
request.setPrivateKey(project.getPrvkeyPath());
- return GitUtils.getBranchList(request);
+ return GitUtils.getBranches(request);
} catch (Exception e) {
throw new ApiDetailException(e);
}
@@ -336,7 +336,7 @@ public class ProjectServiceImpl extends
ServiceImpl<ProjectMapper, Project>
request.setUsername(project.getUserName());
request.setPassword(project.getPassword());
request.setPrivateKey(project.getPrvkeyPath());
- GitUtils.getBranchList(request);
+ GitUtils.getBranches(request);
return GitAuthorizedError.SUCCESS;
} catch (Exception e) {
String err = e.getMessage();
@@ -349,6 +349,20 @@ public class ProjectServiceImpl extends
ServiceImpl<ProjectMapper, Project>
}
}
+ @Override
+ public List<String> getAllTags(Project project) {
+ try {
+ GitUtils.GitGetRequest request = new GitUtils.GitGetRequest();
+ request.setUrl(project.getUrl());
+ request.setUsername(project.getUserName());
+ request.setPassword(project.getPassword());
+ request.setPrivateKey(project.getPrvkeyPath());
+ return GitUtils.getTags(request);
+ } catch (Exception e) {
+ throw new ApiDetailException(e);
+ }
+ }
+
@Override
public List<Map<String, Object>> listConf(Project project) {
try {
diff --git
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/task/ProjectBuildTask.java
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/task/ProjectBuildTask.java
index 5fe20cd13..4859f4f2a 100644
---
a/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/task/ProjectBuildTask.java
+++
b/streampark-console/streampark-console-service/src/main/java/org/apache/streampark/console/core/task/ProjectBuildTask.java
@@ -93,7 +93,7 @@ public class ProjectBuildTask extends AbstractLogFileTask {
GitUtils.GitCloneRequest request = new GitUtils.GitCloneRequest();
request.setUrl(project.getUrl());
- request.setBranches(project.getBranches());
+ request.setBranch(project.getBranches());
request.setStoreDir(project.getAppSource());
request.setUsername(project.getUserName());
request.setPassword(project.getPassword());
diff --git
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/ProjectServiceTest.java
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/ProjectServiceTest.java
index e82a61cd9..151dd2070 100644
---
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/ProjectServiceTest.java
+++
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/ProjectServiceTest.java
@@ -46,6 +46,13 @@ public class ProjectServiceTest extends SpringTestBase {
branches.forEach(System.out::println);
}
+ @Disabled("This test case can't be runnable due to external service is not
available.")
+ @Test
+ void testGitTags() {
+ List<String> branches = projectService.getAllTags(project);
+ branches.forEach(System.out::println);
+ }
+
@Disabled("This test case can't be runnable due to external service is not
available.")
@Test
void testGitCheckAuth() {
diff --git
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/ProjectServiceTest.java
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/utils/GitUtilsTest.java
similarity index 55%
copy from
streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/ProjectServiceTest.java
copy to
streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/utils/GitUtilsTest.java
index e82a61cd9..579f77897 100644
---
a/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/service/ProjectServiceTest.java
+++
b/streampark-console/streampark-console-service/src/test/java/org/apache/streampark/console/core/utils/GitUtilsTest.java
@@ -15,41 +15,35 @@
* limitations under the License.
*/
-package org.apache.streampark.console.core.service;
+package org.apache.streampark.console.core.utils;
-import org.apache.streampark.console.SpringTestBase;
-import org.apache.streampark.console.core.entity.Project;
-import org.apache.streampark.console.core.enums.GitAuthorizedError;
+import org.apache.streampark.console.base.util.GitUtils;
-import org.junit.jupiter.api.BeforeEach;
+import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import java.util.List;
+import java.io.File;
-public class ProjectServiceTest extends SpringTestBase {
-
- private final Project project = new Project();
-
- @Autowired private ProjectService projectService;
-
- @BeforeEach
- void before() {
- project.setUrl("[email protected]:apache/incubator-streampark.git");
- }
+public class GitUtilsTest {
@Disabled("This test case can't be runnable due to external service is not
available.")
@Test
- void testGitBranches() {
- List<String> branches = projectService.getAllBranches(project);
- branches.forEach(System.out::println);
+ void testGitCloneByTag() throws GitAPIException {
+ GitUtils.GitCloneRequest request = new GitUtils.GitCloneRequest();
+ request.setUrl("[email protected]:apache/incubator-streampark.git");
+ request.setTag("v1.2.3");
+ request.setStoreDir(new File("/tmp"));
+ GitUtils.clone(request);
}
@Disabled("This test case can't be runnable due to external service is not
available.")
@Test
- void testGitCheckAuth() {
- GitAuthorizedError error = projectService.gitCheck(project);
- System.out.println(error);
+ void testGitCloneByBranch() throws GitAPIException {
+ GitUtils.GitCloneRequest request = new GitUtils.GitCloneRequest();
+ request.setUrl("[email protected]:apache/incubator-streampark.git");
+ request.setBranch("2.1.4");
+ request.setStoreDir(new File("/tmp"));
+ GitUtils.clone(request);
}
}