profile
viewpoint
Liam Newman bitwiseman Cloudbees, Inc. Seattle, WA, USA

bitwiseman/ansible 1

Ansible is a radically simple IT orchestration engine that makes your applications and systems easier to deploy. Avoid writing scripts or custom code to deploy and update your applications— automate in a language that approaches plain English, using SSH, with no agents to install on remote systems.

abayer/jx 0

Jenkins X provides automated CI+CD for Kubernetes with Preview Environments on Pull Requests using Jenkins, Knative Build, Prow, Skaffold and Helm

alyssat/jenkins.io 0

A static site for the Jenkins automation server

bitwiseman/100-days-of-code 0

Fork this template for the 100 days journal - to keep yourself accountable (multiple languages available)

bitwiseman/Amethyst 0

Automatic tiling window manager for macOS à la xmonad.

bitwiseman/asciidoctor 0

:gem: A fast, open source text processor and publishing toolchain, written in Ruby, for converting AsciiDoc content to HTML5, DocBook 5 (or 4.5) and other formats.

bitwiseman/asciidoctor-jenkins-extensions 0

Extensions to asciidoctor syntax for Jenkins-related materials

bitwiseman/asciidoctor.org 0

:globe_with_meridians: Asciidoctor project site. Composed in AsciiDoc. Baked with Awestruct.

bitwiseman/async-stacktrace 0

Improves node.js stacktraces and makes it easier to handle errors

Pull request review commenthub4j/github-api

