conductor.example.yaml (3923B)
1 # conductor.example.yaml - server configuration 2 # 3 # Copy to conductor.yaml and edit. Every value here is a default, so an empty 4 # file is a valid configuration: sqlite on disk, local object storage and 5 # built-in user accounts. 6 # 7 # Any value can also be set from the environment, which takes precedence over 8 # this file. See ENV_MAP in src/lib/config.js for the full list. 9 # 10 # Relative paths resolve against the directory holding this file. 11 12 server: 13 host: 0.0.0.0 14 port: 8080 15 # Absolute URL this conductor is reachable at. Workers are handed callback 16 # URLs derived from it, so it must be correct behind a reverse proxy. 17 public_url: http://127.0.0.1:8080 18 19 database: 20 # Leave url unset for sqlite. Otherwise the scheme picks the dialect: 21 # mysql://user:pass@host:3306/conductor 22 # postgres://user:pass@host:5432/conductor 23 # The matching driver package must be installed: mysql2 or pg. 24 url: null 25 path: ./data/conductor.db 26 connection_limit: 10 27 28 storage: 29 # Used when no s3 bucket is configured below. 30 path: ./data/storage 31 # Setting a bucket switches artifacts and finished logs to object storage. 32 # endpoint, bucket, access_key_id and secret_access_key are all required 33 # together. Garage and MinIO need force_path_style; AWS S3 does not. 34 s3: 35 endpoint: null 36 region: us-east-1 37 bucket: null 38 access_key_id: null 39 secret_access_key: null 40 force_path_style: true 41 42 auth: 43 # Signs built-in session tokens. Generated per boot when unset, which logs 44 # everyone out on restart, so set it in production. 45 session_secret: null 46 session_ttl: 43200 47 # Setting a discovery url switches authentication to OIDC. Built-in 48 # accounts are used when it is unset. Everything else about the provider, 49 # including its issuer and every endpoint, is read from this document. 50 oidc: 51 discovery_url: null 52 # The client this conductor is registered as. The redirect uri to 53 # register is <server.public_url>/oidc/callback. 54 client_id: null 55 # Only for a confidential client; leave unset for a public one. 56 client_secret: null 57 scopes: openid profile email 58 admin_role: conductor-admin 59 # Created on first boot, only while the users table is empty, and only 60 # without OIDC. With no password set, one is generated and logged once. 61 bootstrap_admin: 62 username: admin 63 password: null 64 65 secrets: 66 # 32 bytes as 64 hex characters or base64, for example: 67 # openssl rand -hex 32 68 # Without it, project variables and trigger secrets are stored in the clear 69 # and marked as such, so they can be re-sealed later. 70 encryption_key: null 71 72 git: 73 mirror_path: ./data/mirrors 74 fetch_interval: 60 75 timeout: 300 76 77 log: 78 spool_path: ./data/logs 79 max_size: 67108864 80 81 # How long build output is kept. A project may override any of these from 82 # its settings page; zero means keep forever. 83 # 84 # Artifacts follow two rules and survive if either wants them: the last 85 # artifact_keep_jobs jobs are kept whatever their age, and anything younger 86 # than artifact_keep_days is kept however many jobs have followed. The most 87 # recent successful job is always kept, so a project that has gone quiet 88 # still has something to download. A task that sets artifacts.expire in the 89 # pipeline overrides all of it with an exact deadline. 90 # 91 # Logs go by age alone. They are the reason this exists: written for every 92 # task, read for almost none, and otherwise never removed. 93 retention: 94 artifact_keep_jobs: 10 95 artifact_keep_days: 30 96 log_keep_days: 14 97 # Seconds between sweeps, and how much one sweep will delete, so a first 98 # pass over a long backlog cannot monopolise the database or the bucket. 99 sweep_interval: 3600 100 batch: 500 101 102 scheduler: 103 # A claimed task whose worker stops reporting for this long is treated as 104 # lost, then retried or failed. Must exceed reap_interval. 105 heartbeat_timeout: 120 106 reap_interval: 30 107 default_task_timeout: 3600 108 max_attempts: 3