All Downloads are FREE. Search and download functionalities are using the official Maven repository.

bs.concord.concord-agent.2.17.0.source-code.concord-agent.conf Maven / Gradle / Ivy

# Concord Agent
#
# Note: most of path parameters accept either absolute paths or a directory
# name. With the latter, the effective path is ${CONCORD_TMP_DIR}/${value}
#
# E.g.
#
#   workDirBase = "workDirs" # means "/tmp/workDirs", created automatically
#
#   dependencyCacheDir = "/data/concord/dependencyCache" # path to an existing directory
#
concord-agent {

    # unique ID of the agent
    # a string value, 36 characters max, typically an UUID
    # generated on start if not specified
    id = ${?AGENT_ID}

    # agent capabilities, JSON object
    capabilities = { }

    # directory to cache dependencies
    dependencyCacheDir = "dependencyCache"

    # directory to store process dependency lists
    dependencyListsDir = "dependencyLists"

    # timeout to resolve process dependencies
    dependencyResolveTimeout = "10 minutes"

    # use repositories from `CONCORD_MAVEN_CFG` file only
    # (allow/ignore repositories from artifact descriptor)
    dependencyStrictRepositories = false

    # artifact exclude patterns
    dependencyExclusions = []

    # explicitly resolve v1 version of the concord HTTP client
    explicitlyResolveV1Client = true

    # resolve Maven artifacts in the offline mode
    mavenOfflineMode = false

    # base directory to store the process payload
    # created automatically if not specified
    payloadDir = "payload"

    # base directory for the process' ${workDir}
    #
    # Use the same value and use absolute paths when running multiple Agents.
    # If the process keeps ${workDir} value as a part of another variable,
    # the value might not longer be valid if the process restarts and
    # gets a new Agent.
    workDirBase = "/tmp/concord-agent/workDirs"

    # directory to store the process logs
    # created automatically if not specified
    logDir = "logs"

    # maximum delay between log chunks
    # determines how ofter the logs are send back to the server
    logMaxDelay = "2 seconds"

    # maximum number of concurrent processes
    workersCount = 3
    workersCount = ${?WORKERS_COUNT}

    # host/ip of the maintenance mode endpoint
    maintenanceModeListenerHost = "localhost"

    # port of the maintenance mode endpoint
    maintenanceModeListenerPort = 8010
    maintenanceModeListenerPort = ${?MM_PORT}

    # interval between new payload requests
    pollInterval = "2 seconds"

    # JVM prefork settings
    prefork {
        # enable/disabled the use of "preforks"
        #
        # When enabled, Agent keeps a copy of the process' JVM as a "spare".
        # If Agent receives another process with the same classpath, JVM and
        # Concord Runtime parameters, the "spare" is used. This can sometimes
        # minimize the cost of JVM startup and classpath scanning.
        #
        # Note, enabling this mechanism can have other side-effects.
        # The effective ${workDir} might exist before the process ID is known
        # (in order to keep a "spare" running there, with all Java dependencies
        # loaded).
        # If any process keeps a copy of ${workDir} value as a part of another
        # variable, the value might get stale, e.g. if the process restarts
        # (or resumes after suspend) and, subsequently, gets a "fresh" workDir.
        #
        # When "false", the process' ${workDir} is always ${workDirBase}/${instanceId}
        enabled = false

        # maximum time to keep a preforked JVM
        maxAge = "30 seconds"

        # maximum number of preforks
        maxCount = 3
    }

    # server connection settings
    server {
        apiBaseUrl = "http://localhost:8001"
        apiBaseUrl = ${?SERVER_API_BASE_URL}

        # comma-separated list or URLs
        websocketUrl = "ws://localhost:8001/websocket"
        websocketUrl = ${?SERVER_WEBSOCKET_URL}

        verifySsl = false

        connectTimeout = "30 seconds"
        readTimeout = "1 minute"

        retryCount = 5
        retryInterval = "30 seconds"

        # User-Agent header to use with API requests
        userAgent = null
        userAgent = ${?USER_AGENT}

        # interval between WS ping requests in case of no other activity
        websocketPingInterval = "10 seconds"
        # maximum period of no activity before reconnect
        websocketMaxNoActivityPeriod = "30 seconds"


        # API key to use
        # Generated on Server first start or defined in server.conf at db.changeLogParameters.defaultAgentToken
        # IMPORTANT! After initialization, create a new token via API and delete initial token
        apiKey = ""

        # maximum time interval without a heartbeat before the process fails
        maxNoHeartbeatInterval = "5 minutes"

        # delay between successful polling attempts
        processRequestDelay = "1 seconds"

        # delay between re-connection attempts if the server is unreachable or unhealthy
        reconnectDelay = "5 seconds"
    }

    docker {
        host = "tcp://127.0.0.1:2375"
        host = ${?DOCKER_HOST}
        
        orphanSweeperEnabled = false
        orphanSweeperPeriod = "15 minutes"

        # list of volumes mounted into the process' containers in addition to the /workspace
        # affects only the plugins, such as `docker` and `ansible`
        extraVolumes = []

        # expose docker daemon to containers started by DockerService
        exposeDockerDaemon = true
    }

    repositoryCache {
        # directory to store the local repo cache
        # created automatically if not specified
        # cacheDir = "/tmp/concord/repos"

        # timeout for checkout operations (ms)
        lockTimeout = "3 minutes"

        # directory to store the local repo cache info
        # created automatically if not specified
        #cacheInfoDir = "/tmp/concord/repos_info"

        # the allowed concurrency level when pulling Git data
        lockCount = 8

        # max cached repo age in ms
        maxAge = "1 day"
    }

    # git clone config
    git {
        # GitHub auth token to use when cloning repositories without explicitly configured authentication
        # oauth = "..."

        # use GIT's shallow clone
        shallowClone = true

        # do not execute fetch if the current HEAD is the latest commit ID
        checkAlreadyFetched = true

        # default timeout duration for any git operation
        defaultOperationTimeout = "10 minutes"

        # fetch timeout duration
        fetchTimeout = "10 minutes"

        # see GIT documentation for GIT_HTTP_LOW_SPEED_LIMIT and GIT_HTTP_LOW_SPEED_TIME
        # use with caution, can cause performance issues
        httpLowSpeedLimit = 0
        httpLowSpeedTime = "10 minutes"

        sshTimeoutRetryCount = 1
        sshTimeout = "10 minutes"
    }

    imports {
        # base git url for imports
        src = ""

        # list of disabled import processors
        # e.g. "dir" is useful for local development, but potentially a security issue
        disabledProcessors = [
            "dir"
        ]
    }

    runner {
        # directory to store process configuration files
        cfgDir = null

        # reserved for the future use
        securityManagerEnabled = false

        # command to use to run the runner JAR
        # '${java.home}/bin/java' by default
        #javaCmd = "java"

        # default JVM parameters
        jvmParams = [
            "-Xmx128m",
            "-XX:+HeapDumpOnOutOfMemoryError",
            "-XX:+ExitOnOutOfMemoryError",
            "-XX:HeapDumpPath=/tmp"
        ]

        # if set, the Agent copies all process files into a persistentWorkDir's subdirectory
        # after the process ends (regardless of the status)
        # should not be used in production environments
        # persistentWorkDir = /path/to/dir

        # if true, agent will forcibly kill any remaining child PIDs (i.e. zombies)
        # of the runner process
        cleanRunnerDescendants = false
    }

    # the default v1 runtime configuration
    runnerV1 = ${runner}
    runnerV1 {
        # path to the runner v1 JAR, must be local to the agent
        path = null
        path = ${?RUNNER_V1_PATH}

        mainClass = "com.walmartlabs.concord.runner.Main"
    }

    # the v2 runtime configuration
    runnerV2 = ${runner}
    runnerV2 {
        # path to the runner v2 JAR, must be local to the agent
        path = null
        path = ${?RUNNER_V2_PATH}

        mainClass = "com.walmartlabs.concord.runtime.v2.runner.Main"
    }

    development {
    }

    production {
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy