Components configuration

When starting an agola instance it will read its config from the configuration file

Since agola is composed of many components that can be distributed you should keep the configuration file in sync between all components

Agola configuration file reference

This is a full commented example (with all the available options):

gateway:
  # The gateway api exposed url to client
  apiExposedURL: "https://youragola.com"
  # The web interface exposed url to client, usually the same as the api
  # exposed url but you can separate the api url from the web url
  webExposedURL: "https://youragola.com"
  # The run service url (use a load balancer when having multiple run services)
  runserviceURL: "http://runservice:4000"
  # The config store url (use a load balancer when having multiple run services)
  configstoreURL: "http://configstore:4002"
  # The agola internal git server url (currently only a single instance is supported)
  gitserverURL: "http://gitserver:4003"

  # web server config
  web:
    listenAddress: ":8000"
    # use TLS (https)
    tls: true
    # TLSCert is the path to the pem formatted server certificate. If the
    # certificate is signed by a certificate authority, the certFile should be
    # the concatenation of the server's certificate, any intermediates, and the
    # CA's certificate.
    #
    tlsCertFile: "/path/to/certfile"

    # Server cert private key
    #
    tlsKeyFile: "/path/to/certkeyfile"

    # CORS allowed origins
    # Enable if the web ui is on a different host:port than the gateway api
    #allowedOrigins: "*"

  # token signing configuration
  tokenSigning:
    # token duration (defaults to 12 hours)
    #duration: 12h

    # hmac or rsa (if possible use rsa)
    method: hmac
    # key to use when signing with hmac
    key: supersecretsigningkey

    # paths to the private and public keys in pem encoding when using rsa signing
    #privateKeyPath: /path/to/privatekey.pem
    #publicKeyPath: /path/to/public.pem

  # admin token, token to use to do super user agola administration
  adminToken: "changeme"

scheduler:
  runserviceURL: "http://runservice:4000"

notification:
  webExposedURL: "https://youragola.com"
  runserviceURL: "http://runservice:4000"
  configstoreURL: "http://configstore:4002"

  # etcd client configuration
  etcd:
    endpoints: "http://youretcd:2379"
    # etc client tls config
    #tlsCertFile
    #tlsKeyFile
    #tlsCAFile
    #tlsSkipVerify

configstore:
  dataDir: /data/agola/configstore

  etcd:
    endpoints: "http://localhost:2379"

  objectStorage:
    # posix based object storage. It requires a shared posix fs like nfs, chepfs etc...
    #
    #type: posix
    #path: /data/agola/configstore/ost

    # s3 based object storage
    type: s3
    # example with minio
    endpoint: "http://yourminio:9000"
    bucket: configstore
    accessKey: minio
    secretAccessKey: minio123

  web:
    listenAddress: ":4002"

runservice:
  #debug: true
  dataDir: /data/agola/runservice
  etcd:
    endpoints: "http://localhost:2379"
  objectStorage:
    # posix based object storage. It requires a shared posix fs like nfs, chepfs etc...
    #
    #type: posix
    #path: /data/agola/configstore/ost

    # s3 based object storage
    type: s3
    # example with minio
    endpoint: "http://yourminio:9000"
    bucket: configstore
    accessKey: minio
    secretAccessKey: minio123

  web:
    listenAddress: ":4000"

executor:
  # local data directory
  dataDir: /data/agola/executor
  # The directory containing the toolbox compiled for the various supported architectures
  toolboxPath: ./bin
  runserviceURL: "http://runservice:4000"
  web:
    listenAddress: ":4001"
  activeTasksLimit: 2
  driver:
    type: docker
  # allow to run privileged containers
  allowPrivilegedContainers: false

gitserver:
  # local data directory
  dataDir: /data/agola/gitserver
  gatewayURL: "https://youragola.com"

  web:
    listenAddress: ":4003"