code: @Override
      protected void onEvent(final GHSubscriberEvent event) {
          GHEventPayload.Push push;
          try {
              push = GitHub.offline().parseEventPayload(new StringReader(event.getPayload()), GHEventPayload.Push.class);
          } catch (IOException e) {
              LOGGER.warn("Received malformed PushEvent: " + event.getPayload(), e);
              return;
          }
          URL repoUrl = push.getRepository().getUrl();
          final String pusherName = push.getPusher().getName();
          LOGGER.info("Received PushEvent for {} from {}", repoUrl, event.getOrigin());
          final GitHubRepositoryName changedRepository = GitHubRepositoryName.create(repoUrl.toExternalForm());
  
          if (changedRepository != null) {
              // run in high privilege to see all the projects anonymous users don't see.
              // this is safe because when we actually schedule a build, it's a build that can
              // happen at some random time anyway.
              ACL.impersonate(ACL.SYSTEM, new Runnable() {
                  @Override
                  public void run() {
                      for (Item job : Jenkins.getInstance().getAllItems(Item.class)) {
                          GitHubPushTrigger trigger = triggerFrom(job, GitHubPushTrigger.class);
                          if (trigger != null) {
                              String fullDisplayName = job.getFullDisplayName();
                              LOGGER.debug("Considering to poke {}", fullDisplayName);
                              if (GitHubRepositoryNameContributor.parseAssociatedNames(job)
                                      .contains(changedRepository)) {
                                  LOGGER.info("Poked {}", fullDisplayName);
                                  trigger.onPost(GitHubTriggerEvent.create()
                                          .withTimestamp(event.getTimestamp())
                                          .withOrigin(event.getOrigin())
                                          .withTriggeredByUser(pusherName)
                                          .build()
                                  );
                              } else {
                                  LOGGER.debug("Skipped {} because it doesn't have a matching repository.",
                                          fullDisplayName);
                              }
                          }
                      }
                  }
              });
  
              for (GitHubWebHook.Listener listener : ExtensionList.lookup(GitHubWebHook.Listener.class)) {
                  listener.onPushRepositoryChanged(pusherName, changedRepository);
              }
  
          } else {
              LOGGER.warn("Malformed repo url {}", repoUrl);
          }
      }
docs: Calls {@link GitHubPushTrigger} in all projects to handle this hook
  
  @param event   only PUSH event