Feat/credential provider refresh

         this.apiUrl = apiUrl;         this.connector = connector; -        if (oauthAccessToken != null) {-            encodedAuthorization = "token " + oauthAccessToken;+        // Prefer credential configuration via provider+        if (credentialProvider != null) {+            this.credentialProvider = credentialProvider;         } else {-            if (jwtToken != null) {-                encodedAuthorization = "Bearer " + jwtToken;-            } else if (password != null) {-                String authorization = (login + ':' + password);-                String charsetName = StandardCharsets.UTF_8.name();-                encodedAuthorization = "Basic "-                        + Base64.getEncoder().encodeToString(authorization.getBytes(charsetName));-            } else {// anonymous access-                encodedAuthorization = null;+            if (oauthAccessToken != null) {+                this.credentialProvider = ImmutableCredentialProvider.fromOauthToken(oauthAccessToken);+            } else {+                if (jwtToken != null) {+                    this.credentialProvider = ImmutableCredentialProvider.fromJwtToken(jwtToken);+                } else if (password != null) {+                    this.credentialProvider = ImmutableCredentialProvider.fromLoginAndPassword(login, password);+                } else {// anonymous access+                    this.credentialProvider = CredentialProvider.ANONYMOUS;+                }             }         }          this.rateLimitHandler = rateLimitHandler;         this.abuseLimitHandler = abuseLimitHandler;         this.rateLimitChecker = rateLimitChecker; -        if (login == null && encodedAuthorization != null && jwtToken == null) {-            GHMyself myself = fetch(GHMyself.class, "/user");-            login = myself.getLogin();-            if (myselfConsumer != null) {-                myselfConsumer.accept(myself);+        this.login = getCurrentUser(login, jwtToken, myselfConsumer);+    }++    @Nullable+    private String getCurrentUser(String login, String jwtToken, Consumer<GHMyself> myselfConsumer) throws IOException {+        if (login == null && this.credentialProvider.getEncodedAuthorization() != null && jwtToken == null) {+            try {+                GHMyself myself = fetch(GHMyself.class, "/user");+                if (myselfConsumer != null) {+                    myselfConsumer.accept(myself);+                }+                return myself.getLogin();+            } catch (IOException e) {

Why add this try-catch? It changes the user visible behavior.

MarcosCela

comment created time in a month

PullRequestReviewEvent

Pull request review commenthub4j/github-api

Feat/credential provider refresh

 public GitHubBuilder withOAuthToken(String oauthToken, String user) {         return this;     } +    public GitHubBuilder withCredentialProvider(final CredentialProvider credentialProvider) {

I'd like to see all the other credential methods call this one.

For example:

    public GitHubBuilder withOAuthToken(String oauthToken, String user) {
        withCredentialProvider(ImmutableCredentialProvider.fromOauthToken(oauthToken));
        this.user = user;
        return this;
    }

That would let us remove the oauthToken and password instance fields from the class (and down the call chain).

MarcosCela

comment created time in a month

PullRequestReviewEvent

pull request commenthub4j/github-api

Feat/credential provider refresh

@MarcosCela This is looking very good. Having token generation handled outside of the GitHub class is great.

MarcosCela

comment created time in a month

pull request commenthub4j/github-api

Feat/credential provider refresh

I think that it's better to let users chose what kind of JWT libraries they use.

Are there a lot of different JWT token libraries?

If there is a specific and clear advantage to not generating the JWT token inside this library it is completely fine to leave that to the user. But as I understand it, the only reason users get JWT tokens is to immediately turn around and get GitHub App credential. If that is the case, why force them to think about it? With the way you've implemented it, looks like you could do both. Allow people to have control AND provide a default implementation in the extras package the people could use if they don't need that control.

MarcosCela

comment created time in a month

pull request commenthub4j/github-api

Feat/credential provider refresh

@MarcosCela Adding dependencies - you could follow the pattern of putting an implementation of the CredentialsProvider in the extras package and make JWT an optional dependency. That would let users choose to use that provider, letting this project provide a tested stable implementation, while also not forcing people to take dependencies they don't need.

MarcosCela

comment created time in a month

pull request commentjenkinsci/github-branch-source-plugin

[JENKINS-63711] Cleanup GitHub App Credential cache folders

I'm not sure how to go about testing this - the behavior was (obviously) untested before this change.

bitwiseman

comment created time in a month

push eventjenkinsci/bitbucket-branch-source-plugin

Liam Newman

commit sha f4d4fad6d1343cb5c3a13edd4954d70bf744ab1d

[JENKINS-48828] Fix mistaken doFillRepositoryItems AccessDenied (#377)

view details

push time in a month

PR merged jenkinsci/bitbucket-branch-source-plugin

[JENKINS-48828] Fix mistaken doFillRepositoryItems AccessDenied

JENKINS-48828

There was an error being throw when viewing the multibranch pipeline children of a Bitbucket Team job.

The error was being thrown from doFillRepositoryItems: https://github.com/jenkinsci/bitbucket-branch-source-plugin/blob/24d9487c9dcdc6e5f00f9c891b162da3bba3cb3c/src/main/java/com/cloudbees/jenkins/plugins/bitbucket/BitbucketSCMSource.java#L1191-L1212

The equivalent method in github-branch-source is quite a bit different: https://github.com/jenkinsci/github-branch-source-plugin/blob/490693b59b83a4a82b0b94dd1ba2c7b5870be005/src/main/java/org/jenkinsci/plugins/github_branch_source/GitHubSCMSource.java#L2161-L2180

This change makes the method here look like the method in github-branch-source.

Tested manually with and without this change and it appears to work.

Your checklist for this pull request

  • [x] Make sure you are requesting to pull a topic/feature/bugfix branch (right side) and not your master branch!
  • [x] Ensure that the pull request title represents the desired changelog entry
  • [x] Please describe what you did
  • [x] Link to relevant issues in GitHub or in Jenkins JIRA
  • [x] Link to relevant pull requests, esp. upstream and downstream changes
  • [ ] Did you provide a test-case? That demonstrates feature works or fixes the issue.

<!-- Put an x into the [ ] to show you have filled the information below Describe your pull request below -->

+11 -2

1 comment

1 changed file

bitwiseman

pr closed time in a month

delete branch bitwiseman/blueocean-display-url-plugin

delete branch : task/branch-api-2.6.0

delete time in a month

push eventjenkinsci/blueocean-display-url-plugin

Liam Newman

commit sha 8b480f2e9d9efddd7a6c8784ffd24d29ab9fddd0

Update tests to handle branch-api v.2.6.0 (#79) * Update Jenkinsfile * Update tests to handle branch-api v.2.6.0 The latest branch-api honors quiet period. This means some test operations need to wait longer before checking. * Add more waits * Update Jenkinsfile Co-authored-by: Devin Nusbaum <dwnusbaum@users.noreply.github.com> Co-authored-by: Devin Nusbaum <dwnusbaum@users.noreply.github.com>

view details

push time in a month

PR merged jenkinsci/blueocean-display-url-plugin

Update tests to handle branch-api v.2.6.0

The latest branch-api honors quiet period. This means some test operations need to wait longer before checking.

+11 -1

0 comment

2 changed files

bitwiseman

pr closed time in a month

PullRequestEvent

pull request commentjenkinsci/bitbucket-branch-source-plugin

Feature/360

Oh, what does this trait look like in the UI, can you give a screenshot?

ssc327

comment created time in a month

Pull request review commentjenkinsci/bitbucket-branch-source-plugin

Feature/360

+/*+ * The MIT License+ *+ * Copyright (c) 2017, CloudBees, Inc.+ *+ * Permission is hereby granted, free of charge, to any person obtaining a copy+ * of this software and associated documentation files (the "Software"), to deal+ * in the Software without restriction, including without limitation the rights+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell+ * copies of the Software, and to permit persons to whom the Software is+ * furnished to do so, subject to the following conditions:+ *+ * The above copyright notice and this permission notice shall be included in+ * all copies or substantial portions of the Software.+ *+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN+ * THE SOFTWARE.+ */+package com.cloudbees.jenkins.plugins.bitbucket;++import com.cloudbees.jenkins.plugins.bitbucket.hooks.WebhookConfiguration;+import edu.umd.cs.findbugs.annotations.NonNull;+import hudson.Extension;+import jenkins.scm.api.SCMSource;+import jenkins.scm.api.trait.SCMSourceContext;+import jenkins.scm.api.trait.SCMSourceTrait;+import jenkins.scm.api.trait.SCMSourceTraitDescriptor;+import org.jenkinsci.Symbol;+import org.kohsuke.stapler.DataBoundConstructor;++/**+ * A {@link SCMSourceTrait} for {@link BitbucketSCMSource} that sets the committersToIgnore+ * setting in {@link WebhookConfiguration}.+ *+ * @since 2.10.0+ */+public class BitbucketBuildStatusNotificationsTrait extends SCMSourceTrait {++    /**+     * Should unstable builds be communicated as success to Bitbucket+     */+    @NonNull+    private final boolean isUnstableBuildSuccess;++    /**+     * Constructor.+     *+     * @param isUnstableBuildSuccess should unstable builds be communicated as success to Bitbucket+     */+    @DataBoundConstructor+    public BitbucketBuildStatusNotificationsTrait(@NonNull boolean isUnstableBuildSuccess) {

If you only want this trait to control "Send Success notification for Unstable", that name should specifically say that.

Otherwise, it should be more generic to allow for additional values later.

Similarly, if you only plan to have one value having it be part of the constructor is fine. If you think there might be additional values later, making the constructor empty and using a setter would be better.

    public BitbucketBuildStatusNotificationsTrait() {
ssc327

comment created time in a month

Pull request review commentjenkinsci/bitbucket-branch-source-plugin

Feature/360

 public final WebhookConfiguration webhookConfiguration() {     }      /**-     * Returns {@code true} if notifications should be disabled.+     * Returns {@code true} if unstable builds should be passed as successful to Bitbucket.      *-     * @return {@code true} if notifications should be disabled.+     * @return {@code true} if unstable builds should be passed as successful to Bitbucket.
     * @return {@code true} if notifications should be disabled.
ssc327

comment created time in a month

Pull request review commentjenkinsci/bitbucket-branch-source-plugin

Feature/360

      */     private boolean notificationsDisabled; +    /**+     * {@code true} if unstable builds should be considered as successful by Bitbucket.+     */+    private boolean isUnstableBuildSuccess;

The name should make it clear that it is setting the notification sent, not changing the actual result of the run. I'm not sure of the best way to say it.

    private boolean notifyUnstableBuildAsSuccessful;

Or

    private boolean notifySuccessfulForUnstableBuild;

Or

    private boolean sendSuccessNotificationForUnstableBuild
ssc327

comment created time in a month

Pull request review commentjenkinsci/bitbucket-branch-source-plugin

Feature/360

+/*+ * The MIT License+ *+ * Copyright (c) 2017, CloudBees, Inc.+ *+ * Permission is hereby granted, free of charge, to any person obtaining a copy+ * of this software and associated documentation files (the "Software"), to deal+ * in the Software without restriction, including without limitation the rights+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell+ * copies of the Software, and to permit persons to whom the Software is+ * furnished to do so, subject to the following conditions:+ *+ * The above copyright notice and this permission notice shall be included in+ * all copies or substantial portions of the Software.+ *+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN+ * THE SOFTWARE.+ */+package com.cloudbees.jenkins.plugins.bitbucket;++import com.cloudbees.jenkins.plugins.bitbucket.hooks.WebhookConfiguration;+import edu.umd.cs.findbugs.annotations.NonNull;+import hudson.Extension;+import jenkins.scm.api.SCMSource;+import jenkins.scm.api.trait.SCMSourceContext;+import jenkins.scm.api.trait.SCMSourceTrait;+import jenkins.scm.api.trait.SCMSourceTraitDescriptor;+import org.jenkinsci.Symbol;+import org.kohsuke.stapler.DataBoundConstructor;++/**+ * A {@link SCMSourceTrait} for {@link BitbucketSCMSource} that sets the committersToIgnore+ * setting in {@link WebhookConfiguration}.+ *+ * @since 2.10.0+ */+public class BitbucketBuildStatusNotificationsTrait extends SCMSourceTrait {++    /**+     * Should unstable builds be communicated as success to Bitbucket+     */+    @NonNull+    private final boolean isUnstableBuildSuccess;++    /**+     * Constructor.+     *+     * @param isUnstableBuildSuccess should unstable builds be communicated as success to Bitbucket+     */+    @DataBoundConstructor+    public BitbucketBuildStatusNotificationsTrait(@NonNull boolean isUnstableBuildSuccess) {+        this.isUnstableBuildSuccess = isUnstableBuildSuccess;+    }++    /**+     * @return if unstable builds will be communicated as successful+     */+    public boolean isUnstableSuccess() {+        return this.isUnstableBuildSuccess;+    }++    /**+     * {@inheritDoc}+     */+    @Override+    protected void decorateContext(SCMSourceContext<?, ?> context) {+        ((BitbucketSCMSourceContext) context).withIsUnstableBuildSuccess(isUnstableSuccess());+    }++    /**+     * Our constructor.+     */+    @Symbol("bitbucketBuildStatusConfiguration")
    @Symbol("bitbucketNotifications")
ssc327

comment created time in a month

Pull request review commentjenkinsci/bitbucket-branch-source-plugin

Feature/360

 public final WebhookConfiguration webhookConfiguration() {     }      /**-     * Returns {@code true} if notifications should be disabled.+     * Returns {@code true} if unstable builds should be passed as successful to Bitbucket.
     * Returns {@code true} if notifications should be disabled.
ssc327

comment created time in a month

Pull request review commentjenkinsci/bitbucket-branch-source-plugin

Feature/360

 private static void createStatus(@NonNull Run<?, ?> build, @NonNull TaskListener         String buildDescription = build.getDescription();         String statusDescription;         String state;+        final String successful_state = "SUCCESSFUL";+        final String failed_state = "FAILED";         if (Result.SUCCESS.equals(result)) {             statusDescription = StringUtils.defaultIfBlank(buildDescription, "This commit looks good.");-            state = "SUCCESSFUL";+            state = successful_state;         } else if (Result.UNSTABLE.equals(result)) {             statusDescription = StringUtils.defaultIfBlank(buildDescription, "This commit has test failures.");-            state = "FAILED";+            final SCMSource s = SCMSource.SourceByItem.findSource(build.getParent());+            if (!(s instanceof BitbucketSCMSource)) {+                return;+            }

This should probably be at the top of the method. None of these should run on non-bitbucket sources, right?

ssc327

comment created time in a month

PullRequestReviewEvent
PullRequestReviewEvent

push eventbitwiseman/github-branch-source-plugin

dependabot[bot]

commit sha 357963903ed69ae3565cc3c69496efd00dcf466c

Bump wiremock-jre8-standalone from 2.27.1 to 2.27.2 Bumps [wiremock-jre8-standalone](https://github.com/tomakehurst/wiremock) from 2.27.1 to 2.27.2. - [Release notes](https://github.com/tomakehurst/wiremock/releases) - [Commits](https://github.com/tomakehurst/wiremock/compare/2.27.1...2.27.2) Signed-off-by: dependabot[bot] <support@github.com>

view details

dependabot[bot]

commit sha f6fb3021d9e5a7fa242c1cadd22096fbf145a67c

Bump bom-2.176.x from 11 to 12 Bumps [bom-2.176.x](https://github.com/jenkinsci/pom) from 11 to 12. - [Release notes](https://github.com/jenkinsci/pom/releases) - [Changelog](https://github.com/jenkinsci/pom/blob/master/CHANGELOG.md) - [Commits](https://github.com/jenkinsci/pom/commits) Signed-off-by: dependabot[bot] <support@github.com>

view details

Liam Newman

commit sha 5f28fba49e70673b5a6ce4412e968c0c0dae8c97

Merge pull request #339 from jenkinsci/dependabot/maven/com.github.tomakehurst-wiremock-jre8-standalone-2.27.2 Bump wiremock-jre8-standalone from 2.27.1 to 2.27.2

view details

Liam Newman

commit sha 9f0c6e3a538f0c6bb6a51297ff8fbfd61347c9b4

Merge pull request #340 from jenkinsci/dependabot/maven/io.jenkins.tools.bom-bom-2.176.x-12 Bump bom-2.176.x from 11 to 12

view details

Liam Newman

commit sha c7ff4b874bc15d6c625174fb6ebee00c6a37e747

Merge branch 'master' into cleanup-cache-folders

view details

push time in a month

push eventbitwiseman/blueocean-display-url-plugin

Liam Newman

commit sha 77d1d8eb058becc5ad9eb9829d9ccb12afe09dbf

Update Jenkinsfile Co-authored-by: Devin Nusbaum <dwnusbaum@users.noreply.github.com>

view details

push time in a month

PR opened jenkinsci/jackson2-api-plugin

Add jackson-datatype-json-org

jackson-datatype-json-org is used by pipeline-model-definition-plugin among others.

+6 -0

0 comment

1 changed file

pr created time in a month

push eventbitwiseman/jackson2-api-plugin

Liam Newman

commit sha 5b75a9f7450f9cde9a7c4e5090ac2614124e4220

Add jackson-datatype-json-org jackson-datatype-json-org is used by pipeline-model-definition-plugin among others.

view details

push time in a month

PullRequestEvent

PR closed jenkinsci/github-branch-source-plugin

Reviewers
[JENKINS-63711] Cleanup GitHub App Credential cache folders

Description

Before GitHub App Credentials, cache folders not being cleaned up was okay. It was sometimes even an advantage since cached values that were extremely stable didn't have to be reloaded even across connection instances. However, with GitHub App Credentials the password (token) is regenerated on a regular basis, resulting in new connections with new caches.

This change cleans up cache folders when GitHub App connections are no longer used. Behavior for non-GitHubAppCredential connections is unchanged to preserve the advantages of the existing behavior for standard credentials.

See JENKINS-63711 for further information.

Submitter checklist

  • [x] Link to JIRA ticket in description, if appropriate.
  • [x] Change is code complete and matches issue description
  • [ ] Automated tests have been added to exercise the changes
  • [ ] Reviewer's manual test instructions provided in PR description. See Reviewer's first task below.

Reviewer checklist

  • [ ] Run the changes and verify that the change matches the issue description
  • [ ] Reviewed the code
  • [ ] Verified that the appropriate tests have been written or valid explanation given

Documentation changes

  • [ ] Link to jenkins.io PR, or an explanation for why no doc changes are needed

Users/aliases to notify

+100 -73

0 comment

1 changed file

bitwiseman

pr closed time in a month

push eventchriskilding/pipeline-model-definition-plugin

Liam Newman

commit sha f3ed2bb9d9f36bf1fe06c3e67b38d92b5089b095

Update pom.xml

view details

push time in a month

push eventbitwiseman/pipeline-model-definition-plugin

Tim Jacomb

commit sha c47bb5c81e5e7d7b99e682c2ee9bfcac690cb79f

JENKINS-62808 Fix tests when using tables to divs

view details

push time in a month

push eventjenkinsci/blueocean-plugin

Udi Gatenio

commit sha 852137885a391808714648df45ea73321f3a9e46

limit fetch call

view details

push time in a month

PR merged jenkinsci/blueocean-plugin

limit fetch call

Description

See JENKINS-63698.

Submitter checklist

  • [x] Link to JIRA ticket in description, if appropriate.
  • [x] Change is code complete and matches issue description
  • [ ] Appropriate unit or acceptance tests or explanation to why this change has no tests
  • [ ] Reviewer's manual test instructions provided in PR description. See Reviewer's first task below.

Reviewer checklist

  • [ ] Run the changes and verified the change matches the issue description
  • [ ] Reviewed the code
  • [ ] Verified that the appropriate tests have been written or valid explanation given
+3 -2

6 comments

1 changed file

ugatenio

pr closed time in a month

PullRequestReviewEvent

push eventbitwiseman/blueocean-display-url-plugin

Liam Newman

commit sha 9e78f23b39bd03b079088c67adb46a51b7cb61db

Add more waits

view details

push time in a month

push eventbitwiseman/blueocean-display-url-plugin

Liam Newman

commit sha 17e5d4b5aaaafba21bcd198dcc6617312bc8547b

Update Jenkinsfile

view details

Liam Newman

commit sha 880bf6719f68db5d946d44876dd50d5d09f566b2

Update tests to handle branch-api v.2.6.0 The latest branch-api honors quiet period. This means some test operations need to wait longer before checking.

view details

push time in a month

PullRequestEvent

issue closedhub4j/github-api

Expose ETag and Status when getting file contents

Use-case

In HubSpot we use the github-api and are very happy with the implementation. To reduce the load the to requests sent to GitHub and GitHub:Enterprise contents API we would like to use the ETag to store contents of files in a persistent key-value store where the key is contains the ETag and the value is the contents of the file. This is meant to be an implementation that extends beyond the standard 60 seconds HTTP cache provided by OkHttp.

So, when we want to get the contents of a file we will add the ETag to the Request headers. In the response, if the ETag matches, we will get a 304 and empty file contents. If not - we will get the response as usual.

Request

Would it be possible to somehow expose ETag when getting file contents. Perhaps even in the GHContent object itself? Or maybe have a method dedicated to returning a completely new object that contains both the current GHContent, the status code and a field for the ETag? With that said, would it also be possible to have an ETag parameter be added to a method so that the ETag can be included in Request headers?

closed time in a month

AlexShtarbev

issue commenthub4j/github-api

Expose ETag and Status when getting file contents

@AlexShtarbev I'm going to close this for now, you are welcome to reopen if needed.

AlexShtarbev

comment created time in a month

pull request commenthub4j/github-api

user, push, pull event extensions

@seregamorph Did see this? https://github.com/hub4j/github-api/pull/944/files#r494672997 You can change it, we can discuss further in the PR, or you can split that part of the change into another PR and we can continue discussion there. Up to you. Thanks for contributing!

seregamorph

comment created time in a month

pull request commentjenkinsci/blueocean-plugin

limit fetch call

Thanks @cliffmeyers @eplodn @jglick . I'll merge this change and add a task to tombstone this plugin.

ugatenio

comment created time in a month

PullRequestEvent

PR closed jenkinsci/blueocean-plugin

limit fetch call

Description

See JENKINS-63698.

Submitter checklist

  • [x] Link to JIRA ticket in description, if appropriate.
  • [x] Change is code complete and matches issue description
  • [ ] Appropriate unit or acceptance tests or explanation to why this change has no tests
  • [ ] Reviewer's manual test instructions provided in PR description. See Reviewer's first task below.

Reviewer checklist

  • [ ] Run the changes and verified the change matches the issue description
  • [ ] Reviewed the code
  • [ ] Verified that the appropriate tests have been written or valid explanation given
+3 -2

5 comments

1 changed file

ugatenio

pr closed time in a month

push eventbitwiseman/pipeline-model-definition-plugin

Liam Newman

commit sha 781e8628335e74b8f41a6835191c674d1487eb1c

[JENKINS-34987] - Allow better script splitting in more scenarios Automatically splitting the pipeline script into multiple smaller parts makes it less like for the resulting compiled class throw "Method code too large!" or "Class too large" exceptions during the class file generation phase of compilation. Locally declared variables are one of scenarios that are incompatible with the more effective function-grouped script splitting. Before this change, any statements outside the pipeline directive would cause the plugin to switch to using the less effect closure-only script splitting. After this change, the plugin specifically detects the presence of locally declared variables and ignores other non-problematic statements such as method/function declaration. By default, the script splitting will also fail instead of switching to the less effecting splitting style. The user may switch back to allowing locally declared variables using the SCRIPT_SPLITTING_ALLOW_LOCAL_VARIABLES setting.

view details

push time in a month

push eventchriskilding/pipeline-model-definition-plugin

Chris Kilding

commit sha c6024dff9d7dd080c4051f03b9b53ff28c1c8dca

Use Jackson 2.11.0

view details

Liam Newman

commit sha b8ec059d0779b038f7f2296bac5efca1dc76f389

Update pom.xml

view details

push time in a month

PullRequestReviewEvent

Pull request review commenthub4j/github-api

Feat/credential provider refresh

         this.connector = connector;          if (oauthAccessToken != null) {-            encodedAuthorization = "token " + oauthAccessToken;+            this.credentialProvider = new ImmutableCredentialProvider(String.format("token %s", oauthAccessToken));

I would also suggest moving all these into GitHubBuilder and have a method GitHubBuilder.withCredentialProvider(CredentialProvider) which can be internal for now. Then this constructor just sets this.credentialProvider = credentialProvider pass from the builder.

MarcosCela

comment created time in a month

PullRequestReviewEvent

Pull request review commenthub4j/github-api

Feat/credential provider refresh

         this.connector = connector;          if (oauthAccessToken != null) {-            encodedAuthorization = "token " + oauthAccessToken;+            this.credentialProvider = new ImmutableCredentialProvider(String.format("token %s", oauthAccessToken));         } else {             if (jwtToken != null) {-                encodedAuthorization = "Bearer " + jwtToken;+                this.credentialProvider = new ImmutableCredentialProvider(String.format("Bearer %s", jwtToken));             } else if (password != null) {                 String authorization = (login + ':' + password);                 String charsetName = StandardCharsets.UTF_8.name();-                encodedAuthorization = "Basic "+                String encodedAuthorization = "Basic "                         + Base64.getEncoder().encodeToString(authorization.getBytes(charsetName));+                this.credentialProvider = new ImmutableCredentialProvider(encodedAuthorization);             } else {// anonymous access-                encodedAuthorization = null;+                this.credentialProvider = new ImmutableCredentialProvider(null);
                this.credentialProvider = ImmutableCredentialProvider.ANONYMOUS;
MarcosCela

comment created time in a month

PullRequestReviewEvent

Pull request review commenthub4j/github-api

Feat/credential provider refresh

         this.connector = connector;          if (oauthAccessToken != null) {-            encodedAuthorization = "token " + oauthAccessToken;+            this.credentialProvider = new ImmutableCredentialProvider(String.format("token %s", oauthAccessToken));         } else {             if (jwtToken != null) {-                encodedAuthorization = "Bearer " + jwtToken;+                this.credentialProvider = new ImmutableCredentialProvider(String.format("Bearer %s", jwtToken));             } else if (password != null) {                 String authorization = (login + ':' + password);                 String charsetName = StandardCharsets.UTF_8.name();-                encodedAuthorization = "Basic "+                String encodedAuthorization = "Basic "                         + Base64.getEncoder().encodeToString(authorization.getBytes(charsetName));+                this.credentialProvider = new ImmutableCredentialProvider(encodedAuthorization);
this.credentialProvider = ImmutableCredentialProvider.fromLoginAndPassword(login, password);
MarcosCela

comment created time in a month

PullRequestReviewEvent

Pull request review commenthub4j/github-api

Feat/credential provider refresh

         this.connector = connector;          if (oauthAccessToken != null) {-            encodedAuthorization = "token " + oauthAccessToken;+            this.credentialProvider = new ImmutableCredentialProvider(String.format("token %s", oauthAccessToken));
            this.credentialProvider = ImmutableCredentialProvider.fromOAuthToken(String.format("token %s", oauthAccessToken));
MarcosCela

comment created time in a month

PullRequestReviewEvent

push eventhub4j/github-api

seregamorph

commit sha 0894c8007c12aa3ee6a72f4b4409af45683c03d4

pullRequestReview.review.htmlUrl

view details

Liam Newman

commit sha f1ca0b5417c853e8b2ca3bb07ae002535594afb9

Merge pull request #946 from seregamorph/feature/pull-request-review-html-url pullRequestReview.review.htmlUrl

view details

push time in a month

PR merged hub4j/github-api

pullRequestReview.review.htmlUrl

Description

Webhook event GHPullRequestReviewEvent: pull_request_review has review object in it which declares html_url field:

{
  "action": "submitted",
  "review": {
    "id": 496232606,
    "node_id": "MDE3OlB1bGxSZXF1ZXN0UmV2aWV3NDk2MjMyNjA2",
    "user": {
      "login": "schernov-xo",
      "id": 41187778,
      "node_id": "MDQ6VXNlcjQxMTg3Nzc4",
      "avatar_url": "https://avatars3.githubusercontent.com/u/41187778?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/schernov-xo",
      "html_url": "https://github.com/schernov-xo",
      "followers_url": "https://api.github.com/users/schernov-xo/followers",
      "following_url": "https://api.github.com/users/schernov-xo/following{/other_user}",
      "gists_url": "https://api.github.com/users/schernov-xo/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/schernov-xo/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/schernov-xo/subscriptions",
      "organizations_url": "https://api.github.com/users/schernov-xo/orgs",
      "repos_url": "https://api.github.com/users/schernov-xo/repos",
      "events_url": "https://api.github.com/users/schernov-xo/events{/privacy}",
      "received_events_url": "https://api.github.com/users/schernov-xo/received_events",
      "type": "User",
      "site_admin": false
    },
    "body": "",
    "commit_id": "c3acd4733a645e1c6ae3b6da83068ae12099f616",
    "submitted_at": "2020-09-25T09:52:57Z",
    "state": "commented",
    "html_url": "https://github.com/trilogy-group/northplains-telescope-api/pull/21#pullrequestreview-496232606",
    "pull_request_url": "https://api.github.com/repos/trilogy-group/northplains-telescope-api/pulls/21",
...

Old implementation ignores it (always null).

Proof: see the test, event existing test payload pull_request_review.json has it (ignored in test).

Before submitting a PR:

We love getting PRs, but we hate asking people for the same basic changes every time.

  • [ ] Push your changes to a branch other than master. Create your PR from that branch.
  • [ ] Add JavaDocs and other comments
  • [ ] Write tests that run and pass in CI. See CONTRIBUTING.md for details on how to capture snapshot data.
  • [ ] Run mvn clean compile locally. This may reformat your code, commit those changes.
  • [ ] Run mvn -D enable-ci clean install site locally. If this command doesn't succeed, your change will not pass CI.

When creating a PR:

  • [ ] Fill in the "Description" above.
  • [ ] Enable "Allow edits from maintainers".
+4 -1

1 comment

2 changed files

seregamorph

pr closed time in a month

PullRequestReviewEvent

Pull request review commenthub4j/github-api

pullRequestReview.review.htmlUrl

     private String commit_id;     private GHPullRequestReviewState state;     private String submitted_at;+    private String html_url;

@seregamorph "standardize to java naming" - agreed. It just hasn't been a priority. Especially since we don't have sufficient code coverage to have high confidence in tests ensuring it is done right. PR welcome.

seregamorph

comment created time in a month

PullRequestReviewEvent

push eventchriskilding/pipeline-model-definition-plugin

Liam Newman

commit sha 475d8b7561842ea64a3e635680e5031523ec5764

Merge branch 'master' into bump-jackson-version

view details

push time in a month

PullRequestEvent
PullRequestEvent

PR closed jenkinsci/bitbucket-branch-source-plugin

[JENKINS-48828] Fix mistaken doFillRepositoryItems AccessDenied

JENKINS-48828

There was an error being throw when viewing the multibranch pipeline children of a Bitbucket Team job.

The error was being thrown from doFillRepositoryItems: https://github.com/jenkinsci/bitbucket-branch-source-plugin/blob/24d9487c9dcdc6e5f00f9c891b162da3bba3cb3c/src/main/java/com/cloudbees/jenkins/plugins/bitbucket/BitbucketSCMSource.java#L1191-L1212

The equivalent method in github-branch-source is quite a bit different: https://github.com/jenkinsci/github-branch-source-plugin/blob/490693b59b83a4a82b0b94dd1ba2c7b5870be005/src/main/java/org/jenkinsci/plugins/github_branch_source/GitHubSCMSource.java#L2161-L2180

This change makes the method here look like the method in github-branch-source.

Tested manually with and without this change and it appears to work.

Your checklist for this pull request

  • [x] Make sure you are requesting to pull a topic/feature/bugfix branch (right side) and not your master branch!
  • [x] Ensure that the pull request title represents the desired changelog entry
  • [x] Please describe what you did
  • [x] Link to relevant issues in GitHub or in Jenkins JIRA
  • [x] Link to relevant pull requests, esp. upstream and downstream changes
  • [ ] Did you provide a test-case? That demonstrates feature works or fixes the issue.

<!-- Put an x into the [ ] to show you have filled the information below Describe your pull request below -->

+11 -2

1 comment

1 changed file

bitwiseman

pr closed time in a month

push eventchriskilding/pipeline-model-definition-plugin

steven-terrana

commit sha c5bebf4b22a56ca32e1af4ae56f37467867b8cd1

add JTE to ModelParser

view details

steven-terrana

commit sha 686fe8f56867c7255a33175fc5309e1c48dd6db7

handle empty pipeline when parsing for JTE

view details

steven-terrana

commit sha b925342daced6c4a64315f5ed779ba8cf96f872f

Merge branch 'master' into integrate-jte

view details

Liam Newman

commit sha 9f23d5e6b337af90ae6b78f32deb27cad103d92e

Merge pull request #403 from steven-terrana/integrate-jte Support Declarative Pipeline Syntax Within Jenkins Templating Engine

view details

Andrew Bayer

commit sha 10c6d631751f2cb060c8f1b115fd14104ab6baec

Allow ModelParser to be run outside of a Jenkins instance I'm working on tooling for converting Jenkinsfiles to JSON outside of a Jenkins instance, and there are a number of things that break as things stand now. This fixes those, by allowing for providing a `ModelValidator` implementation and a `DescriptorLookupCache` instance to `ModelParser`, and uses a fallback for the zero-arg agent model map if run outside of Jenkins. Signed-off-by: Andrew Bayer <andrew.bayer@gmail.com>

view details

Liam Newman

commit sha fc8d22192d7d3a17badc3b8af7191a84bb7fd4ca

Merge pull request #406 from abayer/specify-validator Allow ModelParser to be run outside of a Jenkins instance

view details

Liam Newman

commit sha 0f3a48caf0315aecc864cb9f3b8f9e32945fbf1f

Merge branch 'master' into bump-jackson-version

view details

push time in a month

PullRequestEvent

push eventbitwiseman/pipeline-model-definition-plugin

steven-terrana

commit sha c5bebf4b22a56ca32e1af4ae56f37467867b8cd1

add JTE to ModelParser

view details

steven-terrana

commit sha 686fe8f56867c7255a33175fc5309e1c48dd6db7

handle empty pipeline when parsing for JTE

view details

steven-terrana

commit sha b925342daced6c4a64315f5ed779ba8cf96f872f

Merge branch 'master' into integrate-jte

view details

Liam Newman

commit sha 9f23d5e6b337af90ae6b78f32deb27cad103d92e

Merge pull request #403 from steven-terrana/integrate-jte Support Declarative Pipeline Syntax Within Jenkins Templating Engine

view details

Andrew Bayer

commit sha 10c6d631751f2cb060c8f1b115fd14104ab6baec

Allow ModelParser to be run outside of a Jenkins instance I'm working on tooling for converting Jenkinsfiles to JSON outside of a Jenkins instance, and there are a number of things that break as things stand now. This fixes those, by allowing for providing a `ModelValidator` implementation and a `DescriptorLookupCache` instance to `ModelParser`, and uses a fallback for the zero-arg agent model map if run outside of Jenkins. Signed-off-by: Andrew Bayer <andrew.bayer@gmail.com>

view details

Liam Newman

commit sha fc8d22192d7d3a17badc3b8af7191a84bb7fd4ca

Merge pull request #406 from abayer/specify-validator Allow ModelParser to be run outside of a Jenkins instance

view details

Liam Newman

commit sha eb098a2e956ff334edb10bd1ed172c84d47d2995

Merge branch 'master' into task/script-splitting/update

view details

push time in a month

PR closed jenkinsci/pipeline-model-definition-plugin

IGNORE: Just testing whether Windows tests are failing

Signed-off-by: Andrew Bayer andrew.bayer@gmail.com

  • JENKINS issue(s):
    • Issue link or n/a
  • Description:
    • ...
  • Documentation changes:
    • Link to related jenkins.io PR or explanation for why doc change not needed
  • Users/aliases to notify:
    • ...
+0 -0

0 comment

1 changed file

abayer

pr closed time in a month

push eventjenkinsci/pipeline-model-definition-plugin

Andrew Bayer

commit sha 10c6d631751f2cb060c8f1b115fd14104ab6baec

Allow ModelParser to be run outside of a Jenkins instance I'm working on tooling for converting Jenkinsfiles to JSON outside of a Jenkins instance, and there are a number of things that break as things stand now. This fixes those, by allowing for providing a `ModelValidator` implementation and a `DescriptorLookupCache` instance to `ModelParser`, and uses a fallback for the zero-arg agent model map if run outside of Jenkins. Signed-off-by: Andrew Bayer <andrew.bayer@gmail.com>

view details

Liam Newman

commit sha fc8d22192d7d3a17badc3b8af7191a84bb7fd4ca

Merge pull request #406 from abayer/specify-validator Allow ModelParser to be run outside of a Jenkins instance

view details

push time in a month

PR merged jenkinsci/pipeline-model-definition-plugin

Allow ModelParser to be run outside of a Jenkins instance
  • JENKINS issue(s):
    • n/a
  • Description:
    • I'm working on tooling for converting Jenkinsfiles to JSON outside of a Jenkins instance, and there are a number of things that break as things stand now. This fixes those, by allowing for providing a ModelValidator implementation and a DescriptorLookupCache instance to ModelParser, and uses a fallback for the zero-arg agent model map if run outside of Jenkins.
  • Documentation changes:
    • n/a - this isn't user-facing.
  • Users/aliases to notify:
    • @bitwiseman
+362 -6

11 comments

3 changed files

abayer

pr closed time in a month

PullRequestEvent

PR closed jenkinsci/pipeline-model-definition-plugin

[JENKINS-34987] - Allow better script splitting in more scenarios

JENKINS issue(s):

Description:

Automatically splitting the pipeline script into multiple smaller parts makes it less likely for the resulting compiled class throw "Method code too large!" or "Class too large" exceptions during the class file generation phase of compilation.

Script splitting has two different strategies: method-grouped and closure-only. Closure-only is less effective but method-grouped splitting is not compatible with some groovy structures. In particular locally declared variables, such as such as def a = 1, are incompatible with the more effective method-grouped script splitting.

Before this change, any statements outside the pipeline directive would cause the plugin to switch to using the less effective closure-only script splitting.

This change does three things:

  1. It uses the method-grouped script splitting unless it detects locally declared variables such as def a = 1 outside the pipeline {} directive.
  2. If it detects locally declared variables such as def a = 1: a. it defaults to failing the run telling the user to add the @Field annotation to the declaration. b. If SCRIPT_SPLITTING_ALLOW_LOCAL_VARIABLES=true, it does not report an error, instead falling back to closure-only splitting.

Script splitting ignores other non-problematic statements such as method/function declarations or method calls. Note, this is experimental. There may be other structures aside from local variable declaration that are incompatible with script splitting. More testing is needed.

WARNING: this is a global change. If you install this version an have SCRIPT_SPLITTING_TRANSFORMATION=true, any declarative pipeline Jenkinsfile with a local variable declaration outside the pipeline block will fail. You may switch back to allowing locally declared variables by setting SCRIPT_SPLITTING_ALLOW_LOCAL_VARIABLES=true.

+59 -6

1 comment

3 changed files

bitwiseman

pr closed time in a month

pull request commentjenkinsci/pipeline-model-definition-plugin

Allow ModelParser to be run outside of a Jenkins instance

@abayer Do you plan to write a test?

abayer

comment created time in a month

pull request commenthub4j/github-api

Feat/credential provider refresh

@MarcosCela

If I understand correctly, we'll need to do the second approach in order for refresh to work for longer than the expiration time of the JWT Token. And JWT Tokens have a shorter life span than the GitHub App Tokens.

MarcosCela

comment created time in a month

pull request commentjenkinsci/pipeline-model-definition-plugin

Allow ModelParser to be run outside of a Jenkins instance

@abayer I'm seeing the same failure on #405.

abayer

comment created time in a month

pull request commentjenkinsci/bitbucket-branch-source-plugin

[JENKINS-48828] Fix mistaken doFillRepositoryItems AccessDenied

Build failures look like infra issues.

bitwiseman

comment created time in a month

push eventbitwiseman/bitbucket-branch-source-plugin

Liam Newman

commit sha 8d72f76b5bbe8edb2be1d6d8ef778ee2ace6eb25

[JENKINS-48828] Fix mistaken doFillRepositoryItems AccessDenied

view details

push time in a month

push eventbitwiseman/bitbucket-branch-source-plugin

Liam Newman

commit sha 38fe04fec906f20d10ac1c808b7c5e7b5451a6f8

[JENKINS-48828] Fix mistaken doFillRepositoryItems AccessDenied

view details

push time in a month

Pull request review commenthub4j/github-api

user, push, pull event extensions

 public String getName() {     }      /**-     * Gets email.+     * Gets email (e.g. from git commit).      *-     * @return E -mail address, such as "foo@example.com"+     * @return E-mail address, such as "foo@example.com"      */     public String getEmail() {         return email;     } +    /**+     * Gets username.+     *+     * @return GitHub username+     */+    public String getUsername() {+        return username;

@seregamorph Interesting. Is it possible it is only present on events?
This doesn't include it: https://api.github.com/repos/octocat/Hello-World/git/commits/7fd1a60b01f91b314f59955a4e4d4e80d8edf11d

I'd be okay with adding this if the javadoc clearly states that is only seen on events and we add @Preview @Deprecated annotations to it. I would also ask that you contact GitHub support and ask them to clarify the documentation.

username

seregamorph

comment created time in a month

PullRequestReviewEvent

pull request commentjenkinsci/blueocean-plugin

limit fetch call

@eplodn We are no longer making major changes to Blue Ocean except for security and regression fixes. Removing a component would be a major change.

@ugatenio I don't have much context in which to evaluate this. What you describe as the new behavior looks good, but I'm not sure how to validate it to make sure it doesn't cause a regression.

@olamy @cliffmeyers Any thoughts? The looks like a pretty safe change, but I'd like some other folks to look at it too.

ugatenio

comment created time in a month

PullRequestEvent

PR closed jenkinsci/blueocean-plugin

limit fetch call

Description

See JENKINS-63698.

Submitter checklist

  • [x] Link to JIRA ticket in description, if appropriate.
  • [x] Change is code complete and matches issue description
  • [ ] Appropriate unit or acceptance tests or explanation to why this change has no tests
  • [ ] Reviewer's manual test instructions provided in PR description. See Reviewer's first task below.

Reviewer checklist

  • [ ] Run the changes and verified the change matches the issue description
  • [ ] Reviewed the code
  • [ ] Verified that the appropriate tests have been written or valid explanation given
+3 -2

2 comments

1 changed file

ugatenio

pr closed time in a month

push eventbitwiseman/bitbucket-branch-source-plugin

Liam Newman

commit sha d647f8e5cdfdac2b8aa774c529f64da81bc4684d

[JENKINS-48828] Fix mistaken doFillRepositoryItems AccessDenied

view details

push time in a month

push eventbitwiseman/bitbucket-branch-source-plugin

Liam Newman

commit sha 8cec450bf71eba812cbb15efe874128d6ec5957d

[JENKINS-48828] Fix mistaken doFillRepositoryItems AccessDenied

view details

push time in a month

PR opened jenkinsci/bitbucket-branch-source-plugin

[JENKINS-48828] Fix mistaken doFillRepositoryItems AccessDenied

<!-- Please describe your pull request here. -->

<!-- To mark your pull request as work in progress please create it as a draft pull request -->

Your checklist for this pull request

  • [ ] Make sure you are requesting to pull a topic/feature/bugfix branch (right side) and not your master branch!
  • [ ] Ensure that the pull request title represents the desired changelog entry
  • [ ] Please describe what you did
  • [ ] Link to relevant issues in GitHub or in Jenkins JIRA
  • [ ] Link to relevant pull requests, esp. upstream and downstream changes
  • [ ] Did you provide a test-case? That demonstrates feature works or fixes the issue.

<!-- Put an x into the [ ] to show you have filled the information below Describe your pull request below -->

+10 -3

0 comment

1 changed file

pr created time in a month

create barnchbitwiseman/bitbucket-branch-source-plugin

branch : JENKINS-48828

created branch time in a month

push eventbitwiseman/bitbucket-branch-source-plugin

Liam Newman

commit sha 8b12d074b7613dc2173195f399ddced2bbb02ce8

[maven-release-plugin] prepare release cloudbees-bitbucket-branch-source-2.9.4

view details

Liam Newman

commit sha 24d9487c9dcdc6e5f00f9c891b162da3bba3cb3c

[maven-release-plugin] prepare for next development iteration

view details

push time in a month

delete branch jenkinsci/bitbucket-branch-source-plugin

delete branch : JENKINS-48828

delete time in a month

create barnchjenkinsci/bitbucket-branch-source-plugin

branch : JENKINS-48828

created branch time in a month

Pull request review commentjenkinsci/bitbucket-branch-source-plugin

Set event for declined PRs

 public void process(final HookEventType hookEvent, String payload, final Bitbuck                         eventType = SCMEvent.Type.CREATED;                         break;                     case PULL_REQUEST_DECLINED:+                        eventType = SCMEvent.Type.REMOVED;+                        break;

So, why add these two lines?

admssa

comment created time in a month

PullRequestReviewEvent
PullRequestReviewEvent

pull request commentjenkinsci/pipeline-model-definition-plugin

[JENKINS-34987] - Allow better script splitting in more scenarios

To test this change locally:

Install the following incrementals: https://repo.jenkins-ci.org/incrementals/org/jenkinsci/plugins/pipeline-model-api/1.7.3-rc1872.9504c794d213/ https://repo.jenkins-ci.org/incrementals/org/jenkinsci/plugins/pipeline-model-definition/1.7.3-rc1872.9504c794d213/ https://repo.jenkins-ci.org/incrementals/org/jenkinsci/plugins/pipeline-model-extensions/1.7.3-rc1872.9504c794d213/ https://repo.jenkins-ci.org/incrementals/org/jenkinsci/plugins/pipeline-stage-tags-metadata/1.7.3-rc1872.9504c794d213/

(Sorry, yes, you need to do all four of them.)

Then via command-line ops or in Jenkins script console set the flag: org.jenkinsci.plugins.pipeline.modeldefinition.parser.RuntimeASTTransformer.SCRIPT_SPLITTING_TRANSFORMATION=true

WARNING: this is a global change. If you install this version and have SCRIPT_SPLITTING_TRANSFORMATION=true, any declarative pipeline Jenkinsfile with a local variable declaration (def varName="value") outside the pipeline block will fail. This is intentional, keeping users from accidentally defeating the improved script splitting. The fix is to add an @Field annotation - @Field def varName="value". You may switch back to allowing locally declared variables by setting org.jenkinsci.plugins.pipeline.modeldefinition.parser.RuntimeASTTransformer.SCRIPT_SPLITTING_ALLOW_LOCAL_VARIABLES=true.

bitwiseman

comment created time in a month

issue commenthub4j/github-api

GHPullRequest.getLabels fails for parsed events

Yeah, that is not great behavior.
GHPullRequest is depending on GHIssue to make sure some fields are populated. This should probably be a check whether labels is null as with a number of other populate() behaviors.

seregamorph

comment created time in a month

Pull request review commenthub4j/github-api

user, push, pull event extensions

 @SuppressFBWarnings(value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD" },         justification = "JSON API") public class GitUser {-    private String name, email, date;+    private String name, email, date, username;      /**-     * Gets name.+     * Gets name (e.g. from git commit).

The commit aspect is mentioned on line 8 above. I see you're trying to be clear. Maybe the suggestion below?

     * Gets the git user name for an author or committer on a git commit.
seregamorph

comment created time in a month

more