getJob(), delay.getTimeInSeconds(), new ParametersAction(values), new CauseAction(new Cause.UserIdCause())); if (item!=null) { String url = formData.optString("redirectTo");
@Override public void print(TaskListener listener) { User user = getUserId() == null ? null : User.getById(getUserId(), false); if (user != null) { listener.getLogger().println(Messages.Cause_UserIdCause_ShortDescription( ModelHyperlinkNote.encodeTo(user))); } else { listener.getLogger().println(Messages.Cause_UserIdCause_ShortDescription( "unknown or anonymous")); } }
/** * Tests the "URL@HEAD" format in the SVN URL */ @Test public void headRevisionCheckout() throws Exception { File testRepo = new CopyExisting(getClass().getResource("two-revisions.zip")).allocate(); SubversionSCM scm = new SubversionSCM("file://" + testRepo.toURI().toURL().getPath() + "@HEAD"); FreeStyleProject p = r.createFreeStyleProject(); p.setScm(scm); FreeStyleBuild b = p.scheduleBuild2(0, new Cause.UserIdCause()).get(); System.out.println(b.getLog(LOG_LIMIT)); r.assertLogContains("At revision 2", b); r.assertBuildStatus(Result.SUCCESS,b); }
@Issue("JENKINS-22568") @Test @Ignore("TODO use docker-fixtures for a reproducible test case") public void pollingWithDefaultParametersWithCurlyBraces() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); String repo = "https://svn.jenkins-ci.org/"; String path = "trunk/hudson/test-projects/trivial-ant/"; p.setScm(new SubversionSCM("${REPO}" + path)); ParametersDefinitionProperty property = new ParametersDefinitionProperty(new StringParameterDefinition("REPO", repo)); p.addProperty(property); FreeStyleBuild b = p.scheduleBuild2(0, new Cause.UserIdCause(), new ParametersAction(new StringParameterValue("REPO", repo))).get(); r.assertBuildStatus(Result.SUCCESS,b); assertTrue(b.getWorkspace().child("build.xml").exists()); // as a baseline, this shouldn't detect any change TaskListener listener = r.createTaskListener(); PollingResult poll = p.poll(listener); assertFalse("Polling shouldn't have any changes.", poll.hasChanges()); }
/** * Makes sure the symbolic link is checked out correctly. There seems to be */ @Issue("JENKINS-3904") @Test public void symbolicLinkCheckout() throws Exception { // Only perform if symlink behavior is enabled if (!"true".equals(System.getProperty("svnkit.symlinks"))) { return; } FreeStyleProject p = r.createFreeStyleProject(); p.setScm(new SubversionSCM("https://svn.jenkins-ci.org/trunk/hudson/test-projects/issue-3904")); FreeStyleBuild b = p.scheduleBuild2(0, new Cause.UserIdCause()).get(); File source = new File(b.getWorkspace().getRemote() + "/readme.txt"); File linked = new File(b.getWorkspace().getRemote() + "/linked.txt"); assertEquals("Files '" + source + "' and '" + linked + "' are not identical from user view.", readFileAsString(source), readFileAsString(linked)); }
public void taggingPermission() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); p.setScm(loadSvnRepo()); final FreeStyleBuild b = p.scheduleBuild2(0, new Cause.UserIdCause()).get(); System.out.println(b.getLog(LOG_LIMIT)); r.assertBuildStatus(Result.SUCCESS,b); final SubversionTagAction action = b.getAction(SubversionTagAction.class); r.executeOnServer(() -> { assertFalse("Shouldn't be accessible to anonymous user",b.hasPermission(action.getPermission())); return null; });
@Url("http://hudson.pastebin.com/m3ea34eea") @Test @Ignore("TODO use docker-fixtures for a reproducible test case") public void remoteCheckOut() throws Exception { DumbSlave s = r.createSlave(); FreeStyleProject p = r.createFreeStyleProject(); p.setAssignedLabel(s.getSelfLabel()); p.setScm(new SubversionSCM("https://svn.jenkins-ci.org/trunk/hudson/test-projects/trivial-ant/")); FreeStyleBuild b = r.assertBuildStatusSuccess(p.scheduleBuild2(0, new Cause.UserIdCause()).get()); assertTrue(b.getWorkspace().child("build.xml").exists()); r.assertBuildStatusSuccess(p.scheduleBuild2(0).get()); }
/** * {@link SubversionSCM#pollChanges(AbstractProject , Launcher , FilePath, TaskListener)} should notice * if the workspace and the current configuration is inconsistent and schedule a new build. */ @Email("http://www.nabble.com/Proper-way-to-switch---relocate-SVN-tree---tt21173306.html") @Test public void pollingAfterRelocation() throws Exception { // fetch the current workspace FreeStyleProject p = r.createFreeStyleProject(); p.setScm(loadSvnRepo()); p.scheduleBuild2(0, new Cause.UserIdCause()).get(); // as a baseline, this shouldn't detect any change TaskListener listener = r.createTaskListener(); assertFalse(p.poll(listener).hasChanges()); // now switch the repository to a new one. // this time the polling should indicate that we need a new build p.setScm(loadSvnRepo()); assertTrue(p.poll(listener).hasChanges()); // build it once again to switch p.scheduleBuild2(0, new Cause.UserIdCause()).get(); // then no more change should be detected assertFalse(p.poll(listener).hasChanges()); }
@Test @Ignore("TODO use docker-fixtures for a reproducible test case") public void urlWithVariable() throws Exception { FreeStyleProject p = r.createFreeStyleProject(); // --- 1st case: URL with a variable --- String repo = "https://svn.jenkins-ci.org"; String path = "/trunk/hudson/test-projects/trivial-maven/src/test/java/test"; p.setScm(new SubversionSCM("$REPO" + path)); FreeStyleBuild b = p.scheduleBuild2(0, new Cause.UserIdCause(), new ParametersAction(new StringParameterValue("REPO", repo))).get(); System.out.println(b.getLog(LOG_LIMIT)); r.assertBuildStatus(Result.SUCCESS,b); assertTrue(b.getWorkspace().child("AppTest.java").exists()); // --- 2nd case: URL with an empty variable --- p.setScm(new SubversionSCM(repo + path + "$EMPTY_VAR")); b = p.scheduleBuild2(0, new Cause.UserIdCause(), new ParametersAction(new StringParameterValue("EMPTY_VAR", ""))).get(); r.assertBuildStatus(Result.SUCCESS,b); assertTrue(b.getWorkspace().child("AppTest.java").exists()); }
/** * Makes sure that quiet operation shows lesser output. */ @Issue("JENKINS-14541") @Test public void testQuietCheckout() throws Exception { SubversionSCM local = loadSvnRepo(); local.setWorkspaceUpdater(new CheckoutUpdater()); FreeStyleProject p = r.createFreeStyleProject("quietOperation"); p.setScm(local); local.setQuietOperation(true); FreeStyleBuild bQuiet = r.assertBuildStatusSuccess(p.scheduleBuild2(0, new Cause.UserIdCause()).get()); List<String> logsQuiet = bQuiet.getLog(LOG_LIMIT); // This line in log should end with --quiet assertTrue(logsQuiet.get(4).endsWith("--quiet")); assertEquals("At revision 1", logsQuiet.get(5)); local.setQuietOperation(false); FreeStyleBuild bVerbose = r.assertBuildStatusSuccess(p.scheduleBuild2(0, new Cause.UserIdCause()).get()); List<String> logsVerbose = bVerbose.getLog(LOG_LIMIT); // This line in log should NOT end with --quiet assertFalse(logsVerbose.get(4).endsWith("--quiet")); assertTrue(logsVerbose.get(5).endsWith("readme.txt")); assertEquals("At revision 1", logsVerbose.get(6)); }
/** * Test that multiple repository URLs are all polled. */ @Issue("JENKINS-7461") @Test public void multipleRepositories() throws Exception { // fetch the current workspaces FreeStyleProject p = r.createFreeStyleProject(); String svnBase = "file://" + new CopyExisting(getClass().getResource("/svn-repo.zip")).allocate().toURI().toURL().getPath(); SubversionSCM scm = new SubversionSCM( Arrays.asList(new ModuleLocation(svnBase + "trunk", "trunk")), new UpdateUpdater(), null, null, null, null, null, null); p.setScm(scm); Run r1 = p.scheduleBuild2(0, new Cause.UserIdCause()).get(); r.assertLogContains("Cleaning local Directory trunk", r1); scm = new SubversionSCM( Arrays.asList(new ModuleLocation(svnBase + "trunk", "trunk"), new ModuleLocation(svnBase + "branches", "branches")), new UpdateUpdater(), null, null, null, null, null, null); p.setScm(scm); Run r2 = p.scheduleBuild2(0, new Cause.UserIdCause()).get(); r.assertLogContains("Updating " + svnBase + "trunk", r2); r.assertLogContains("Cleaning local Directory branches", r2); }
/** * Creates a new freestyle project and builds the project with a string * parameter. If the build is succesful, a rebuild of the last build is * done. The rebuild on the project level should point to the last build * * @throws Exception * Exception */ public void testWhenProjectWithParamsThenRebuildProjectExecutesRebuildOfLastBuild() throws Exception { FreeStyleProject project = createFreeStyleProject(); project.addProperty(new ParametersDefinitionProperty( new StringParameterDefinition("name", "defaultValue"))); // Build (#1) project.scheduleBuild2(0, new Cause.UserIdCause(), new ParametersAction(new StringParameterValue("name", "test"))) .get(); HtmlPage rebuildConfigPage = createWebClient().getPage(project, "1/rebuild"); // Rebuild (#2) submit(rebuildConfigPage.getFormByName("config")); HtmlPage projectPage = createWebClient().getPage(project); WebAssert.assertLinkPresentWithText(projectPage, "Rebuild Last"); HtmlAnchor rebuildHref = projectPage.getAnchorByText("Rebuild Last"); assertEquals("Rebuild Last should point to the second build", "/" + project.getUrl() + "lastCompletedBuild/rebuild", rebuildHref.getHrefAttribute()); }
@Issue("JENKINS-46894") @Test public void BuildStatusWhenWithUserIdCauseShouldBeSkipped() throws Exception { WorkflowJob p = j.jenkins.createProject(WorkflowJob.class, "buildStatusWhenUserIdCauseSkipped"); p.setDefinition(new CpsFlowDefinition(pipelineSourceFromResources("buildStatusWhenUserIdCause"), true)); // get the build going, and wait until workflow pauses WorkflowRun b = p.scheduleBuild2(0, new CauseAction(new UserIdCause("virginia")) ).getStartCondition().get(); j.waitForCompletion(b); j.assertLogContains("Stage \"Two\" skipped due to when conditional",b); j.assertLogNotContains("World", b); j.assertLogNotContains("Heal it", b); } @Issue("JENKINS-46894")
/** * Tests with no extensions. * * @throws IOException * IOException * @throws InterruptedException * InterruptedException * @throws ExecutionException * ExecutionException */ public void testNoRebuildValidatorExtension() throws IOException, InterruptedException, ExecutionException { Project projectA = createFreeStyleProject("testFreeStyleA"); Build buildA = (Build) projectA.scheduleBuild2( 0, new Cause.UserIdCause(), new ParametersAction(new StringParameterValue("party", "megaparty"))).get(); assertNotNull(buildA.getAction(RebuildAction.class)); }
/** * Creates a new freestyle project and builds the project with a string * parameter. If the build is succesful, a rebuild of the last build is * done. The rebuild on the project level should point to the last build * * @throws Exception * Exception */ public void testWhenProjectWithNoParamsDefinedThenRebuildofBuildWithParamsShouldShowParams() throws Exception { System.setProperty("hudson.model.ParametersAction.keepUndefinedParameters", "true"); FreeStyleProject project = createFreeStyleProject(); // Build (#1) project.scheduleBuild2(0, new Cause.UserIdCause(), new ParametersAction(new StringParameterValue("name", "ABC"))) .get(); HtmlPage rebuildConfigPage = createWebClient().getPage(project, "1/rebuild"); WebAssert.assertElementPresentByXPath(rebuildConfigPage, "//div[@name='parameter']/input[@value='ABC']"); }
@Issue("JENKINS-46894") @Test public void BuildStatusWhenWithUserIdCause() throws Exception { WorkflowJob p = j.jenkins.createProject(WorkflowJob.class, "buildStatusWhenUserIdCause"); p.setDefinition(new CpsFlowDefinition(pipelineSourceFromResources("buildStatusWhenUserIdCause"), true)); // get the build going, and wait until workflow pauses WorkflowRun b = p.scheduleBuild2(0, new CauseAction(new UserIdCause("vlinde")) ).getStartCondition().get(); j.waitForCompletion(b); j.assertLogContains("World", b); j.assertLogContains("Heal it", b); }
project.getNextBuildNumber()+" on " + runNodeName + " with UUID " + decodedUniqueId + " and build params " + buildParams); QueueTaskFuture<?> future = project.scheduleBuild2(0, new Cause.UserIdCause(), actions); Queue.Executable exec = future.getStartCondition().get(); AbstractBuild<?, ?> currBuild = (AbstractBuild<?, ?>) exec; sess.driveSessionIO(); exec = future.get(); jobData = buildStatusData(currBuild);
@Override public String getShortDescription() { return Messages.Cause_UserIdCause_ShortDescription(getUserName()); }
/** * true if {@link AbstractBuild#hasParticipant} or {@link hudson.model.Cause.UserIdCause} */ private boolean relatedTo(@Nonnull AbstractBuild<?, ?> b) { if (b.hasParticipant(this)) { return true; } for (Cause cause : b.getCauses()) { if (cause instanceof Cause.UserIdCause) { String userId = ((Cause.UserIdCause) cause).getUserId(); if (userId != null && idStrategy().equals(userId, getId())) { return true; } } } return false; }
/** * Computes the build cause, using RemoteCause or UserCause as appropriate. */ @Restricted(NoExternalUse.class) public static final CauseAction getBuildCause(ParameterizedJob job, StaplerRequest req) { Cause cause; @SuppressWarnings("deprecation") hudson.model.BuildAuthorizationToken authToken = job.getAuthToken(); if (authToken != null && authToken.getToken() != null && req.getParameter("token") != null) { // Optional additional cause text when starting via token String causeText = req.getParameter("cause"); cause = new Cause.RemoteCause(req.getRemoteAddr(), causeText); } else { cause = new Cause.UserIdCause(); } return new CauseAction(cause); }