private boolean finished()

in aws-codebuild-agent/src/main/java/jetbrains/buildServer/aws/codebuild/CodeBuildRunner.java [275:309]


  private boolean finished(@NotNull final CodeBuildBuildContext c, @NotNull AgentRunningBuild build) {
    final List<Build> builds = AWSCommonParams.withAWSClients(c.params, new AWSCommonParams.WithAWSClients<List<Build>, RuntimeException>() {
      @Nullable
      @Override
      public List<Build> run(@NotNull AWSClients clients) throws RuntimeException {
        return clients.createCodeBuildClient().batchGetBuilds(new BatchGetBuildsRequest().withIds(c.codeBuildBuildId)).getBuilds();
      }
    });

    if (builds == null || builds.isEmpty()) {
      log(build, forContext(c, createTextMessage("No AWS CodeBuild build with id=" + c.codeBuildBuildId + " found", Status.WARNING)));
      return true;
    }

    if (builds.size() > 1) {
      log(build, forContext(c, createTextMessage("Found several AWS CodeBuild builds with id=" + c.codeBuildBuildId + ". Will process the first one.", Status.WARNING)));
    }

    final Build codeBuildBuild = builds.iterator().next();

    reportPhases(codeBuildBuild, c, build);

    if (codeBuildBuild.getBuildComplete()) {
      // import logs in case of failure?
      final String format = getBuildString(c) + " %s " + getBuildLink(c.codeBuildBuildId, c.params.get(AWSCommonParams.REGION_NAME_PARAM));
      final String status = codeBuildBuild.getBuildStatus();
      if (isSucceeded(status)) {
        log(build, (forContext(c, createTextMessage(String.format(format, "succeeded")))));
      } else {
        log(build, (forContext(c, createTextMessage(String.format(format, isFailed(status) ? "failed" : "finished with status " + status), Status.ERROR))));
      }
      return true;
    }
    return false;
  }