gitpod-io / gitpod-io/gitpod

Support for parameterised configurations in `.gitpod.yml`

Open
#8,252 3 comments 5 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement feature: gitpod yml feature: mono/meta repo feature: prebuilds meta: never-stale
Dominant language
TypeScript
Stars
13.8k
Forks
1.4k
Avg merge
17h 58m
Merged PRs (30d)
5

Description

Current Approach

Currently, the way that gitpod works is via one single declarative syntax for a project set up, but, this approach doesn't work well for scenarios where you have (potentially) many different permutations of a given project or setup (e.g. mono-repo's or more advanced projects). Currently, the best way of doing this is via URL parameters or via environment variables that alter the project configuration, in combination with custom scripts and/or a makefile.

Proposal

Allow a given project to specify a number of input parameters (type definitions and optionality) for a project configuration. This feature would then allow the creation of any number of different permutations of a given project (e.g. a matrix), and a project or workspace. Each permutation of the matrix is then treated as it's own "project" configuration e.g. it has it's own pre-build and allows custom start tasks to be configured. A good real example of this is the DrupalPod project, which uses a Chrome extension to specify input parameters, that are passed via URL, and then consumed in scripts to create different set-ups of the project.

Examples

Example of this within DrupalPod, which uses a browser extension form [1].

Similar feature in other products

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the proposed .gitpod.yml configuration model and the linked DrupalPod and matrix examples. Identify the configuration, workspace, pre-build, and start-task entry points before defining the scope. Done means parameter types and optionality can produce distinct project configurations with their own pre-builds and start tasks, backed by tests for the supported permutations.

Written by the indexing model from the issue text.

Assessment

Tech stack
yaml
Domain
developer-experience
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.