Class RunningBuildWrapper

    • Constructor Detail

      • RunningBuildWrapper

        public RunningBuildWrapper​(@NotNull
                                   FinishedBuildEx finishedBuild)
    • Method Detail

      • getCurrentPath

        public String getCurrentPath()
        Description copied from interface: SRunningBuild
        Returns short description of current running step.
        Specified by:
        getCurrentPath in interface SRunningBuild
        Returns:
        short description of current running step.
      • hasTests

        public boolean hasTests()
        Specified by:
        hasTests in interface SBuild
        Returns:
        true if this build has tests (for composite, returns true if at least one dependency has a test)
      • getAgentId

        public int getAgentId()
        Specified by:
        getAgentId in interface SRunningBuild
        Returns:
        id of the agent where this build is running; returns -1 for agent less builds
      • setStartTimes

        public void setStartTimes​(@NotNull
                                  Date agentStartTime,
                                  @NotNull
                                  Date serverStartTime,
                                  @NotNull
                                  TimeZone agentTimeZone)
        Description copied from interface: RunningBuildEx
        Sets timestamps when command to run build was sent to an agent.
        Specified by:
        setStartTimes in interface RunningBuildEx
        Parameters:
        agentStartTime - agent timestamp
        serverStartTime - server timestamp
      • updateBuildIfLastUpdateExpired

        public void updateBuildIfLastUpdateExpired​(int expirationTimeSeconds)
        Description copied from interface: RunningBuildEx
        Performs update of the build data but only if some time has passed since the last update.
        Specified by:
        updateBuildIfLastUpdateExpired in interface RunningBuildEx
        Parameters:
        expirationTimeSeconds - time threshold since the last update in seconds
      • updateBuildInfo

        public boolean updateBuildInfo()
        Description copied from interface: RunningBuildEx
        Loads build interruption and build finish timestamps from database into the build. Returns true if running build exists in DB and false otherwise.
        Specified by:
        updateBuildInfo in interface RunningBuildEx
      • updateBuildStatisticValues

        public void updateBuildStatisticValues()
        Description copied from interface: RunningBuildEx
        Loads statistic values reported for the build from database and sends events on every new loaded value
        Specified by:
        updateBuildStatisticValues in interface RunningBuildEx
      • getQueuedAgentId

        @Deprecated
        @Nullable
        public Integer getQueuedAgentId()
        Deprecated.
        Specified by:
        getQueuedAgentId in interface SRunningBuild
        Returns:
        agent this build was queued on or null if build was not queued on a specific agent
      • getUserDataStorage

        @NotNull
        public UserDataStorage getUserDataStorage()
        Description copied from interface: RunningBuildEx
        Use this object to associate some data with the current instance. Stored data is not persisted and is not copied to another instance of the given object.
        Specified by:
        getUserDataStorage in interface RunningBuildEx
        Returns:
        user data holder
      • getCompletedStages

        @NotNull
        public Map<String,​Long> getCompletedStages()
        Description copied from interface: RunningBuildEx
        Reports target build-type's stages (this build being instance of) that have been already completed by this particular build
        Specified by:
        getCompletedStages in interface RunningBuildEx
        Returns:
        mapping from stage-names to respective durations
      • isFinishReceived

        public boolean isFinishReceived()
        Specified by:
        isFinishReceived in interface RunningBuildEx
        Returns:
        true if build finished was received by the server.
      • publishArtifact

        public void publishArtifact​(@NotNull
                                    String path,
                                    @NotNull
                                    byte[] content)
                             throws IOException
        Description copied from interface: RunningBuildEx
        Adds artifact to the build by the specified path
        Specified by:
        publishArtifact in interface RunningBuildEx
        Parameters:
        path - path where to store artifact
        content - artifact content
        Throws:
        IOException
      • publishArtifact

        public void publishArtifact​(@NotNull
                                    String path,
                                    @NotNull
                                    File srcFile)
                             throws IOException
        Description copied from interface: RunningBuildEx
        Adds artifact to the build by the specified path
        Specified by:
        publishArtifact in interface RunningBuildEx
        Parameters:
        path - path where to store artifact
        srcFile - file containing artifact content; note that after the publishing srcFile can be removed
        Throws:
        IOException
      • publishArtifact

        public void publishArtifact​(@NotNull
                                    String path,
                                    @NotNull
                                    File srcFile,
                                    @Nullable
                                    PublishArtifactProgressListener progressListener)
        Description copied from interface: RunningBuildEx
        Adds artifact to the build from the specified file allowing to trace progress
        Specified by:
        publishArtifact in interface RunningBuildEx
        Parameters:
        path - path where to store artifact
        srcFile - file containing artifact content; note that after the publishing srcFile can be removed
        progressListener - PublishArtifactProgressListener to track progress
      • publishArtifact

        public void publishArtifact​(@NotNull
                                    String path,
                                    @NotNull
                                    InputStream is,
                                    @Nullable
                                    PublishArtifactProgressListener progressListener)
        Description copied from interface: RunningBuildEx
        Adds artifact to the build from the specified stream allowing to trace progress
        Specified by:
        publishArtifact in interface RunningBuildEx
        Parameters:
        path - path where to store artifact
        progressListener - PublishArtifactProgressListener to track progress
      • getBuildCounter

        public long getBuildCounter()
        Specified by:
        getBuildCounter in interface RunningBuildEx
        Returns:
        value of build counter when this build started
      • getProgressText

        @NotNull
        public String getProgressText()
        Specified by:
        getProgressText in interface RunningBuildEx
        Returns:
        current progress text calculated for the build; this text is used in build status line
      • stopNoInterrupt

        public void stopNoInterrupt()
        Description copied from interface: RunningBuildEx
        Stops build on server and on agent without making it interrupted
        Specified by:
        stopNoInterrupt in interface RunningBuildEx
      • getWaitReasons

        @NotNull
        public Map<String,​Long> getWaitReasons()
        Description copied from interface: SBuild
        Returns wait reasons for this build, while it was in the build queue. The key of the map is a wait reason description in human friendly form. The value is amount of milliseconds this wait reason was reported for this queued build.
        Specified by:
        getWaitReasons in interface SBuild
        Returns:
        map of a wait reason to amount of time it was reported for the build in milliseconds
      • isCompositeBuild

        public boolean isCompositeBuild()
        Description copied from interface: SBuild
        Returns true if this build is a composite build.
        Specified by:
        isCompositeBuild in interface SBuild
        Returns:
        see above
      • getHangingDependency

        @Nullable
        public RunningBuildEx getHangingDependency()
        Specified by:
        getHangingDependency in interface RunningBuildEx
        Returns:
        Traverses through running snapshot dependencies of this build and returns the first found one which is probably hanging.
      • closeBuildLog

        public void closeBuildLog()
        Description copied from interface: RunningBuildEx
        Closes the build log's root block, flushes messages and closes the build log
        Specified by:
        closeBuildLog in interface RunningBuildEx
      • detachedFromAgent

        public void detachedFromAgent()
        Description copied from interface: RunningBuildEx
        Should be called when the build has been detached from the agent and agent can start some other build
        Specified by:
        detachedFromAgent in interface RunningBuildEx
      • prepareArtifactDependencies

        public void prepareArtifactDependencies()
        Description copied from interface: RunningBuildEx
        Resolves artifact dependencies by replacing "latest" rules with actual build ids.
        Specified by:
        prepareArtifactDependencies in interface RunningBuildEx
      • isStarting

        public boolean isStarting()
        Description copied from interface: RunningBuildEx
        Returns true if the build is trying to start on an agent and runBuild() command has not finished yet
        Specified by:
        isStarting in interface RunningBuildEx
        Returns:
      • getTemporaryCustomDataStorage

        @NotNull
        public CustomDataStorage getTemporaryCustomDataStorage()
        Specified by:
        getTemporaryCustomDataStorage in interface RunningBuildEx
        Returns:
        a temporary custom data storage which exists only while the build is running and is disposed once the build is finished
      • isInterrupted

        public boolean isInterrupted()
        Description copied from interface: SRunningBuild
        When processing buildFinished event, returns true if build was finished unexpectedly (for instance, killed)
        Specified by:
        isInterrupted in interface SRunningBuild
        Returns:
        true or false
      • getCompletedPercent

        public int getCompletedPercent()
        Specified by:
        getCompletedPercent in interface SRunningBuild
        Returns:
        completed percentage for the build according to build duration estimated time. or -1 if there is no estimate
      • setBuildNumber

        public void setBuildNumber​(@NotNull
                                   String newBuildNumber)
        Description copied from interface: SRunningBuild
        Set new value for this build build number instead of current one. If newBuildNumber has pattern {build.number}, it is replaced with the current build number
        Specified by:
        setBuildNumber in interface SRunningBuild
        Parameters:
        newBuildNumber - new value for this build build number
      • setBuildStatus

        public void setBuildStatus​(Status status)
        Description copied from interface: SRunningBuild
        Set current status of the running build. Useful before build finish to update build status.
        Specified by:
        setBuildStatus in interface SRunningBuild
        Parameters:
        status - new status of the build
      • setInterrupted

        public void setInterrupted​(@NotNull
                                   RunningBuildState state,
                                   @Nullable
                                   User user,
                                   @Nullable
                                   String reason)
        Description copied from interface: SRunningBuild
        Mark this build as interrupted.
        Specified by:
        setInterrupted in interface SRunningBuild
        Parameters:
        state - running build state
        user - user who initiated interruption or null
        reason - reason why interruption initiated or null
      • getAgentAccessCode

        public String getAgentAccessCode()
        Description copied from interface: SRunningBuild
        Returns access code which can be used by agent to access server resources by HTTP.
        Specified by:
        getAgentAccessCode in interface SRunningBuild
        Returns:
        access code
      • isProbablyHanging

        public boolean isProbablyHanging()
        Description copied from interface: SRunningBuild
        Returns true if server thinks this build has hung. The build is considered hung if its estimate is exceeded and there were no messages from this build for some time.
        Specified by:
        isProbablyHanging in interface SRunningBuild
        Returns:
        true if build is probably hanging
      • stop

        public void stop​(@Nullable
                         User user,
                         @Nullable
                         String comment)
        Description copied from interface: SRunningBuild
        Stops the build. If this is a user action, user who performs this action must be specified. If build is stopped without user it will be considered crashed and can be re-added into the queue.
        Specified by:
        stop in interface SRunningBuild
        Parameters:
        user - user who stopped build or null
        comment - comment for the action or null
      • stop

        public void stop​(@NotNull
                         RunningBuildState interruptedState,
                         @Nullable
                         User user,
                         @NotNull
                         String comment,
                         boolean reAdd2Queue)
        Specified by:
        stop in interface RunningBuildEx
        Parameters:
        interruptedState - how to interrupt the build, should have interrupted status
        user - optional user who stops the build
        comment - comment for build interruption
        reAdd2Queue - if true, the build will be re-added to queue with the same build promotion (to the end of the queue)
      • getArtifactsDirectory

        @NotNull
        public File getArtifactsDirectory()
        Description copied from interface: SBuild
        Returns artifacts directory of this build. Artifacts should be locked with help of ArtifactsGuard for the period of their processing.
        Specified by:
        getArtifactsDirectory in interface SBuild
        Returns:
        artifacts directory of this build
      • getArtifacts

        @NotNull
        public BuildArtifacts getArtifacts​(@NotNull
                                           BuildArtifactsViewMode mode)
        Description copied from interface: SBuild
        Returns accessor for build artifacts. This accessor checks all necessary permissions for accessing files.
        Specified by:
        getArtifacts in interface SBuild
        Parameters:
        mode - view mode to see artifacts
        Returns:
        build artifacts viewer
      • getArtifactDependencies

        @NotNull
        public List<SArtifactDependency> getArtifactDependencies()
        Description copied from interface: SBuild
        Returns the artifact dependencies of this build. Same as getBuildPromotion().getArtifactDependencies().
        Specified by:
        getArtifactDependencies in interface SBuild
        Returns:
        artifact dependencies
      • isHasInternalArtifactsOnly

        public boolean isHasInternalArtifactsOnly()
        Description copied from interface: SBuild
        Returns true if this build has only internal (hidden) artifacts.
        Specified by:
        isHasInternalArtifactsOnly in interface SBuild
        Returns:
        true if this build has internal artifacts only
        See Also:
        SBuild.isArtifactsExists()
      • isResponsibleNeeded

        public boolean isResponsibleNeeded()
        Description copied from interface: SBuild
        Always returns false for personal and/or cancelled builds. Returns true if this build is failed (or failing) and there are no finished successful builds after this build. Returns true even if there is active responsible for the build configuration but the configuration status is failed.
        Specified by:
        isResponsibleNeeded in interface SBuild
        Returns:
        see above.
      • skipBuildChainBuilds

        public void skipBuildChainBuilds​(@NotNull
                                         List<String> externalIdsOrTags,
                                         @Nullable
                                         String comment)
        Description copied from interface: RunningBuildEx
        This call looks for builds tagged with 'tags' in all build chains this running build belongs to, and cancels/removes such builds from the queue.
        Specified by:
        skipBuildChainBuilds in interface RunningBuildEx
        Parameters:
        externalIdsOrTags - array of tags for builds which should be skipped in the build chain. A tag could be either a build configuration external ID, or a tag specified via a special tag parameter on a build configuration.
        comment - comment to use when canceling queued builds
      • getOwner

        @Nullable
        public SUser getOwner()
        Description copied from interface: SBuild
        If this build is personal one, returns the owner of this build.
        Specified by:
        getOwner in interface SBuild
        Returns:
        null if this build is not personal otherwise owner of this build
        See Also:
        Build.isPersonal()
      • getTriggeredBy

        @NotNull
        public TriggeredBy getTriggeredBy()
        Description copied from interface: SBuild
        Returns details about how this build was triggered.
        Specified by:
        getTriggeredBy in interface SBuild
        Returns:
        see above
      • getBuildType

        @Nullable
        public SBuildType getBuildType()
        Description copied from interface: SBuild
        Returns build configuration this build belongs to.
        Specified by:
        getBuildType in interface Build
        Specified by:
        getBuildType in interface SBuild
        Returns:
        build configuration descriptor.
      • getDownloadedArtifacts

        @NotNull
        public DownloadedArtifacts getDownloadedArtifacts()
        Description copied from interface: SBuild
        Returns information about artifacts downloaded by this build according to configured artifact dependencies.
        Specified by:
        getDownloadedArtifacts in interface SBuild
        Returns:
        information about downloaded artifacts.
      • getProvidedArtifacts

        @NotNull
        public DownloadedArtifacts getProvidedArtifacts()
        Description copied from interface: SBuild
        Returns information about provided artifacts, i.e. artifacts that were downloaded from this build by other builds by artifact dependencies.
        Specified by:
        getProvidedArtifacts in interface SBuild
        Returns:
        see above
      • isUsedByOtherBuilds

        public boolean isUsedByOtherBuilds()
        Description copied from interface: SBuild
        Returns true if this build is used by other builds, i.e. there are dependencies by sources on this build or artifacts of this build were downloaded by other builds.
        Specified by:
        isUsedByOtherBuilds in interface SBuild
        Returns:
        see above
      • getContainingChanges

        @NotNull
        public List<SVcsModification> getContainingChanges()
        Description copied from interface: Build
        Returns changes in this build. Same as getChanges(SelectPrevBuildPolicy.SINCE_LAST_BUILD, false) Ordering: last detected modifications goes first in the list
        Specified by:
        getContainingChanges in interface Build
        Specified by:
        getContainingChanges in interface SBuild
        Returns:
        changes in this build
      • getChanges

        @NotNull
        public List<SVcsModification> getChanges​(@NotNull
                                                 SelectPrevBuildPolicy policy,
                                                 boolean includeModificationsIfPreviousBuildIsAbsent)
        Description copied from interface: Build
        List of modifications detected in the version control since the previous build (selected according to the specified policy) Ordering: last detected modifications goes first in the list
        Specified by:
        getChanges in interface Build
        Specified by:
        getChanges in interface SBuild
        Parameters:
        policy - can be one of the two kinds:
        includeModificationsIfPreviousBuildIsAbsent - should the method return something if there's no previous build.
        Returns:
        list of modifications
      • isOutOfChangesSequence

        public boolean isOutOfChangesSequence()
        Description copied from interface: SBuild
        Returns true if there is a build started before but having more recent changes then this build. Such situation can occur if this build was associated with a specific change list before adding to queue at the time when more recent changes were available.
        Specified by:
        isOutOfChangesSequence in interface SBuild
        Returns:
        see above
      • getTags

        public List<String> getTags()
        Description copied from interface: SBuild
        Returns list of public tags for this build
        Specified by:
        getTags in interface SBuild
        Returns:
        tags
      • setTags

        public void setTags​(List<String> tags)
        Description copied from interface: SBuild
        Sets public tags for this build
        Specified by:
        setTags in interface SBuild
        Parameters:
        tags - tags to set
      • setTags

        @Deprecated
        public void setTags​(User user,
                            List<String> tags)
        Deprecated.
        Description copied from interface: SBuild
        Sets public tags for this build
        Specified by:
        setTags in interface SBuild
        Parameters:
        user - user who set tags, this user is not treated as tag owner - the user from security context, doesn't correspond to tags owner
        tags - tag labels to set
      • getFileContent

        @NotNull
        public byte[] getFileContent​(String filePath)
                              throws VcsException
        Description copied from interface: SBuild
        Get binary content of the single file related to this build.
        Specified by:
        getFileContent in interface SBuild
        Parameters:
        filePath - - relative file path regarding to the project root, "checkout root" from vcs root should not be included
        Returns:
        - specified file content, corresponding to the build
        Throws:
        VcsException - if some problem occurred while getting file content from the source control repository.
      • getRevisions

        public List<BuildRevision> getRevisions()
        Description copied from interface: SBuild
        List of all revisions which were used for the build instance
        Specified by:
        getRevisions in interface SBuild
        Returns:
        all revisions which were used in this build
      • getLabels

        public List<VcsLabel> getLabels()
        Description copied from interface: SBuild
        VCS labels which were made by TeamCity for the build. If label attempt fails VcsLabel status is FAILED and failureReason contains short description of the problem.
        Specified by:
        getLabels in interface SBuild
        Returns:
        VCS labels which were made by TeamCity for the build
      • getQueuedDate

        @NotNull
        public Date getQueuedDate()
        Description copied from interface: SBuild
        Returns the date when the build was added to queue.
        Specified by:
        getQueuedDate in interface SBuild
        Returns:
        queued time.
      • getServerStartDate

        @NotNull
        public Date getServerStartDate()
        Description copied from interface: SBuild
        Returns the timestamp when the build was removed from the queue.
        Specified by:
        getServerStartDate in interface SBuild
        Returns:
        the timestamp when the build was removed from the queue.
      • getVcsRootEntries

        public List<VcsRootInstanceEntry> getVcsRootEntries()
        Description copied from interface: SBuild
        Returns vcs roots with checkout rules for the build start moment.
        Specified by:
        getVcsRootEntries in interface SBuild
        Returns:
        vcs roots with checkout rules for the build start moment.
      • getClientStartDate

        @Nullable
        public Date getClientStartDate()
        Description copied from interface: SBuild
        Returns the timestamp when the build was started on the build agent (in agent time)
        Specified by:
        getClientStartDate in interface SBuild
        Returns:
        the timestamp when the build was started on the build agent (in agent time)
      • isStartedOnAgent

        public boolean isStartedOnAgent()
        Description copied from interface: SBuild
        Returns true if this build was started on agent.
        Specified by:
        isStartedOnAgent in interface SBuild
        Returns:
        see above
      • convertToServerTime

        @NotNull
        public Date convertToServerTime​(@NotNull
                                        Date agentTime)
        Description copied from interface: SBuild
        Converts agent time to server time by taking into account agent and server time difference.
        Specified by:
        convertToServerTime in interface SBuild
        Parameters:
        agentTime - time on agent
        Returns:
        server time
      • convertToAgentTime

        @NotNull
        public Date convertToAgentTime​(@NotNull
                                       Date serverTime)
        Description copied from interface: SBuild
        Converts server time to agent time by taking into account agent and server time difference.
        Specified by:
        convertToAgentTime in interface SBuild
        Parameters:
        serverTime - server time to convert
        Returns:
        agent time
      • getBuildDescription

        @Nullable
        public String getBuildDescription()
        Description copied from interface: SBuild
        Returns build description set to this build explicitly or null.
        Specified by:
        getBuildDescription in interface SBuild
        Returns:
        see above
      • getBuildComment

        @Nullable
        public Comment getBuildComment()
        Description copied from interface: SBuild
        Returns build comment.
        Specified by:
        getBuildComment in interface SBuild
        Returns:
        build comment, or null if this build is not commented.
      • setBuildComment

        public void setBuildComment​(@Nullable
                                    User user,
                                    @Nullable
                                    String comment)
        Description copied from interface: SBuild
        Sets the comment for the build
        Specified by:
        setBuildComment in interface SBuild
        Parameters:
        user - user who sets the comment
        comment - text of the comment
      • isPinned

        public boolean isPinned()
        Description copied from interface: SBuild
        Returns true if this build is pinned
        Specified by:
        isPinned in interface SBuild
        Returns:
        true if this build is pinned
      • getBuildOwnParameters

        @NotNull
        public Map<String,​String> getBuildOwnParameters()
        Description copied from interface: SBuild
        Returns map of parameters (configuration params, system properties and environment variables) excluding parameters provided by extensions.
        Specified by:
        getBuildOwnParameters in interface SBuild
        Returns:
        see above
      • getRawBuildNumber

        public String getRawBuildNumber()
        Description copied from interface: SBuild
        Returns raw build number (i.e. build number with unresolved parameters if they exist) in contradistinction to Build.getBuildNumber() method which will return build number with all unresolved parameters replaced with ???.
        Specified by:
        getRawBuildNumber in interface SBuild
        Returns:
        raw build number which can contain unresolved parameters
      • isInternalError

        public boolean isInternalError()
        Description copied from interface: SBuild
        Returns whether this build failed because of internal error (infrastructural error not related to build script).
        Specified by:
        isInternalError in interface SBuild
        Returns:
        true iff the build is error
      • getFirstInternalError

        @Nullable
        public String getFirstInternalError()
        Description copied from interface: SBuild
        Returns the first internal error in a build, or null.
        Specified by:
        getFirstInternalError in interface SBuild
        Returns:
        first internal error type
      • getFirstInternalErrorMessage

        @Nullable
        public String getFirstInternalErrorMessage()
        Description copied from interface: SBuild
        Returns the error message associated with the first internal error, or null
        Specified by:
        getFirstInternalErrorMessage in interface SBuild
        Returns:
        first internal error message
      • getClientTimeZone

        @Nullable
        public TimeZone getClientTimeZone()
        Description copied from interface: SBuild
        Returns agent machine time zone if it's available on server.
        Specified by:
        getClientTimeZone in interface SBuild
        Returns:
        Agent time zone or null if the build wasn't started yet.
      • addBuildProblem

        public void addBuildProblem​(@NotNull
                                    BuildProblemData buildProblem)
        Description copied from interface: SBuild
        Adds build problem to the build. Currently build problem causes build failure.
        Specified by:
        addBuildProblem in interface SBuild
      • hasBuildProblemOfType

        public boolean hasBuildProblemOfType​(@NotNull
                                             String type)
        Description copied from interface: SBuild
        Returns true if build has build problem of this type
        Specified by:
        hasBuildProblemOfType in interface SBuild
        Parameters:
        type - build problem type
        Returns:
        see above
        See Also:
        BuildProblemData
      • getFailureReasons

        @NotNull
        public List<BuildProblemData> getFailureReasons()
        Description copied from interface: SBuild
        Returns build problems that caused build failure or empty list if build is successful
        Specified by:
        getFailureReasons in interface SBuild
        Returns:
        see above
      • muteBuildProblems

        public void muteBuildProblems​(@NotNull
                                      SUser user,
                                      boolean muteIfTrue,
                                      @NotNull
                                      String comment)
        Description copied from interface: SBuild
        Makes all existing build problems enabled or disabled
        Specified by:
        muteBuildProblems in interface SBuild
        Parameters:
        user - user that will be used in audit
        muteIfTrue - pass true to make build successful, false to make existing problems visible again
        comment - comment for audit
      • addUserBuildProblem

        public BuildProblemData addUserBuildProblem​(@NotNull
                                                    SUser user,
                                                    @NotNull
                                                    String problemDescription)
        Description copied from interface: SBuild
        Adds user provided build problem to the build. Currently build problem causes build failure. Adding user provided problem always overrides previously added one
        Specified by:
        addUserBuildProblem in interface SBuild
        Parameters:
        user - user that will be used in audit
        Returns:
        added build problem
      • getBranch

        @Nullable
        public Branch getBranch()
        Specified by:
        getBranch in interface SBuild
        Returns:
        branch associated with this build or null.
      • getPreviousFinished

        @Nullable
        public SFinishedBuild getPreviousFinished()
        Specified by:
        getPreviousFinished in interface SBuild
        Returns:
        returns previous finished build (ordered by changes). If this build is personal, this method can return previous personal build, otherwise only regular builds are returned.
      • getStatisticValue

        @Nullable
        public BigDecimal getStatisticValue​(String valueTypeKey)
        Specified by:
        getStatisticValue in interface SBuild
        Parameters:
        valueTypeKey - ValueType key to lookup. Eg TimeSpentInQueue, ArtifactsSize, DuplicatorStats CodeCoverageB, CodeCoverageC or any custom build statistic value reported by service message during the build.
        Returns:
        Value of specified ValueType. Null when specified value wasn't produced during the build (eg no artifacts produced for ArtifactsSize key) or key is invalid.
        See Also:
        ValueProviderRegistry
      • getStatisticValues

        @NotNull
        public Map<String,​BigDecimal> getStatisticValues()
        Specified by:
        getStatisticValues in interface SBuild
        Returns:
        All statistics values associated with this build. Includes all predefined ValueTypes reported for this build and custom metrics reported by service message during the build as well (even when there is no ValueType defined for the metric).
      • getBuildFeaturesOfType

        @NotNull
        public Collection<SBuildFeatureDescriptor> getBuildFeaturesOfType​(@NotNull
                                                                          String featureType)
        Description copied from interface: SBuild
        Returns collection of enabled and resolved build features of specified type from build settings (resolving is performed at the moment of the method call).
        Specified by:
        getBuildFeaturesOfType in interface SBuild
        Parameters:
        featureType - type of the build feature
        Returns:
        see above
      • isOutdated

        public boolean isOutdated()
        Description copied from interface: SBuild
        Returns true if this build is outdated. The build is considered outdated if there is a finished non-personal build which contains newer (or same) changes as contained in this build.
        Specified by:
        isOutdated in interface SBuild
        Returns:
        see above
      • isAgentLessBuild

        public boolean isAgentLessBuild()
        Specified by:
        isAgentLessBuild in interface SBuild
        Returns:
        true if this build does not require an agent (for now this is true for composite builds only)
      • isDetachedFromAgent

        public boolean isDetachedFromAgent()
        Description copied from interface: SBuild
        Returns true if this build was detached from agent at some point.
        Specified by:
        isDetachedFromAgent in interface SBuild
        Returns:
        see above
      • getFinishOnAgentDate

        @Nullable
        public Date getFinishOnAgentDate()
        Description copied from interface: SBuild
        Returns timestamp when the build finished on agent (server time) or null if it is still running on agent.
        Specified by:
        getFinishOnAgentDate in interface SBuild
        Returns:
        see above
      • getCustomDataStorage

        @NotNull
        public CustomDataStorage getCustomDataStorage​(@NotNull
                                                      String key)
        Description copied from interface: SBuild
        Returns a data storage which can be used to associate arbitrary data with the build.
        Specified by:
        getCustomDataStorage in interface SBuild
        Parameters:
        key - a key to access the storage
        Returns:
        an existing or newly created storage for the given key
      • getStartDate

        @NotNull
        public Date getStartDate()
        Description copied from interface: Build
        Returns timestamp when the build start command has been sent to an agent (server-time) or remove from queue time if start command has not been sent
        Specified by:
        getStartDate in interface Build
        Returns:
        see above
      • getAgentName

        public String getAgentName()
        Description copied from interface: Build
        Returns agent name where build is running or happened to run if finished.
        Specified by:
        getAgentName in interface Build
        Returns:
        Agent name where build has been started on
      • getBuildId

        public long getBuildId()
        Description copied from interface: Build
        Returns build id
        Specified by:
        getBuildId in interface Build
        Returns:
        Unique build id
      • getStatusDescriptor

        public StatusDescriptor getStatusDescriptor()
        Description copied from interface: Build
        Returns status descriptor of the build
        Specified by:
        getStatusDescriptor in interface Build
        Returns:
        Descriptor of the current status of the build
      • getLogMessages

        public List<String> getLogMessages​(int startFromIdx,
                                           int maxCount)
        Description copied from interface: Build
        Allows to get messages logged for the build
        Specified by:
        getLogMessages in interface Build
        Parameters:
        startFromIdx - index of the first message to load (zero based)
        maxCount - messages count limit.
        Returns:
        list of plain messages
      • getTestMessages

        public List<TestInfo> getTestMessages​(int startFromIdx,
                                              int maxTestsToLoad)
        Description copied from interface: Build
        Retrieves information about tests failed in the build. Note that for running build currently executing test will be added to the list too.
        Specified by:
        getTestMessages in interface Build
        Parameters:
        startFromIdx - index/order number of the first test to load (zero based)
        maxTestsToLoad - indicates how many tests to load, -1 to load all
        Returns:
        list of plain messages
      • getCompilationErrorMessages

        public List<String> getCompilationErrorMessages()
        Description copied from interface: Build
        Returns compilation error messages of this build
        Specified by:
        getCompilationErrorMessages in interface Build
        Returns:
        list of plain messages
      • getBuildTypeId

        @NotNull
        public String getBuildTypeId()
        Description copied from interface: Build
        Returns build configuration internal id
        Specified by:
        getBuildTypeId in interface Build
        Returns:
        ID of the configuration this build belongs to.
      • getBuildTypeExternalId

        @NotNull
        public String getBuildTypeExternalId()
        Description copied from interface: Build
        Returns the build type external ID.

        If the external identifier does not exist (this might happen for a running build if the build type was deleted, and a new build type with same external id was created), a BuildPromotion#NOT_EXISTING_BUILD_TYPE_ID value is returned.

        Specified by:
        getBuildTypeExternalId in interface Build
        Returns:
        build type external ID
      • getBuildTypeName

        @NotNull
        public String getBuildTypeName()
        Description copied from interface: Build
        Returns name of the build configuration this build belongs to.
        Specified by:
        getBuildTypeName in interface Build
        Returns:
        name of the build configuration this build belongs to.
      • getFullName

        @NotNull
        public String getFullName()
        Specified by:
        getFullName in interface Build
        Returns:
        full name of the build configuration this build belongs to, has form "project_name :: buildconfig_name"
      • getProjectId

        @Nullable
        public String getProjectId()
        Description copied from interface: Build
        Returns internal id of the project this build belongs to. Same as getBuildType().getProjectId().
        Specified by:
        getProjectId in interface Build
        Returns:
        internal id of the project this build belongs to. Same as getBuildType().getProjectId().
      • getProjectExternalId

        @Nullable
        public String getProjectExternalId()
        Description copied from interface: Build
        Returns external id of the project this build belongs to. Same as getBuildType().getProjectId().
        Specified by:
        getProjectExternalId in interface Build
        Returns:
        external id of the project this build belongs to. Same as getBuildType().getProjectId().
      • isPersonal

        public boolean isPersonal()
        Description copied from interface: Build
        Returns if this build has been run to test personal changes
        Specified by:
        isPersonal in interface Build
        Returns:
        true is the build has been started as personal, and its changes were not committed to the VCS
      • getBuildStatus

        public Status getBuildStatus()
        Description copied from interface: Build
        Returns current build status
        Specified by:
        getBuildStatus in interface Build
        Returns:
        Current build status
      • isFinished

        public boolean isFinished()
        Specified by:
        isFinished in interface Build
        Returns:
        true if the build was finished and was saved to the history
      • getBuildNumber

        @NotNull
        public String getBuildNumber()
        Description copied from interface: Build
        Returns build number in the user defined format (unresolved parameters in build number will be replaced with '???').
        Specified by:
        getBuildNumber in interface Build
        Returns:
        presentable build number
      • getFinishDate

        @Nullable
        public Date getFinishDate()
        Description copied from interface: Build
        Returns finish timestamp for the build (server time) or null if it hasn't been finished yet.
        Specified by:
        getFinishDate in interface Build
        Returns:
        Date/time when the build has been finished, null if still running.
      • getCanceledInfo

        public CanceledInfo getCanceledInfo()
        Description copied from interface: Build
        Returns info related to interrupted build. If build is finished, not interrupted, the value is null.
        Specified by:
        getCanceledInfo in interface Build
        Returns:
        info about canceled reason and canceler if build was actually interrupted, null otherwise.
      • getDuration

        public long getDuration()
        Description copied from interface: Build
        Returns current build duration in seconds. The build duration is calculated as follows: - if build has been started on an agent (run command was successfully sent) then duration is calculated as finish time - start on agent time - otherwise duration is calculated as finish time - remove from queue time
        Specified by:
        getDuration in interface Build
        Returns:
        current build duration in seconds
      • getBuildProblems

        @NotNull
        public List<BuildProblem> getBuildProblems()
        Description copied from interface: BuildEx
        Returns all build problems for this promotion with extended information about muting This method can perform rather slow as it reloads build problems from database and fills mute info from audit (reads database as well) If you don't need mute info try using SBuild.getFailureReasons()
        Specified by:
        getBuildProblems in interface BuildEx
        Returns:
        see above
      • deleteBuildProblem

        public void deleteBuildProblem​(@NotNull
                                       SUser user,
                                       @NotNull
                                       String identity,
                                       @Nullable
                                       String comment)
        Description copied from interface: BuildEx
        Deletes build problem Deleting build problem may change build status to SUCCESS
        Specified by:
        deleteBuildProblem in interface BuildEx
        Parameters:
        user - user that will be used in audit
        identity - identiry of build problem to be removed
        comment - comment for audit
      • muteBuildProblems

        public void muteBuildProblems​(boolean muteIfTrue)
        Description copied from interface: BuildEx
        Makes all existing build problems enabled or disabled
        Specified by:
        muteBuildProblems in interface BuildEx
        Parameters:
        muteIfTrue - pass true to make build successful, false to make existing problems visible again
      • buildProblemsChanged

        public void buildProblemsChanged​(@NotNull
                                         List<BuildProblemData> before,
                                         @NotNull
                                         List<BuildProblemData> after)
        Description copied from interface: BuildEx
        Called when build problems are changed (added, deleted or muted)
        Specified by:
        buildProblemsChanged in interface BuildEx
        Parameters:
        before - problems before change
        after - problems after change
      • getCachedShortStatistics

        @Nullable
        public ShortStatistics getCachedShortStatistics​(boolean calculateIfAbsent)
        Description copied from interface: BuildEx
        Return cached short statistics for this build.
        Specified by:
        getCachedShortStatistics in interface BuildEx
        Parameters:
        calculateIfAbsent - if true, then statistics is calculated if it is not cached yet, if false and there is no statistics in cache, then null is returned
        Returns:
        see above
      • isTimedOut

        public boolean isTimedOut()
        Specified by:
        isTimedOut in interface BuildEx
        Returns:
        true if this build finished by timeout
      • getDurationOnAgent

        public long getDurationOnAgent()
        Specified by:
        getDurationOnAgent in interface BuildEx
        Returns:
        build duration in seconds on agent or 0 if the build wasn't running on agent
      • start

        public void start​(boolean async)
        Description copied from interface: RunningBuildEx
        Must be invoked only once when build starts.
        Specified by:
        start in interface RunningBuildEx
      • finish

        public boolean finish()
        Description copied from interface: RunningBuildEx
        The method completes the build finishing procedure and should not be called directly in the majority of cases. Instead SRunningBuild.finish(Date) method should be used to finish the build.
        Specified by:
        finish in interface RunningBuildEx
      • runUnlessFinished

        public boolean runUnlessFinished​(Runnable runnable)
        Description copied from interface: RunningBuildEx
        Executes specified runnable if build is not finished. Build won't finish until runnable completes.
        Specified by:
        runUnlessFinished in interface RunningBuildEx
        Parameters:
        runnable - runnable
        Returns:
        true if runnable was executed
      • createAgentBuild

        @NotNull
        public AgentBuild createAgentBuild()
        Description copied from interface: RunningBuildEx
        Creates structure containing all of the parameters which should be sent to an agent
        Specified by:
        createAgentBuild in interface RunningBuildEx
        Returns:
      • getTestRunMuter

        public TestRunMuter getTestRunMuter()
        Description copied from interface: RunningBuildEx
        Returns a special service that allows to mute test run if neccessary.
        Specified by:
        getTestRunMuter in interface RunningBuildEx
        Returns:
        an instance of the test run muter.
      • getSequenceBuild

        @Nullable
        public SBuild getSequenceBuild()
        Description copied from interface: BuildPromotionOwner
        If associated build promotion has modification id, returns the sequence build which contains the same changes as this build promotion. I.e. returns the first build, which contains all the changes from associated build promotion. If associated build promotion already in changes sequence, returns BuildPromotion.getAssociatedBuild()
        Specified by:
        getSequenceBuild in interface BuildPromotionOwner
        Returns:
        sequence build for the same changes as for associated build promotion, or null if there are no such a build
      • getParametersProvider

        @NotNull
        public ParametersProvider getParametersProvider()
        Description copied from interface: ParametersSupport
        Returns parameters which can be used by value resolver. Note that some of the parameters may not have values defined because sometimes values can be calculated on the agent side only.
        Specified by:
        getParametersProvider in interface ParametersSupport
        Returns:
        parameters
      • occupiesAgent

        public boolean occupiesAgent()
        Specified by:
        occupiesAgent in interface RunningBuildInfo
        Returns:
        true if the build executes on the agent.
      • getDurationEstimate

        public long getDurationEstimate()
        Description copied from interface: RunningBuild
        Returns server estimation for this build duration in seconds.
        Specified by:
        getDurationEstimate in interface RunningBuild
        Returns:
        build duration estimation in seconds or -1 if estimate is not available.
      • getDurationOvertime

        public long getDurationOvertime()
        Description copied from interface: RunningBuild
        Returns how much in seconds this build duration exceeded estimated duration.
        Specified by:
        getDurationOvertime in interface RunningBuild
        Returns:
        how much in seconds this build duration exceeded estimated duration or -1 if estimate is not available.
      • getElapsedTime

        public long getElapsedTime()
        Description copied from interface: RunningBuild
        Returns elapsed time for this build.
        Specified by:
        getElapsedTime in interface RunningBuild
        Returns:
        elapsed time for this build in seconds.
      • setCustomStatusText

        public void setCustomStatusText​(@NotNull
                                        String text)
        Description copied from interface: RunningBuildEx
        Sets the custom build status text.
        Specified by:
        setCustomStatusText in interface RunningBuildEx
        Parameters:
        text - new build status text. Supports "{build.status.text}" placeholder to be substituted with the default text
      • finish

        public void finish​(@NotNull
                           Date finishDate)
        Description copied from interface: SRunningBuild
        Finalizes all build related activities and finishes the build. Build must be finished on agent. Takes no effect for already finished or interrupted builds.
        Specified by:
        finish in interface SRunningBuild
        Parameters:
        finishDate - finish date