package org.jfrog.hudson.pipeline.steps.conan; import com.google.inject.Inject; import hudson.EnvVars; import hudson.Extension; import hudson.FilePath; import hudson.Launcher; import hudson.model.Run; import hudson.model.TaskListener; import hudson.util.ArgumentListBuilder; import org.jenkinsci.plugins.workflow.steps.AbstractStepDescriptorImpl; import org.jenkinsci.plugins.workflow.steps.AbstractStepImpl; import org.jenkinsci.plugins.workflow.steps.AbstractSynchronousStepExecution; import org.jenkinsci.plugins.workflow.steps.StepContextParameter; import org.jfrog.hudson.CredentialsConfig; import org.jfrog.hudson.pipeline.ArtifactoryConfigurator; import org.jfrog.hudson.pipeline.Utils; import org.jfrog.hudson.pipeline.types.ArtifactoryServer; import org.jfrog.hudson.util.CredentialManager; import org.kohsuke.stapler.DataBoundConstructor; public class AddUserStep extends AbstractStepImpl { private ArtifactoryServer server; private String serverName; private String conanHome; @DataBoundConstructor public AddUserStep(ArtifactoryServer server, String serverName, String conanHome) { this.server = server; this.serverName = serverName; this.conanHome = conanHome; } public ArtifactoryServer getServer() { return server; } public String getServerName() { return serverName; } public String getConanHome() { return conanHome; } public static class Execution extends AbstractSynchronousStepExecution<Boolean> { private static final long serialVersionUID = 1L; @StepContextParameter private transient Run build; @StepContextParameter private transient TaskListener listener; @StepContextParameter private transient Launcher launcher; @Inject(optional = true) private transient AddUserStep step; @StepContextParameter private transient FilePath ws; @StepContextParameter private transient EnvVars env; @Override protected Boolean run() throws Exception { ArgumentListBuilder args = new ArgumentListBuilder(); org.jfrog.hudson.ArtifactoryServer artifactoryServer = Utils.prepareArtifactoryServer(null, step.getServer()); ArtifactoryConfigurator configurator = new ArtifactoryConfigurator(artifactoryServer); CredentialsConfig deployerConfig = CredentialManager.getPreferredDeployer(configurator, artifactoryServer); args.addTokenized("conan user"); args.add(deployerConfig.provideUsername(build.getParent())); args.add("-p"); args.addMasked(deployerConfig.providePassword(build.getParent())); args.add("-r"); args.add(step.getServerName()); EnvVars extendedEnv = new EnvVars(env); extendedEnv.put(Utils.CONAN_USER_HOME, step.getConanHome()); Utils.exeConan(args, ws.getRemote(), launcher, listener, build, extendedEnv); return true; } } @Extension public static final class DescriptorImpl extends AbstractStepDescriptorImpl { public DescriptorImpl() { super(AddUserStep.Execution.class); } @Override public String getFunctionName() { return "ConanAddUser"; } @Override public String getDisplayName() { return "Add new user to Conan config"; } @Override public boolean isAdvanced() { return true; } } }