From 65b5da17f72367fc7bd706aabb0cfafc19a3deb6 Mon Sep 17 00:00:00 2001 From: michael_epperson Date: Tue, 28 Jan 2025 09:55:59 -0800 Subject: [PATCH] fix(jenkins): Changed Int to Long to accomodate cloudbees HA changes --- .../spinnaker/igor/build/BuildCache.java | 24 +++++++++---------- .../igor/build/model/GenericBuild.java | 2 +- .../igor/service/BuildOperations.java | 8 +++---- .../igor/travis/TravisBuildMonitor.java | 10 ++++---- .../spinnaker/igor/travis/TravisCache.java | 22 ++++++++--------- .../igor/travis/client/TravisClient.java | 10 ++++---- .../igor/travis/client/model/v3/Request.java | 2 +- .../igor/travis/client/model/v3/V3Build.java | 8 +++---- .../igor/travis/client/model/v3/V3Log.java | 6 ++--- .../travis/client/model/v3/V3Repository.java | 2 +- .../travis/service/TravisBuildConverter.java | 2 +- .../igor/travis/service/TravisService.java | 21 ++++++++-------- .../igor/build/BuildController.groovy | 24 +++++++++---------- .../exceptions/ArtifactNotFoundException.java | 3 +-- .../igor/gitlabci/GitlabCiBuildMonitor.java | 2 +- .../igor/gitlabci/client/GitlabCiClient.java | 6 ++--- .../gitlabci/service/GitlabCiService.java | 8 +++---- .../igor/jenkins/client/JenkinsClient.groovy | 12 +++++----- .../jenkins/client/model/QueuedJob.groovy | 4 ++-- .../igor/jenkins/service/JenkinsService.java | 20 ++++++++-------- .../spinnaker/igor/wercker/WerckerCache.java | 16 ++++++------- .../igor/wercker/WerckerService.groovy | 8 +++---- .../igor/concourse/ConcourseCache.java | 8 +++---- .../igor/concourse/client/model/Build.java | 4 ++-- .../concourse/service/ConcourseService.java | 4 ++-- .../igor/build/BuildControllerSpec.groovy | 6 ++--- 26 files changed, 121 insertions(+), 121 deletions(-) diff --git a/igor-core/src/main/java/com/netflix/spinnaker/igor/build/BuildCache.java b/igor-core/src/main/java/com/netflix/spinnaker/igor/build/BuildCache.java index 5ae8d490e..6ecb877af 100644 --- a/igor-core/src/main/java/com/netflix/spinnaker/igor/build/BuildCache.java +++ b/igor-core/src/main/java/com/netflix/spinnaker/igor/build/BuildCache.java @@ -71,14 +71,14 @@ public List getTypeaheadResults(String search) { return results; } - public int getLastBuild(String master, String job, boolean running) { + public long getLastBuild(String master, String job, boolean running) { String key = makeKey(master, job, running); return redisClientDelegate.withCommandsClient( c -> { if (!c.exists(key)) { - return -1; + return -1l; } - return Integer.parseInt(c.get(key)); + return Long.parseLong(c.get(key)); }); } @@ -101,7 +101,7 @@ public void setTTL(String key, int ttlSeconds) { }); } - public void setLastBuild(String master, String job, int lastBuild, boolean building, int ttl) { + public void setLastBuild(String master, String job, long lastBuild, boolean building, int ttl) { if (!building) { setBuild(makeKey(master, job), lastBuild, false, master, job, ttl); } @@ -138,7 +138,7 @@ public Map getDeprecatedLastBuild(String master, String job) { } Map converted = new HashMap<>(); - converted.put("lastBuildLabel", Integer.parseInt(result.get("lastBuildLabel"))); + converted.put("lastBuildLabel", Long.parseLong(result.get("lastBuildLabel"))); converted.put("lastBuildBuilding", Boolean.valueOf(result.get("lastBuildBuilding"))); return converted; @@ -157,7 +157,7 @@ public List> getTrackedBuilds(String master) { return builds; } - public void setTracking(String master, String job, int buildId, int ttlSeconds) { + public void setTracking(String master, String job, long buildId, int ttlSeconds) { String key = makeTrackKey(master, job, buildId); redisClientDelegate.withCommandsClient( c -> { @@ -166,7 +166,7 @@ public void setTracking(String master, String job, int buildId, int ttlSeconds) setTTL(key, ttlSeconds); } - public void deleteTracking(String master, String job, int buildId) { + public void deleteTracking(String master, String job, long buildId) { String key = makeTrackKey(master, job, buildId); redisClientDelegate.withCommandsClient( c -> { @@ -182,19 +182,19 @@ private static Map getTrackedBuild(String key) { } private void setBuild( - String key, int lastBuild, boolean building, String master, String job, int ttl) { + String key, long lastBuild, boolean building, String master, String job, int ttl) { redisClientDelegate.withCommandsClient( c -> { - c.hset(key, "lastBuildLabel", Integer.toString(lastBuild)); + c.hset(key, "lastBuildLabel", Long.toString(lastBuild)); c.hset(key, "lastBuildBuilding", Boolean.toString(building)); }); setTTL(key, ttl); } - private void storeLastBuild(String key, int lastBuild, int ttl) { + private void storeLastBuild(String key, long lastBuild, int ttl) { redisClientDelegate.withCommandsClient( c -> { - c.set(key, Integer.toString(lastBuild)); + c.set(key, Long.toString(lastBuild)); }); setTTL(key, ttl); } @@ -208,7 +208,7 @@ protected String makeKey(String master, String job, boolean running) { return baseKey() + ":" + buildState + ":" + master + ":" + job.toUpperCase() + ":" + job; } - protected String makeTrackKey(String master, String job, int buildId) { + protected String makeTrackKey(String master, String job, long buildId) { return baseKey() + ":track:" + master + ":" + job.toUpperCase() + ":" + job + ":" + buildId; } diff --git a/igor-core/src/main/java/com/netflix/spinnaker/igor/build/model/GenericBuild.java b/igor-core/src/main/java/com/netflix/spinnaker/igor/build/model/GenericBuild.java index a6197e9ed..6a557f0fc 100644 --- a/igor-core/src/main/java/com/netflix/spinnaker/igor/build/model/GenericBuild.java +++ b/igor-core/src/main/java/com/netflix/spinnaker/igor/build/model/GenericBuild.java @@ -35,7 +35,7 @@ public class GenericBuild { private boolean building; private String fullDisplayName; private String name; - private int number; + private long number; private Integer duration; /** String representation of time in nanoseconds since Unix epoch */ private String timestamp; diff --git a/igor-core/src/main/java/com/netflix/spinnaker/igor/service/BuildOperations.java b/igor-core/src/main/java/com/netflix/spinnaker/igor/service/BuildOperations.java index 53928bd1f..7366cdb99 100644 --- a/igor-core/src/main/java/com/netflix/spinnaker/igor/service/BuildOperations.java +++ b/igor-core/src/main/java/com/netflix/spinnaker/igor/service/BuildOperations.java @@ -45,7 +45,7 @@ public interface BuildOperations extends BuildService { * @param buildNumber The build number * @return A Spinnaker representation of a build */ - GenericBuild getGenericBuild(String job, int buildNumber); + GenericBuild getGenericBuild(String job, long buildNumber); /** * Trigger a build of a given job on the build service host @@ -54,7 +54,7 @@ public interface BuildOperations extends BuildService { * @param queryParameters A key-value map of parameters to be injected into the build * @return An id identifying the build; preferably the build number of the build */ - int triggerBuildWithParameters(String job, Map queryParameters); + long triggerBuildWithParameters(String job, Map queryParameters); /** * Returns all/relevant builds for the given job. @@ -71,13 +71,13 @@ public interface BuildOperations extends BuildService { * @param buildNumber The build number * @param updatedBuild The updated details for the build */ - default void updateBuild(String jobName, Integer buildNumber, UpdatedBuild updatedBuild) { + default void updateBuild(String jobName, Long buildNumber, UpdatedBuild updatedBuild) { // not supported by default } JobConfiguration getJobConfig(String jobName); - default Object queuedBuild(String master, int item) { + default Object queuedBuild(String master, long item) { throw new UnsupportedOperationException( String.format("Queued builds are not supported for build service %s", master)); } diff --git a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/TravisBuildMonitor.java b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/TravisBuildMonitor.java index a33e807f6..e26d60570 100644 --- a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/TravisBuildMonitor.java +++ b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/TravisBuildMonitor.java @@ -131,7 +131,7 @@ protected void commitDelta(BuildPollingDelta delta, boolean sendEvents) { delta.getItems().forEach(item -> processBuild(sendEvents, master, travisService, item)); // Find id of processed builds - Set processedBuilds = + Set processedBuilds = delta.getItems().stream() .map(BuildDelta::getBuild) .map(V3Build::getId) @@ -140,7 +140,7 @@ protected void commitDelta(BuildPollingDelta delta, boolean sendEvents) { // Check for tracked builds that have fallen out of the tracking window (can happen for long // running Travis jobs) buildCache.getTrackedBuilds(master).stream() - .mapToInt(build -> Integer.parseInt(build.get("buildId"))) + .mapToLong(build -> Long.parseLong(build.get("buildId"))) .filter(id -> !processedBuilds.contains(id)) .mapToObj(travisService::getV3Build) .filter( @@ -178,7 +178,7 @@ protected void commitDelta(BuildPollingDelta delta, boolean sendEvents) { private Stream createBuildDelta( String master, TravisService travisService, V3Build v3Build) { - int lastBuild = + long lastBuild = buildCache.getLastBuild(master, v3Build.branchedRepoSlug(), v3Build.getState().isRunning()); return Stream.of(v3Build) .filter(build -> !build.spinnakerTriggered()) @@ -311,7 +311,7 @@ public static class BuildDelta implements DeltaItem { private final V3Build build; private final GenericBuild genericBuild; private final String travisBaseUrl; - private final int currentBuildNum; - private final int previousBuildNum; + private final long currentBuildNum; + private final long previousBuildNum; } } diff --git a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/TravisCache.java b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/TravisCache.java index 11f6d520c..f662f2c5b 100644 --- a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/TravisCache.java +++ b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/TravisCache.java @@ -48,7 +48,7 @@ public TravisCache( this.igorConfigurationProperties = igorConfigurationProperties; } - public Map getQueuedJob(String master, int queueNumber) { + public Map getQueuedJob(String master, long queueNumber) { Map result = redisClientDelegate.withCommandsClient( c -> { @@ -59,32 +59,32 @@ public Map getQueuedJob(String master, int queueNumber) { return Collections.emptyMap(); } - Map converted = new HashMap<>(); - converted.put("requestId", Integer.parseInt(result.get("requestId"))); - converted.put("repositoryId", Integer.parseInt(result.get("repositoryId"))); + Map converted = new HashMap<>(); + converted.put("requestId", Long.parseLong(result.get("requestId"))); + converted.put("repositoryId", Long.parseLong(result.get("repositoryId"))); return converted; } - public int setQueuedJob(String master, int repositoryId, int requestId) { + public long setQueuedJob(String master, long repositoryId, long requestId) { String key = makeKey(QUEUE_TYPE, master, requestId); redisClientDelegate.withCommandsClient( c -> { - c.hset(key, "requestId", Integer.toString(requestId)); - c.hset(key, "repositoryId", Integer.toString(repositoryId)); + c.hset(key, "requestId", Long.toString(requestId)); + c.hset(key, "repositoryId", Long.toString(repositoryId)); c.expire(key, QUEUE_EXPIRE_SECONDS); }); return requestId; } - public void removeQuededJob(String master, int queueId) { + public void removeQuededJob(String master, long queueId) { redisClientDelegate.withCommandsClient( c -> { c.del(makeKey(QUEUE_TYPE, master, queueId)); }); } - public void setJobLog(String master, int jobId, String log) { + public void setJobLog(String master, long jobId, String log) { String key = makeKey(LOG_TYPE, master, jobId); redisClientDelegate.withCommandsClient( c -> { @@ -92,7 +92,7 @@ public void setJobLog(String master, int jobId, String log) { }); } - public String getJobLog(String master, int jobId) { + public String getJobLog(String master, long jobId) { String key = makeKey(LOG_TYPE, master, jobId); return redisClientDelegate.withCommandsClient( c -> { @@ -100,7 +100,7 @@ public String getJobLog(String master, int jobId) { }); } - private String makeKey(String type, String master, int id) { + private String makeKey(String type, String master, long id) { return baseKey() + ":" + type + ":" + master + ":" + id; } diff --git a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/TravisClient.java b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/TravisClient.java index 68875c252..bc0038530 100644 --- a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/TravisClient.java +++ b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/TravisClient.java @@ -57,7 +57,7 @@ public interface TravisClient { public abstract Builds builds( @Header("Authorization") String accessToken, @Query("slug") String repoSlug, - @Query("number") int buildNumber); + @Query("number") long buildNumber); @POST("/repo/{repoSlug}/requests") @Headers("Travis-API-Version: 3") @@ -79,14 +79,14 @@ public abstract V3Log jobLog( @Headers("Travis-API-Version: 3") public abstract V3Build v3build( @Header("Authorization") String accessToken, - @Path("build_id") int buildId, + @Path("build_id") long buildId, @Query("include") String include); @GET("/repo/{repository_id}/builds") @Headers("Travis-API-Version: 3") public abstract V3Builds builds( @Header("Authorization") String accessToken, - @Path("repository_id") int repositoryId, + @Path("repository_id") long repositoryId, @Query("limit") int limit, @Query("include") String include); @@ -130,8 +130,8 @@ public abstract V3Builds v3buildsByEventType( @Headers("Travis-API-Version: 3") public abstract Request request( @Header("Authorization") String accessToken, - @Path("repository_id") int repositoryId, - @Path("request_id") int requestId); + @Path("repository_id") long repositoryId, + @Path("request_id") long requestId); @GET("/jobs") @Headers("Travis-API-Version: 3") diff --git a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/model/v3/Request.java b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/model/v3/Request.java index 1c7562194..acf78d13c 100644 --- a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/model/v3/Request.java +++ b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/model/v3/Request.java @@ -29,5 +29,5 @@ public class Request { private List builds; - private int id; + private long id; } diff --git a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/model/v3/V3Build.java b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/model/v3/V3Build.java index 59ef16044..4e0b3b87d 100644 --- a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/model/v3/V3Build.java +++ b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/model/v3/V3Build.java @@ -41,7 +41,7 @@ public class V3Build { private V3Branch branch; @JsonProperty("commit_id") - private int commitId; + private long commitId; private V3Commit commit; @@ -50,14 +50,14 @@ public class V3Build { @JsonProperty("event_type") private String eventType; - @EqualsAndHashCode.Include private int id; + @EqualsAndHashCode.Include private long id; private V3Repository repository; @JsonProperty("repository_id") - private int repositoryId; + private long repositoryId; - private int number; + private long number; @EqualsAndHashCode.Include private TravisBuildState state; diff --git a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/model/v3/V3Log.java b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/model/v3/V3Log.java index f7feef47e..083841c0c 100644 --- a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/model/v3/V3Log.java +++ b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/model/v3/V3Log.java @@ -76,7 +76,7 @@ public boolean isReady() { @JsonIgnoreProperties(ignoreUnknown = true) public static class V3LogPart { private String content; - private Integer number; + private Long number; private boolean isFinal; public String getContent() { @@ -87,11 +87,11 @@ public void setContent(String content) { this.content = content; } - public Integer getNumber() { + public Long getNumber() { return number; } - public void setNumber(Integer number) { + public void setNumber(Long number) { this.number = number; } diff --git a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/model/v3/V3Repository.java b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/model/v3/V3Repository.java index a63f410cc..b831719c4 100644 --- a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/model/v3/V3Repository.java +++ b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/client/model/v3/V3Repository.java @@ -26,7 +26,7 @@ @XmlRootElement(name = "repository") public class V3Repository { - private int id; + private long id; private String name; diff --git a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/service/TravisBuildConverter.java b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/service/TravisBuildConverter.java index 2d3196452..08dc870bb 100644 --- a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/service/TravisBuildConverter.java +++ b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/service/TravisBuildConverter.java @@ -53,7 +53,7 @@ public static GenericBuild genericBuild(V3Build build, String baseUrl) { return genericBuild; } - public static String url(String repoSlug, String baseUrl, int id) { + public static String url(String repoSlug, String baseUrl, long id) { return baseUrl + "/" + repoSlug + "/builds/" + id; } } diff --git a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/service/TravisService.java b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/service/TravisService.java index f1fb4f85a..6bf105570 100644 --- a/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/service/TravisService.java +++ b/igor-monitor-travis/src/main/java/com/netflix/spinnaker/igor/travis/service/TravisService.java @@ -142,7 +142,7 @@ public BuildServiceProvider getBuildServiceProvider() { public List getGenericGitRevisions(String inputRepoSlug, GenericBuild build) { String repoSlug = cleanRepoSlug(inputRepoSlug); if (StringUtils.isNumeric(build.getId())) { - V3Build v3build = getV3Build(Integer.parseInt(build.getId())); + V3Build v3build = getV3Build(Long.parseLong(build.getId())); if (v3build.getCommit() != null) { return Collections.singletonList( v3build @@ -169,14 +169,15 @@ public List getGenericGitRevisions(String inputRepoSlug, Gen } @Override - public GenericBuild getGenericBuild(final String inputRepoSlug, final int buildNumber) { + public GenericBuild getGenericBuild(final String inputRepoSlug, final long buildNumber) { String repoSlug = cleanRepoSlug(inputRepoSlug); Build build = getBuild(repoSlug, buildNumber); return getGenericBuild(build, repoSlug); } @Override - public int triggerBuildWithParameters(String inputRepoSlug, Map queryParameters) { + public long triggerBuildWithParameters( + String inputRepoSlug, Map queryParameters) { String repoSlug = cleanRepoSlug(inputRepoSlug); String branch = branchFromRepoSlug(inputRepoSlug); RepoRequest repoRequest = new RepoRequest(branch.isEmpty() ? "master" : branch); @@ -211,16 +212,16 @@ public Permissions getPermissions() { return permissions; } - public V3Build getV3Build(int buildId) { + public V3Build getV3Build(long buildId) { return travisClient.v3build( getAccessToken(), buildId, addLogCompleteIfApplicable("build.commit")); } - public Builds getBuilds(String repoSlug, int buildNumber) { + public Builds getBuilds(String repoSlug, long buildNumber) { return travisClient.builds(getAccessToken(), repoSlug, buildNumber); } - public Build getBuild(String repoSlug, int buildNumber) { + public Build getBuild(String repoSlug, long buildNumber) { Builds builds = getBuilds(repoSlug, buildNumber); return !builds.getBuilds().isEmpty() ? builds.getBuilds().get(0) : null; } @@ -229,7 +230,7 @@ public Build getBuild(String repoSlug, int buildNumber) { public Map getBuildProperties( String inputRepoSlug, GenericBuild build, String fileName) { try { - V3Build v3build = getV3Build(Integer.parseInt(build.getId())); + V3Build v3build = getV3Build(Long.parseLong(build.getId())); return PropertyParser.extractPropertiesFromLog(getLog(v3build)); } catch (Exception e) { log.error("Unable to get igorProperties '{}'", kv("job", inputRepoSlug), e); @@ -523,8 +524,8 @@ public String getUrl(String repoSlug) { } @Override - public Map queuedBuild(String master, int queueId) { - Map queuedJob = travisCache.getQueuedJob(groupKey, queueId); + public Map queuedBuild(String master, long queueId) { + Map queuedJob = travisCache.getQueuedJob(groupKey, queueId); Request requestResponse = travisClient.request( getAccessToken(), queuedJob.get("repositoryId"), queuedJob.get("requestId")); @@ -537,7 +538,7 @@ public Map queuedBuild(String master, int queueId) { queueId, groupKey); travisCache.removeQuededJob(groupKey, queueId); - LinkedHashMap map = new LinkedHashMap<>(1); + LinkedHashMap map = new LinkedHashMap<>(1); map.put("number", requestResponse.getBuilds().get(0).getNumber()); return map; } diff --git a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/build/BuildController.groovy b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/build/BuildController.groovy index 939a696c2..a2b172f4d 100644 --- a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/build/BuildController.groovy +++ b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/build/BuildController.groovy @@ -76,7 +76,7 @@ class BuildController { } @Nullable - private GenericBuild jobStatus(BuildOperations buildService, String master, String job, Integer buildNumber) { + private GenericBuild jobStatus(BuildOperations buildService, String master, String job, Long buildNumber) { GenericBuild build = buildService.getGenericBuild(job, buildNumber) if (!build) return null @@ -100,7 +100,7 @@ class BuildController { @RequestMapping(value = '/builds/status/{buildNumber}/{master:.+}/**') @PreAuthorize("hasPermission(#master, 'BUILD_SERVICE', 'READ')") GenericBuild getJobStatus(@PathVariable String master, @PathVariable - Integer buildNumber, HttpServletRequest request) { + Long buildNumber, HttpServletRequest request) { def job = ((String) request.getAttribute( HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE)).split('/').drop(5).join('/') def buildService = getBuildService(master) @@ -111,7 +111,7 @@ class BuildController { @PreAuthorize("hasPermission(#master, 'BUILD_SERVICE', 'READ')") GenericBuild getJobStatus( @PathVariable String master, - @PathVariable Integer buildNumber, + @PathVariable Long buildNumber, @RequestParam("job") String job) { def buildService = getBuildService(master) return jobStatus(buildService, master, job, buildNumber) @@ -120,7 +120,7 @@ class BuildController { @RequestMapping(value = '/builds/artifacts/{buildNumber}/{master:.+}/**') @PreAuthorize("hasPermission(#master, 'BUILD_SERVICE', 'READ')") List getBuildResults(@PathVariable String master, @PathVariable - Integer buildNumber, @Query("propertyFile") String propertyFile, HttpServletRequest request) { + Long buildNumber, @Query("propertyFile") String propertyFile, HttpServletRequest request) { def job = ((String) request.getAttribute( HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE)).split('/').drop(5).join('/') def buildService = getBuildService(master) @@ -136,7 +136,7 @@ class BuildController { @RequestMapping(value = '/builds/artifacts/{buildNumber}/{master}') @PreAuthorize("hasPermission(#master, 'BUILD_SERVICE', 'READ')") List getBuildResults(@PathVariable String master, @PathVariable - Integer buildNumber, @RequestParam("job") String job ,@Query("propertyFile") String propertyFile) { + Long buildNumber, @RequestParam("job") String job ,@Query("propertyFile") String propertyFile) { def buildService = getBuildService(master) GenericBuild build = jobStatus(buildService, master, job, buildNumber) if (build && buildService instanceof BuildProperties && artifactExtractor != null) { @@ -148,7 +148,7 @@ class BuildController { @RequestMapping(value = '/builds/queue/{master}/{item}') @PreAuthorize("hasPermission(#master, 'BUILD_SERVICE', 'READ')") - Object getQueueLocation(@PathVariable String master, @PathVariable int item) { + Object getQueueLocation(@PathVariable String master, @PathVariable long item) { def buildService = getBuildService(master) return buildService.queuedBuild(master, item) } @@ -168,7 +168,7 @@ class BuildController { @PathVariable("name") String master, @PathVariable String jobName, @PathVariable String queuedBuild, - @PathVariable Integer buildNumber) { + @PathVariable Long buildNumber) { stopJob(master, buildNumber, jobName, queuedBuild) "true" } @@ -179,14 +179,14 @@ class BuildController { @PathVariable String master, @RequestParam String jobName, @PathVariable String queuedBuild, - @PathVariable Integer buildNumber) { + @PathVariable Long buildNumber) { stopJob(master, buildNumber, jobName, queuedBuild) "true" } - void stopJob(String master, int buildNumber, String jobName, String queuedBuild) { + void stopJob(String master, long buildNumber, String jobName, String queuedBuild) { def buildService = getBuildService(master) if (buildService instanceof JenkinsService) { // Jobs that haven't been started yet won't have a buildNumber @@ -216,7 +216,7 @@ class BuildController { @PreAuthorize("hasPermission(#master, 'BUILD_SERVICE', 'WRITE')") void update( @PathVariable("name") String master, - @PathVariable("buildNumber") Integer buildNumber, + @PathVariable("buildNumber") Long buildNumber, @RequestBody UpdatedBuild updatedBuild, HttpServletRequest request ) { @@ -336,7 +336,7 @@ class BuildController { @PreAuthorize("hasPermission(#master, 'BUILD_SERVICE', 'READ')") Map getProperties( @PathVariable String master, - @PathVariable Integer buildNumber, @PathVariable + @PathVariable Long buildNumber, @PathVariable String fileName, HttpServletRequest request) { def job = ((String) request.getAttribute( HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE)).split('/').drop(6).join('/') @@ -354,7 +354,7 @@ class BuildController { @PreAuthorize("hasPermission(#master, 'BUILD_SERVICE', 'READ')") Map getProperties( @PathVariable String master, - @PathVariable Integer buildNumber, @PathVariable + @PathVariable Long buildNumber, @PathVariable String fileName, @RequestParam("job") String job) { def buildService = getBuildService(master) if (buildService instanceof BuildProperties) { diff --git a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/exceptions/ArtifactNotFoundException.java b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/exceptions/ArtifactNotFoundException.java index 747e4f467..faf45b567 100644 --- a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/exceptions/ArtifactNotFoundException.java +++ b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/exceptions/ArtifactNotFoundException.java @@ -23,8 +23,7 @@ @ResponseStatus(NOT_FOUND) public class ArtifactNotFoundException extends NotFoundException { - public ArtifactNotFoundException( - String master, String job, Integer buildNumber, String fileName) { + public ArtifactNotFoundException(String master, String job, Long buildNumber, String fileName) { super( String.format( "Could not find build artifact matching requested filename '%s' on '%s/%s' build %s", diff --git a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/gitlabci/GitlabCiBuildMonitor.java b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/gitlabci/GitlabCiBuildMonitor.java index 149299312..3d8dcd78e 100644 --- a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/gitlabci/GitlabCiBuildMonitor.java +++ b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/gitlabci/GitlabCiBuildMonitor.java @@ -130,7 +130,7 @@ protected BuildPollingDelta generateDelta(PollContext ctx) { continue; } String pipelineIdCacheKey = String.valueOf(project.getId()); - int cachedBuildId = buildCache.getLastBuild(master, pipelineIdCacheKey, false); + long cachedBuildId = buildCache.getLastBuild(master, pipelineIdCacheKey, false); // GitLab CI pipelineIds increment; Determine if it is new using the ID if (pipeline.getId() > cachedBuildId) { updatedBuilds.incrementAndGet(); diff --git a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/gitlabci/client/GitlabCiClient.java b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/gitlabci/client/GitlabCiClient.java index 423cf51c4..c6304be7d 100644 --- a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/gitlabci/client/GitlabCiClient.java +++ b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/gitlabci/client/GitlabCiClient.java @@ -45,12 +45,12 @@ List getPipelineSummaries( Pipeline getPipeline(@Path("projectId") String projectId, @Path("pipelineId") long pipelineId); @GET("/api/v4/projects/{projectId}/pipelines/{pipelineId}/jobs") - List getJobs(@Path("projectId") String projectId, @Path("pipelineId") int pipelineId); + List getJobs(@Path("projectId") String projectId, @Path("pipelineId") long pipelineId); @GET("/api/v4/projects/{projectId}/jobs/{jobId}/trace") - Response getJobLog(@Path("projectId") String projectId, @Path("jobId") int jobId); + Response getJobLog(@Path("projectId") String projectId, @Path("jobId") long jobId); // GitLabCI pipelines can spawn other child pipelines, which are linked by bridges @GET("/api/v4/projects/{projectId}/pipelines/{pipelineId}/bridges") - List getBridges(@Path("projectId") String projectId, @Path("pipelineId") int pipelineId); + List getBridges(@Path("projectId") String projectId, @Path("pipelineId") long pipelineId); } diff --git a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/gitlabci/service/GitlabCiService.java b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/gitlabci/service/GitlabCiService.java index 93cbe3115..8d3e913a4 100644 --- a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/gitlabci/service/GitlabCiService.java +++ b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/gitlabci/service/GitlabCiService.java @@ -78,7 +78,7 @@ public List getGenericGitRevisions(String job, GenericBuild } @Override - public GenericBuild getGenericBuild(String projectId, int pipelineId) { + public GenericBuild getGenericBuild(String projectId, long pipelineId) { Project project = client.getProject(projectId); if (project == null) { log.error("Could not find Gitlab CI Project with projectId={}", projectId); @@ -103,7 +103,7 @@ public JobConfiguration getJobConfig(String jobName) { } @Override - public int triggerBuildWithParameters(String job, Map queryParameters) { + public long triggerBuildWithParameters(String job, Map queryParameters) { throw new UnsupportedOperationException(); } @@ -131,7 +131,7 @@ public Map getBuildProperties(String job, GenericBuild build, St } // Gets a pipeline's jobs along with any child pipeline jobs (bridges) - private List getJobsWithBridges(String projectId, Integer pipelineId) { + private List getJobsWithBridges(String projectId, Long pipelineId) { List jobs = this.client.getJobs(projectId, pipelineId); List bridges = this.client.getBridges(projectId, pipelineId); bridges.parallelStream() @@ -150,7 +150,7 @@ private List getJobsWithBridges(String projectId, Integer pipelineId) { return jobs; } - private Map getPropertyFileFromLog(String projectId, Integer pipelineId) { + private Map getPropertyFileFromLog(String projectId, Long pipelineId) { Map properties = new HashMap<>(); return retrySupport.retry( () -> { diff --git a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/jenkins/client/JenkinsClient.groovy b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/jenkins/client/JenkinsClient.groovy index 7c264b4e0..369e136dd 100644 --- a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/jenkins/client/JenkinsClient.groovy +++ b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/jenkins/client/JenkinsClient.groovy @@ -48,14 +48,14 @@ interface JenkinsClient { BuildDependencies getDependencies(@EncodedPath('jobName') String jobName) @GET('/job/{jobName}/{buildNumber}/api/xml?exclude=/*/action[not(totalCount)]&tree=actions[failCount,skipCount,totalCount,urlName],duration,number,timestamp,result,building,url,fullDisplayName,artifacts[displayPath,fileName,relativePath]') - Build getBuild(@EncodedPath('jobName') String jobName, @Path('buildNumber') Integer buildNumber) + Build getBuild(@EncodedPath('jobName') String jobName, @Path('buildNumber') Long buildNumber) // The location of the SCM details in the build xml changed in version 4.0.0 of the jenkins-git plugin; see the // header comment in com.netflix.spinnaker.igor.jenkins.client.model.ScmDetails for more information. // The exclude and tree parameters to this call must continue to support both formats to remain compatible with // all versions of the plugin. @GET('/job/{jobName}/{buildNumber}/api/xml?exclude=/*/action[not(build|lastBuiltRevision)]&tree=actions[remoteUrls,lastBuiltRevision[branch[name,SHA1]],build[revision[branch[name,SHA1]]]]') - ScmDetails getGitDetails(@EncodedPath('jobName') String jobName, @Path('buildNumber') Integer buildNumber) + ScmDetails getGitDetails(@EncodedPath('jobName') String jobName, @Path('buildNumber') Long buildNumber) @GET('/job/{jobName}/lastCompletedBuild/api/xml') Build getLatestBuild(@EncodedPath('jobName') String jobName) @@ -67,7 +67,7 @@ interface JenkinsClient { Response getBuildOutput(@EncodedPath('jobName') String jobName, @Path('buildNumber') String buildNumber) @GET('/queue/item/{itemNumber}/api/xml') - QueuedJob getQueuedItem(@Path('itemNumber') Integer item) + QueuedJob getQueuedItem(@Path('itemNumber') Long item) @POST('/job/{jobName}/build') Response build(@EncodedPath('jobName') String jobName, @Body String emptyRequest, @Header("Jenkins-Crumb") String crumb) @@ -77,10 +77,10 @@ interface JenkinsClient { @FormUrlEncoded @POST('/job/{jobName}/{buildNumber}/submitDescription') - Response submitDescription(@EncodedPath('jobName') String jobName, @Path('buildNumber') Integer buildNumber, @Field("description") String description, @Header("Jenkins-Crumb") String crumb) + Response submitDescription(@EncodedPath('jobName') String jobName, @Path('buildNumber') Long buildNumber, @Field("description") String description, @Header("Jenkins-Crumb") String crumb) @POST('/job/{jobName}/{buildNumber}/stop') - Response stopRunningBuild(@EncodedPath('jobName') String jobName, @Path('buildNumber') Integer buildNumber, @Body String EmptyRequest, @Header("Jenkins-Crumb") String crumb) + Response stopRunningBuild(@EncodedPath('jobName') String jobName, @Path('buildNumber') Long buildNumber, @Body String EmptyRequest, @Header("Jenkins-Crumb") String crumb) @POST('/queue/cancelItem') Response stopQueuedBuild(@Query('id') String queuedBuild, @Body String emptyRequest, @Header("Jenkins-Crumb") String crumb) @@ -92,7 +92,7 @@ interface JenkinsClient { @GET('/job/{jobName}/{buildNumber}/artifact/{fileName}') Response getPropertyFile( @EncodedPath('jobName') String jobName, - @Path('buildNumber') Integer buildNumber, @Path(value = 'fileName', encode = false) String fileName) + @Path('buildNumber') Long buildNumber, @Path(value = 'fileName', encode = false) String fileName) @GET('/crumbIssuer/api/xml') Crumb getCrumb() diff --git a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/jenkins/client/model/QueuedJob.groovy b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/jenkins/client/model/QueuedJob.groovy index 1cce114b2..8223f6393 100644 --- a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/jenkins/client/model/QueuedJob.groovy +++ b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/jenkins/client/model/QueuedJob.groovy @@ -26,7 +26,7 @@ class QueuedJob { QueuedExecutable executable @XmlElement(name = 'number') - Integer getNumber() { + Long getNumber() { return executable?.number } } @@ -34,5 +34,5 @@ class QueuedJob { class QueuedExecutable { @XmlElement - Integer number + Long number } diff --git a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/jenkins/service/JenkinsService.java b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/jenkins/service/JenkinsService.java index be41575fe..f5248c5fb 100644 --- a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/jenkins/service/JenkinsService.java +++ b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/jenkins/service/JenkinsService.java @@ -170,18 +170,18 @@ public BuildDependencies getDependencies(String jobName) { return circuitBreaker.executeSupplier(() -> jenkinsClient.getDependencies(encode(jobName))); } - public Build getBuild(String jobName, Integer buildNumber) { + public Build getBuild(String jobName, Long buildNumber) { return circuitBreaker.executeSupplier( () -> jenkinsClient.getBuild(encode(jobName), buildNumber)); } @Override - public GenericBuild getGenericBuild(String jobName, int buildNumber) { + public GenericBuild getGenericBuild(String jobName, long buildNumber) { return getBuild(jobName, buildNumber).genericBuild(jobName); } @Override - public int triggerBuildWithParameters(String job, Map queryParameters) { + public long triggerBuildWithParameters(String job, Map queryParameters) { Response response = buildWithParameters(job, queryParameters); if (response.getStatus() != 201) { throw new BuildJobError("Received a non-201 status when submitting job '" + job + "'"); @@ -200,7 +200,7 @@ public int triggerBuildWithParameters(String job, Map queryParam "Could not find Location header for job '" + job + "'")); int lastSlash = queuedLocation.lastIndexOf('/'); - return Integer.parseInt(queuedLocation.substring(lastSlash + 1)); + return Long.parseLong(queuedLocation.substring(lastSlash + 1)); } @Override @@ -208,7 +208,7 @@ public Permissions getPermissions() { return permissions; } - private ScmDetails getGitDetails(String jobName, Integer buildNumber) { + private ScmDetails getGitDetails(String jobName, Long buildNumber) { return retrySupport.retry( () -> { try { @@ -230,7 +230,7 @@ public Build getLatestBuild(String jobName) { } @Override - public QueuedJob queuedBuild(String master, int item) { + public QueuedJob queuedBuild(String master, long item) { try { return circuitBreaker.executeSupplier(() -> jenkinsClient.getQueuedItem(item)); } catch (SpinnakerHttpException e) { @@ -253,7 +253,7 @@ public Response buildWithParameters(String jobName, Map queryPar } @Override - public void updateBuild(String jobName, Integer buildNumber, UpdatedBuild updatedBuild) { + public void updateBuild(String jobName, Long buildNumber, UpdatedBuild updatedBuild) { if (updatedBuild.getDescription() != null) { circuitBreaker.executeRunnable( () -> @@ -298,7 +298,7 @@ public Map getBuildProperties(String job, GenericBuild build, St return map; } - private String getArtifactPathFromBuild(String job, int buildNumber, String fileName) { + private String getArtifactPathFromBuild(String job, long buildNumber, String fileName) { return retrySupport.retry( () -> this.getBuild(job, buildNumber).getArtifacts().stream() @@ -319,7 +319,7 @@ private String getArtifactPathFromBuild(String job, int buildNumber, String file false); } - private Response getPropertyFile(String jobName, Integer buildNumber, String fileName) { + private Response getPropertyFile(String jobName, Long buildNumber, String fileName) { return retrySupport.retry( () -> { try { @@ -342,7 +342,7 @@ private Response getPropertyFile(String jobName, Integer buildNumber, String fil false); } - public Response stopRunningBuild(String jobName, Integer buildNumber) { + public Response stopRunningBuild(String jobName, Long buildNumber) { return circuitBreaker.executeSupplier( () -> jenkinsClient.stopRunningBuild(encode(jobName), buildNumber, "", getCrumb())); } diff --git a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/wercker/WerckerCache.java b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/wercker/WerckerCache.java index 37a562e1c..1dd5d588b 100644 --- a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/wercker/WerckerCache.java +++ b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/wercker/WerckerCache.java @@ -84,7 +84,7 @@ public void setPipelineID(String master, String pipeline, String id) { }); } - public String getRunID(String master, String pipeline, final int buildNumber) { + public String getRunID(String master, String pipeline, final long buildNumber) { String key = makeKey(master, pipeline) + ":runs"; final Map existing = redisClientDelegate.withCommandsClient( @@ -94,7 +94,7 @@ public String getRunID(String master, String pipeline, final int buildNumber) { } return c.hgetAll(key); }); - String build = Integer.toString(buildNumber); + String build = Long.toString(buildNumber); for (Entry entry : existing.entrySet()) { if (entry.getValue().equals(build)) { return entry.getKey(); @@ -112,7 +112,7 @@ public String getRunID(String master, String pipeline, final int buildNumber) { * @param runs * @return a map containing the generated build numbers for each run created, keyed by run id */ - public Map updateBuildNumbers( + public Map updateBuildNumbers( String master, String appAndPipelineName, List runs) { String key = makeKey(master, appAndPipelineName) + ":runs"; final Map existing = @@ -130,22 +130,22 @@ public Map updateBuildNumbers( .filter(run -> !existing.containsKey(run.getId())) .collect(Collectors.toList()); } - Map runIdToBuildNumber = new HashMap<>(); + Map runIdToBuildNumber = new HashMap<>(); int startNumber = (existing == null || existing.size() == 0) ? 0 : existing.size(); newRuns.sort(startedAtComparator); for (int i = 0; i < newRuns.size(); i++) { int buildNum = startNumber + i; - setBuildNumber(master, appAndPipelineName, newRuns.get(i).getId(), buildNum); - runIdToBuildNumber.put(newRuns.get(i).getId(), buildNum); + setBuildNumber(master, appAndPipelineName, newRuns.get(i).getId(), (long) buildNum); + runIdToBuildNumber.put(newRuns.get(i).getId(), (long) buildNum); } return runIdToBuildNumber; } - public void setBuildNumber(String master, String pipeline, String runID, int number) { + public void setBuildNumber(String master, String pipeline, String runID, long number) { String key = makeKey(master, pipeline) + ":runs"; redisClientDelegate.withCommandsClient( c -> { - c.hset(key, runID, Integer.toString(number)); + c.hset(key, runID, Long.toString(number)); }); } diff --git a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/wercker/WerckerService.groovy b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/wercker/WerckerService.groovy index f22250347..471171359 100644 --- a/igor-web/src/main/groovy/com/netflix/spinnaker/igor/wercker/WerckerService.groovy +++ b/igor-web/src/main/groovy/com/netflix/spinnaker/igor/wercker/WerckerService.groovy @@ -86,7 +86,7 @@ class WerckerService implements BuildOperations { } @Override - GenericBuild getGenericBuild(final String job, final int buildNumber) { + GenericBuild getGenericBuild(final String job, final long buildNumber) { QualifiedPipelineName qPipeline = QualifiedPipelineName.of(job) String runId = cache.getRunID(groupKey, job, buildNumber) if (runId == null) { @@ -128,7 +128,7 @@ class WerckerService implements BuildOperations { return Result.UNSTABLE } - Response stopRunningBuild (String appAndPipelineName, Integer buildNumber){ + Response stopRunningBuild (String appAndPipelineName, Long buildNumber){ String runId = cache.getRunID(groupKey, appAndPipelineName, buildNumber) if (runId == null) { log.warn("Could not cancel build number {} for job {} - no matching run ID!", @@ -140,7 +140,7 @@ class WerckerService implements BuildOperations { } @Override - int triggerBuildWithParameters(final String appAndPipelineName, final Map queryParameters) { + long triggerBuildWithParameters(final String appAndPipelineName, final Map queryParameters) { QualifiedPipelineName qPipeline = QualifiedPipelineName.of(appAndPipelineName) String org = qPipeline.ownerName String appName = qPipeline.appName @@ -163,7 +163,7 @@ class WerckerService implements BuildOperations { //Create an entry in the WerckerCache for this new run. This will also generate //an integer build number for the run - Map runIdBuildNumbers = cache.updateBuildNumbers( + Map runIdBuildNumbers = cache.updateBuildNumbers( master, appAndPipelineName, Collections.singletonList(run)) log.info("Triggered run {} at URL {} with build number {}", diff --git a/igor-web/src/main/java/com/netflix/spinnaker/igor/concourse/ConcourseCache.java b/igor-web/src/main/java/com/netflix/spinnaker/igor/concourse/ConcourseCache.java index 022a0c765..9047ca44d 100644 --- a/igor-web/src/main/java/com/netflix/spinnaker/igor/concourse/ConcourseCache.java +++ b/igor-web/src/main/java/com/netflix/spinnaker/igor/concourse/ConcourseCache.java @@ -50,18 +50,18 @@ public Long getLastPollCycleTimestamp(ConcourseProperties.Host host, Job job) { } public boolean getEventPosted( - ConcourseProperties.Host host, Job job, Long cursor, Integer buildNumber) { + ConcourseProperties.Host host, Job job, Long cursor, Long buildNumber) { String key = makeKey(host, job) + ":" + POLL_STAMP + ":" + cursor; return redisClientDelegate.withCommandsClient( - c -> c.hget(key, Integer.toString(buildNumber)) != null); + c -> c.hget(key, Long.toString(buildNumber)) != null); } public void setEventPosted( - ConcourseProperties.Host host, Job job, Long cursor, Integer buildNumber) { + ConcourseProperties.Host host, Job job, Long cursor, Long buildNumber) { String key = makeKey(host, job) + ":" + POLL_STAMP + ":" + cursor; redisClientDelegate.withCommandsClient( c -> { - c.hset(key, Integer.toString(buildNumber), "POSTED"); + c.hset(key, Long.toString(buildNumber), "POSTED"); }); } diff --git a/igor-web/src/main/java/com/netflix/spinnaker/igor/concourse/client/model/Build.java b/igor-web/src/main/java/com/netflix/spinnaker/igor/concourse/client/model/Build.java index a120cb817..2ee996889 100644 --- a/igor-web/src/main/java/com/netflix/spinnaker/igor/concourse/client/model/Build.java +++ b/igor-web/src/main/java/com/netflix/spinnaker/igor/concourse/client/model/Build.java @@ -36,8 +36,8 @@ public BigDecimal getDecimalNumber() { return new BigDecimal(name); } - public int getNumber() { - return getDecimalNumber().intValue(); + public long getNumber() { + return getDecimalNumber().longValue(); } public boolean isSuccessful() { diff --git a/igor-web/src/main/java/com/netflix/spinnaker/igor/concourse/service/ConcourseService.java b/igor-web/src/main/java/com/netflix/spinnaker/igor/concourse/service/ConcourseService.java index a2a920623..693300b8e 100644 --- a/igor-web/src/main/java/com/netflix/spinnaker/igor/concourse/service/ConcourseService.java +++ b/igor-web/src/main/java/com/netflix/spinnaker/igor/concourse/service/ConcourseService.java @@ -145,7 +145,7 @@ public List getGenericGitRevisions(String jobPath, GenericBu @Nullable @Override - public GenericBuild getGenericBuild(String jobPath, int buildNumber) { + public GenericBuild getGenericBuild(String jobPath, long buildNumber) { return getBuilds(jobPath, null).stream() .filter(build -> build.getNumber() == buildNumber) .sorted() @@ -322,7 +322,7 @@ private static String translateS3HttpUrl(String url) { } @Override - public int triggerBuildWithParameters(String job, Map queryParameters) { + public long triggerBuildWithParameters(String job, Map queryParameters) { throw new UnsupportedOperationException("Triggering concourse builds not supported"); } diff --git a/igor-web/src/test/groovy/com/netflix/spinnaker/igor/build/BuildControllerSpec.groovy b/igor-web/src/test/groovy/com/netflix/spinnaker/igor/build/BuildControllerSpec.groovy index b81aed788..70bc8ae34 100644 --- a/igor-web/src/test/groovy/com/netflix/spinnaker/igor/build/BuildControllerSpec.groovy +++ b/igor-web/src/test/groovy/com/netflix/spinnaker/igor/build/BuildControllerSpec.groovy @@ -73,9 +73,9 @@ class BuildControllerSpec extends Specification { def JENKINS_SERVICE = 'JENKINS_SERVICE' def TRAVIS_SERVICE = 'TRAVIS_SERVICE' def HTTP_201 = 201 - def BUILD_NUMBER = 123 - def BUILD_ID = 654321 - def QUEUED_JOB_NUMBER = 123456 + def BUILD_NUMBER = 123456789012 + def BUILD_ID = 654321098765 + def QUEUED_JOB_NUMBER = 123456789012 def JOB_NAME = "job/name/can/have/slashes" def SIMPLE_JOB_NAME = "simpleJobName" def PENDING_JOB_NAME = "pendingjob"