{
+
+ private String aliyunAccessKey;
+ private String aliyunSecretKey;
+ private String aliyunEndPointSuffix;
+
+ public DescriptorImpl() {
+ super(AliyunOSSPublisher.class);
+ load();
+ }
+
+
+ @Override
+ public boolean isApplicable(Class extends AbstractProject> aClass) {
+ return true;
+ }
+
+ public String getDisplayName() {
+ return "上传Artifacts到阿里云OSS";
+ }
+
+ @Override
+ public boolean configure(StaplerRequest req, JSONObject formData)
+ throws FormException {
+ req.bindParameters(this);
+ this.aliyunAccessKey = formData.getString("aliyunAccessKey");
+ this.aliyunSecretKey = formData.getString("aliyunSecretKey");
+ this.aliyunEndPointSuffix = formData.getString("aliyunEndPointSuffix");
+ save();
+ return super.configure(req, formData);
+ }
+
+ public FormValidation doCheckAccount(
+ @QueryParameter String aliyunAccessKey,
+ @QueryParameter String aliyunSecretKey,
+ @QueryParameter String aliyunEndPointSuffix) {
+ if (Utils.isNullOrEmpty(aliyunAccessKey)) {
+ return FormValidation.error("阿里云AccessKey不能为空!");
+ }
+ if (Utils.isNullOrEmpty(aliyunSecretKey)) {
+ return FormValidation.error("阿里云SecretKey不能为空!");
+ }
+ if (Utils.isNullOrEmpty(aliyunEndPointSuffix)) {
+ return FormValidation.error("阿里云EndPointSuffix不能为空!");
+ }
+ try {
+ AliyunOSSClient.validateAliyunAccount(aliyunAccessKey,
+ aliyunSecretKey);
+ } catch (Exception e) {
+ return FormValidation.error(e.getMessage());
+ }
+ return FormValidation.ok("验证阿里云帐号成功!");
+ }
+
+ public FormValidation doCheckBucket(@QueryParameter String val)
+ throws IOException, ServletException {
+ if (Utils.isNullOrEmpty(val)) {
+ return FormValidation.error("Bucket不能为空!");
+ }
+ try {
+ AliyunOSSClient.validateOSSBucket(aliyunAccessKey,
+ aliyunSecretKey, val);
+ } catch (Exception e) {
+ return FormValidation.error(e.getMessage());
+ }
+ return FormValidation.ok();
+ }
+
+ public FormValidation doCheckPath(@QueryParameter String val) {
+ if (Utils.isNullOrEmpty(val)) {
+ return FormValidation.error("Artifact路径不能为空!");
+ }
+ return FormValidation.ok();
+ }
+
+ public String getAliyunAccessKey() {
+ return aliyunAccessKey;
+ }
+
+ public void setAliyunAccessKey(String aliyunAccessKey) {
+ this.aliyunAccessKey = aliyunAccessKey;
+ }
+
+ public String getAliyunSecretKey() {
+ return aliyunSecretKey;
+ }
+
+ public void setAliyunSecretKey(String aliyunSecretKey) {
+ this.aliyunSecretKey = aliyunSecretKey;
+ }
+
+ public String getAliyunEndPointSuffix() {
+ return aliyunEndPointSuffix;
+ }
+
+ public void setAliyunEndPointSuffix(String aliyunEndPointSuffix) {
+ this.aliyunEndPointSuffix = aliyunEndPointSuffix;
+ }
+ }
+
+
+ @Override
+ public void perform(@Nonnull Run, ?> run, @Nonnull FilePath filePath, @Nonnull Launcher launcher, @Nonnull TaskListener listener) throws InterruptedException, IOException {
+ this.logger = listener.getLogger();
+ final boolean buildFailed = run.getResult() == Result.FAILURE;
+ if (buildFailed) {
+ logger.println("Job构建失败,无需上传Aritfacts到阿里云OSS.");
+ }
+
+ // Resolve file path
+ String expFP = Utils.replaceTokens(run, listener, filesPath);
+
+ if (expFP != null) {
+ expFP = expFP.trim();
+ }
+
+ // Resolve virtual path
+ String expVP = Utils.replaceTokens(run, listener, objectPrefix);
+ if (Utils.isNullOrEmpty(expVP)) {
+ expVP = null;
+ }
+ if (!Utils.isNullOrEmpty(expVP) && !expVP.endsWith(Utils.FWD_SLASH)) {
+ expVP = expVP.trim() + Utils.FWD_SLASH;
+ }
+
+ try {
+ int filesUploaded = AliyunOSSClient.upload(run, listener,
this.getDescriptor().aliyunAccessKey,
- this.getDescriptor().aliyunSecretKey,
+ this.getDescriptor().aliyunSecretKey,
this.getDescriptor().aliyunEndPointSuffix,
- bucketName, expFP, expVP);
- if (filesUploaded > 0) {
- listener.getLogger().println("上传Artifacts到阿里云OSS成功,上传文件个数:" + filesUploaded);
- success = true;
- }
-
- } catch (Exception e) {
- this.logger.println("上传Artifact到阿里云OSS失败,错误消息如下:");
- this.logger.println(e.getMessage());
- e.printStackTrace(this.logger);
- success = false;
- }
- return success;
- }
+ bucketName, expFP, expVP, filePath);
+ if (filesUploaded > 0) {
+ listener.getLogger().println("上传Artifacts到阿里云OSS成功,上传文件个数:" + filesUploaded);
+ }
+
+ } catch (Exception e) {
+ this.logger.println("上传Artifact到阿里云OSS失败,错误消息如下:");
+ this.logger.println(e.getMessage());
+ e.printStackTrace(this.logger);
+ }
+ }
}
diff --git a/src/main/java/com/fit2cloud/jenkins/aliyunoss/Utils.java b/src/main/java/com/fit2cloud/jenkins/aliyunoss/Utils.java
index f95a279..c7273e4 100644
--- a/src/main/java/com/fit2cloud/jenkins/aliyunoss/Utils.java
+++ b/src/main/java/com/fit2cloud/jenkins/aliyunoss/Utils.java
@@ -6,6 +6,8 @@
import hudson.Util;
import hudson.model.BuildListener;
import hudson.model.AbstractBuild;
+import hudson.model.Run;
+import hudson.model.TaskListener;
public class Utils {
@@ -19,8 +21,8 @@ public static boolean isNullOrEmpty(final String name) {
return isValid;
}
- public static String replaceTokens(AbstractBuild, ?> build,
- BuildListener listener, String text) throws IOException,
+ public static String replaceTokens(Run, ?> build,
+ TaskListener listener, String text) throws IOException,
InterruptedException {
String newText = null;
if (!isNullOrEmpty(text)) {
diff --git a/src/main/resources/index.jelly b/src/main/resources/index.jelly
index 646f1be..52df453 100644
--- a/src/main/resources/index.jelly
+++ b/src/main/resources/index.jelly
@@ -1,3 +1,3 @@
- 阿里云-OSS插件可以在构建后将artifact上传到阿里云OSS。
+ pip 阿里云-OSS插件可以在构建后将artifact上传到阿里云OSS。
\ No newline at end of file