From 2ad5edc1028dbd73eb683fb43bed268c8ed2641a Mon Sep 17 00:00:00 2001 From: user <8352767+zhegu123@user.noreply.gitee.com> Date: Tue, 29 Aug 2023 09:03:38 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=8F=96DEW?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=E5=87=AD=E6=8D=AE=E7=89=88=E6=9C=AC=E7=9A=84?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=92=8C=E7=89=88=E6=9C=AC=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E6=98=8E=E6=96=87=E5=87=AD=E6=8D=AE=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 25 ++++ image/DEWCredentials.jpg | Bin 0 -> 25380 bytes pom.xml | 25 ++++ .../com/huawei/jenkins/iam/CustomInput.java | 58 ++++++++ .../com/huawei/jenkins/iam/iamSecretStep.java | 136 ++++++++++++++++++ .../com/huawei/jenkins/iam/secretService.java | 64 +++++++++ .../codeCheckPipelineStep/help-region.html | 2 +- .../huawei/jenkins/iam/Messages.properties | 6 + .../jenkins/iam/Messages_zh_CN.properties | 1 + .../jenkins/iam/iamSecretStep/config.jelly | 35 +++++ .../iam/iamSecretStep/help-accessKey.html | 19 +++ .../iam/iamSecretStep/help-region.html | 18 +++ .../iam/iamSecretStep/help-secretKey.html | 19 +++ .../iam/iamSecretStep/help-secretName.html | 18 +++ .../iam/iamSecretStep/help-versionId.html | 18 +++ .../jenkins/iam/iamSecretStep/help.html | 20 +++ .../vss/vssCheckPipelineStep/help-region.html | 2 +- src/main/resources/index.jelly | 2 +- 18 files changed, 465 insertions(+), 3 deletions(-) create mode 100644 image/DEWCredentials.jpg create mode 100644 src/main/java/com/huawei/jenkins/iam/CustomInput.java create mode 100644 src/main/java/com/huawei/jenkins/iam/iamSecretStep.java create mode 100644 src/main/java/com/huawei/jenkins/iam/secretService.java create mode 100644 src/main/resources/com/huawei/jenkins/iam/Messages.properties create mode 100644 src/main/resources/com/huawei/jenkins/iam/Messages_zh_CN.properties create mode 100644 src/main/resources/com/huawei/jenkins/iam/iamSecretStep/config.jelly create mode 100644 src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-accessKey.html create mode 100644 src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-region.html create mode 100644 src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-secretKey.html create mode 100644 src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-secretName.html create mode 100644 src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-versionId.html create mode 100644 src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help.html diff --git a/README.md b/README.md index 8af3339..9940535 100644 --- a/README.md +++ b/README.md @@ -155,6 +155,31 @@ ak/sk示例1:OBSPipelineUpload(ak:"...",sk:"...",endpoint:"obs.cn-south-1.myhu ![上传](image/codeArtsPipeline.jpg) +## 6、DEW服务查询凭据的版本与凭据值 + +###查询指定凭据版本的信息和版本中的明文凭据值 + +#### Pipeline查询指定凭据 + +##### 参数说明 + +| 参数名称 | 参数说明 | +| ------------------ | ------------------------------------------------------------ | +| accessKey | Access Key | +| secretKey | Secret Key | +| region | Region:所在区域,如cn-north-4 +| secretName | 凭证名称 | +| versionId | 凭证版本 | + +##### 片段生成器生成 + +示例:getContracts(accessKey: '', region: '', secretKey: '', secretName: '', versionId: '') + +![上传](image/DEWCredentials.jpg) + + + + ## 构建 1.修改${USER}/.m2/settings.xml中的maven配置文件 diff --git a/image/DEWCredentials.jpg b/image/DEWCredentials.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5c16ab6b0a8a5442e59d2d355cb1ec764567e421 GIT binary patch literal 25380 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 + + com.huaweicloud.sdk + huaweicloud-sdk-csms + 3.1.53 + + + com.huaweicloud.sdk + huaweicloud-sdk-core + + + + + + + com.huaweicloud.sdk + huaweicloud-sdk-iam + 3.1.54 + + + com.huaweicloud.sdk + huaweicloud-sdk-core + + + + diff --git a/src/main/java/com/huawei/jenkins/iam/CustomInput.java b/src/main/java/com/huawei/jenkins/iam/CustomInput.java new file mode 100644 index 0000000..8be81bf --- /dev/null +++ b/src/main/java/com/huawei/jenkins/iam/CustomInput.java @@ -0,0 +1,58 @@ +package com.huawei.jenkins.iam; + +/** + * 用户自定义输出参数 + */ +public class CustomInput { + private static final long serialVersionUID = 1L; + + private String accessKey; + + private String secretKey; + + private String secretName; + + private String region; + + private String versionId; + + public String getAccessKey() { + return accessKey; + } + + public void setAccessKey(String accessKey) { + this.accessKey = accessKey; + } + + public String getSecretKey() { + return secretKey; + } + + public void setSecretKey(String secretKey) { + this.secretKey = secretKey; + } + + public String getSecretName() { + return secretName; + } + + public void setSecretName(String secretName) { + this.secretName = secretName; + } + + public String getRegion() { + return region; + } + + public void setRegion(String region) { + this.region = region; + } + + public String getVersionId() { + return versionId; + } + + public void setVersionId(String versionId) { + this.versionId = versionId; + } +} diff --git a/src/main/java/com/huawei/jenkins/iam/iamSecretStep.java b/src/main/java/com/huawei/jenkins/iam/iamSecretStep.java new file mode 100644 index 0000000..be4fa60 --- /dev/null +++ b/src/main/java/com/huawei/jenkins/iam/iamSecretStep.java @@ -0,0 +1,136 @@ +package com.huawei.jenkins.iam; + +import hudson.EnvVars; +import hudson.Extension; +import hudson.FilePath; +import hudson.model.TaskListener; +import org.jenkinsci.plugins.workflow.steps.*; +import org.kohsuke.stapler.DataBoundConstructor; +import org.kohsuke.stapler.DataBoundSetter; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +public class iamSecretStep extends Step { + + private String accessKey; + + private String secretKey; + + private String secretName; + + private String region; + + private String versionId; + + + public String getAccessKey() { + return accessKey; + } + + @DataBoundSetter + public void setAccessKey(String accessKey) { + this.accessKey = accessKey; + } + + public String getSecretKey() { + return secretKey; + } + + @DataBoundSetter + public void setSecretKey(String secretKey) { + this.secretKey = secretKey; + } + + public String getSecretName() { + return secretName; + } + + @DataBoundSetter + public void setSecretName(String secretName) { + this.secretName = secretName; + } + + + public String getRegion() { + return region; + } + + @DataBoundSetter + public void setRegion(String region) { + this.region = region; + } + + public String getVersionId() { + return versionId; + } + + @DataBoundSetter + public void setVersionId(String versionId) { + this.versionId = versionId; + } + + @DataBoundConstructor + public iamSecretStep(String region) { + this.region = region; + } + + @Override + public StepExecution start(StepContext context) throws Exception { + return new Execution(this, context); + } + + + @Extension + public static class DescriptorImpl extends StepDescriptor { + + @Override + public Set> getRequiredContext() { + return requires(TaskListener.class, EnvVars.class, FilePath.class); + } + + @Override + public String getFunctionName() { + return "getContracts"; + } + + @Override + public String getDisplayName() { + return "华为云凭证获取"; + } + } + + + public static > Set requires(T... classes) { + return new HashSet<>(Arrays.asList(classes)); + } + + + public static class Execution extends SynchronousNonBlockingStepExecution { + + protected static final long serialVersionUID = 1L; + + protected final transient iamSecretStep step; + + public Execution(iamSecretStep step, StepContext context) { + super(context); + this.step = step; + + } + + @Override + public String run() throws Exception { + CustomInput customInput = new CustomInput(); + customInput.setAccessKey(step.getAccessKey()); + customInput.setSecretKey(step.getSecretKey()); + customInput.setRegion(step.getRegion()); + customInput.setSecretName(step.getSecretName()); + customInput.setVersionId(step.getVersionId()); + TaskListener listener = iamSecretStep.Execution.this.getContext().get(TaskListener.class); + return secretService.getCredentials(listener,customInput); + } + } + + +} diff --git a/src/main/java/com/huawei/jenkins/iam/secretService.java b/src/main/java/com/huawei/jenkins/iam/secretService.java new file mode 100644 index 0000000..8b73fe4 --- /dev/null +++ b/src/main/java/com/huawei/jenkins/iam/secretService.java @@ -0,0 +1,64 @@ +package com.huawei.jenkins.iam; + + +import com.google.common.base.Preconditions; +import com.huaweicloud.sdk.core.auth.BasicCredentials; +import com.huaweicloud.sdk.core.auth.ICredential; +import com.huaweicloud.sdk.core.exception.ConnectionException; +import com.huaweicloud.sdk.core.exception.RequestTimeoutException; +import com.huaweicloud.sdk.core.exception.ServiceResponseException; +import com.huaweicloud.sdk.csms.v1.CsmsClient; +import com.huaweicloud.sdk.csms.v1.model.ShowSecretVersionRequest; +import com.huaweicloud.sdk.csms.v1.model.ShowSecretVersionResponse; +import com.huaweicloud.sdk.csms.v1.region.CsmsRegion; +import hudson.model.TaskListener; +import org.apache.commons.lang.StringUtils; + +import java.io.Serializable; + +public class secretService implements Serializable { + private static final long serialVersionUID = 1; + + + public static String getCredentials(TaskListener listener, CustomInput customInput){ + + inputValidate(customInput); + + ICredential auth = new BasicCredentials() + .withAk(customInput.getAccessKey()) + .withSk(customInput.getSecretKey()); + + CsmsClient csmsClient = CsmsClient.newBuilder() + .withCredential(auth) + .withRegion(CsmsRegion.valueOf(customInput.getRegion())) + .build(); + + String secretString =""; + try { + ShowSecretVersionResponse latestVersionValue = csmsClient.showSecretVersion(new ShowSecretVersionRequest().withSecretName(customInput.getSecretName()).withVersionId(customInput.getVersionId() == null ? "latest" : customInput.getVersionId())); + secretString = latestVersionValue.getVersion().getSecretString(); + } catch (ConnectionException e) { + e.printStackTrace(); + } catch (RequestTimeoutException e) { + e.printStackTrace(); + } catch (ServiceResponseException e) { + e.printStackTrace(); + listener.getLogger().println("ErrorMsg:" + e.getErrorMsg()); + } + return secretString; + } + + + + private static void inputValidate(CustomInput customInput) { + final String secretName = customInput.getSecretName(); + final String region = customInput.getRegion(); + final String sk = customInput.getSecretKey(); + final String ak = customInput.getAccessKey(); + Preconditions.checkArgument(StringUtils.isNotBlank(secretName), "ObsPath can not be blank"); + Preconditions.checkArgument(StringUtils.isNotBlank(region), "region can not be blank"); + Preconditions.checkArgument(StringUtils.isNotBlank(ak) && StringUtils.isNotBlank(sk), "Ak, Sk can not be blank"); + } + + +} diff --git a/src/main/resources/com/huawei/jenkins/codeCheck/codeCheckPipelineStep/help-region.html b/src/main/resources/com/huawei/jenkins/codeCheck/codeCheckPipelineStep/help-region.html index 3ccb0ee..743a86d 100644 --- a/src/main/resources/com/huawei/jenkins/codeCheck/codeCheckPipelineStep/help-region.html +++ b/src/main/resources/com/huawei/jenkins/codeCheck/codeCheckPipelineStep/help-region.html @@ -14,5 +14,5 @@ limitations under the License. -->
- The currently callable territory + Huawei Cloud region
diff --git a/src/main/resources/com/huawei/jenkins/iam/Messages.properties b/src/main/resources/com/huawei/jenkins/iam/Messages.properties new file mode 100644 index 0000000..619a94c --- /dev/null +++ b/src/main/resources/com/huawei/jenkins/iam/Messages.properties @@ -0,0 +1,6 @@ +IAMPublish.DisplayName=HuaweiCloud DEW + +IAMPublish.MissingRegion=Please set Region +IAMPublish.MissingTaskName=Please set secret name +IAMPublish.MissingUrl=Please set version + diff --git a/src/main/resources/com/huawei/jenkins/iam/Messages_zh_CN.properties b/src/main/resources/com/huawei/jenkins/iam/Messages_zh_CN.properties new file mode 100644 index 0000000..f3b3d69 --- /dev/null +++ b/src/main/resources/com/huawei/jenkins/iam/Messages_zh_CN.properties @@ -0,0 +1 @@ +IAMPublish.DisplayName=\u534e\u4e3a\u4e91OBS\u4e0a\u4f20 diff --git a/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/config.jelly b/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/config.jelly new file mode 100644 index 0000000..f17a1d2 --- /dev/null +++ b/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/config.jelly @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-accessKey.html b/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-accessKey.html new file mode 100644 index 0000000..596311a --- /dev/null +++ b/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-accessKey.html @@ -0,0 +1,19 @@ + +
+ HuaweiCloud Access Key, used only when the credential id is null
+ config +
diff --git a/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-region.html b/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-region.html new file mode 100644 index 0000000..743a86d --- /dev/null +++ b/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-region.html @@ -0,0 +1,18 @@ + +
+ Huawei Cloud region +
diff --git a/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-secretKey.html b/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-secretKey.html new file mode 100644 index 0000000..5944430 --- /dev/null +++ b/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-secretKey.html @@ -0,0 +1,19 @@ + +
+ HuaweiCloud Secret Key, used only when the credential id is null
+ config +
diff --git a/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-secretName.html b/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-secretName.html new file mode 100644 index 0000000..0d37073 --- /dev/null +++ b/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-secretName.html @@ -0,0 +1,18 @@ + +
+ Huawei Cloud dew Secret name +
diff --git a/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-versionId.html b/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-versionId.html new file mode 100644 index 0000000..89a0d87 --- /dev/null +++ b/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help-versionId.html @@ -0,0 +1,18 @@ + +
+ Huawei Cloud dew Secret version +
diff --git a/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help.html b/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help.html new file mode 100644 index 0000000..3011317 --- /dev/null +++ b/src/main/resources/com/huawei/jenkins/iam/iamSecretStep/help.html @@ -0,0 +1,20 @@ + +
+

+ get Huawei Cloud credential +

+
diff --git a/src/main/resources/com/huawei/jenkins/vss/vssCheckPipelineStep/help-region.html b/src/main/resources/com/huawei/jenkins/vss/vssCheckPipelineStep/help-region.html index 3ccb0ee..743a86d 100644 --- a/src/main/resources/com/huawei/jenkins/vss/vssCheckPipelineStep/help-region.html +++ b/src/main/resources/com/huawei/jenkins/vss/vssCheckPipelineStep/help-region.html @@ -14,5 +14,5 @@ limitations under the License. -->
- The currently callable territory + Huawei Cloud region
diff --git a/src/main/resources/index.jelly b/src/main/resources/index.jelly index 729839c..7c79072 100644 --- a/src/main/resources/index.jelly +++ b/src/main/resources/index.jelly @@ -1,4 +1,4 @@
- This plugin provides the “Huawei Cloud Storage Uploader” post-build step for publishing build artifacts to OBS Storage. + The plug-in provides "Huawei cloud storage and code Arts capabilities, and VSS website vulnerability scanning and key acquisition capabilities."
-- Gitee From cd506b8bf228732356c2a4a2d24907d62b76187c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=B9=A7=E9=B8=AA?= <8352767+zhegu123@user.noreply.gitee.com> Date: Tue, 29 Aug 2023 01:08:23 +0000 Subject: [PATCH 2/2] update README.md. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 鹧鸪 <8352767+zhegu123@user.noreply.gitee.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9940535..e410283 100644 --- a/README.md +++ b/README.md @@ -157,7 +157,7 @@ ak/sk示例1:OBSPipelineUpload(ak:"...",sk:"...",endpoint:"obs.cn-south-1.myhu ## 6、DEW服务查询凭据的版本与凭据值 -###查询指定凭据版本的信息和版本中的明文凭据值 +### 查询指定凭据版本的信息和版本中的明文凭据值 #### Pipeline查询指定凭据 -- Gitee