Favicon of Concourse

Concourse

Create powerful, container-based CI/CD pipelines using simple YAML. Visualize your entire workflow, get reproducible builds, and debug failures with direct container access.

Concourse is a continuous automation system built on the simple mechanics of resources, tasks, and jobs. This approach provides a versatile way to handle CI/CD and other automation workflows. All pipeline configuration is declared in a single YAML file, which you manage using the fly command-line tool. This means your entire CI/CD setup can be version-controlled right alongside your application code.

One of its standout features is the intuitive web UI that visualizes your entire pipeline. This graph makes it easy to understand dependencies and instantly see where a failure occurred, simplifying the debugging process.

Key benefits include:

  • Reproducible Builds: Every task runs in its own container, guaranteeing a clean, isolated environment for every execution. You have full control over dependencies by specifying the container image for each task.
  • Powerful Debugging: If a build fails, you can use the fly intercept command to get a shell directly inside the build's container, allowing you to troubleshoot the exact environment where the problem occurred.
  • Local Testing: Run builds on your local machine with the fly execute command. This lets you test changes to your pipeline or code without pushing commits, speeding up your development cycle.
  • Extensible by Design: Instead of a complex plugin system, it uses a single abstraction called resources. This makes it simple to integrate with any external tool or service.

Directory Structure

concourse
database
keys
web
worker
.env
docker-compose.yml

docker-compose.yml

services:
  concourse-db:
    image: postgres:15
    environment:
      POSTGRES_DB: concourse
      POSTGRES_USER: concourse
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      PGDATA: /database
    volumes:
      - ./database:/database

  concourse-web:
    image: concourse/concourse
    command: web
    depends_on:
      - concourse-db
    ports:
      - "8080:8080"
    volumes:
      - ./keys/web:/concourse-keys
    environment:
      CONCOURSE_POSTGRES_HOST: concourse-db
      CONCOURSE_POSTGRES_USER: concourse
      CONCOURSE_POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      CONCOURSE_POSTGRES_DATABASE: concourse
      CONCOURSE_ADD_LOCAL_USER: ${CONCOURSE_USER}:${CONCOURSE_PASSWORD}
      CONCOURSE_MAIN_TEAM_LOCAL_USER: ${CONCOURSE_USER}

  concourse-worker:
    image: concourse/concourse
    privileged: true
    command: worker
    stop_signal: SIGUSR2
    depends_on:
      - concourse-web
    environment:
      CONCOURSE_TSA_HOST: concourse-web:2222
    volumes:
      - ./keys/worker:/concourse-keys

.env

POSTGRES_PASSWORD=your_super_secret_db_password
CONCOURSE_USER=admin
CONCOURSE_PASSWORD=your_super_secret_admin_password
Categories:

Share:

Ad
Favicon

 

  
 

Similar to Concourse

Favicon

 

  
  
Favicon

 

  
  
Favicon