Giter VIP home page Giter VIP logo

governance's Introduction

Concourse: the continuous thing-doer.

Discord Build Contributors Help Wanted

Concourse is an automation system written in Go. It is most commonly used for CI/CD, and is built to scale to any kind of automation pipeline, from simple to complex.

booklit pipeline

Concourse is very opinionated about a few things: idempotency, immutability, declarative config, stateless workers, and reproducible builds.

The road to Concourse v10

Concourse v10 is the code name for a set of features which, when used in combination, will have a massive impact on Concourse's capabilities as a generic continuous thing-doer. These features, and how they interact, are described in detail in the Core roadmap: towards v10 and Re-inventing resource types blog posts. (These posts are slightly out of date, but they get the idea across.)

Notably, v10 will make Concourse not suck for multi-branch and/or pull-request driven workflows - examples of spatial change, where the set of things to automate grows and shrinks over time.

Because v10 is really an alias for a ton of separate features, there's a lot to keep track of - here's an overview:

Feature RFC Status
set_pipeline step #31 ✔ v5.8.0 (experimental)
Var sources for creds #39 ✔ v5.8.0 (experimental), TODO: #5813
Archiving pipelines #33 ✔ v6.5.0
Instanced pipelines #34 ✔ v7.0.0 (experimental)
Static across step 🚧 #29 ✔ v6.5.0 (experimental)
Dynamic across step 🚧 #29 ✔ v7.4.0 (experimental, not released yet)
Projects 🚧 #32 🙏 RFC needs feedback!
load_var step #27 ✔ v6.0.0 (experimental)
get_var step #27 🚧 #5815 in progress!
Prototypes #37 ⚠ Pending first use of protocol (any of the below)
run step 🚧 #37 ⚠ Pending its own RFC, but feel free to experiment
Resource prototypes #38 🙏 #5870 looking for volunteers!
Var source prototypes 🚧 #6275 planned, may lead to RFC
Notifier prototypes 🚧 #28 ⚠ RFC not ready

The Concourse team at VMware will be working on these features, however in the interest of growing a healthy community of contributors we would really appreciate any volunteers. This roadmap is very easy to parallelize, as it is comprised of many orthogonal features, so the faster we can power through it, the faster we can all benefit. We want these for our own pipelines too! 😆

If you'd like to get involved, hop in Discord or leave a comment on any of the issues linked above so we can coordinate. We're more than happy to help figure things out or pick up any work that you don't feel comfortable doing (e.g. UI, unfamiliar parts, etc.).

Thanks to everyone who has contributed so far, whether in code or in the community, and thanks to everyone for their patience while we figure out how to support such common functionality the "Concoursey way!" 🙏

Installation

Concourse is distributed as a single concourse binary, available on the Releases page.

If you want to just kick the tires, jump ahead to the Quick Start.

In addition to the concourse binary, there are a few other supported formats. Consult their GitHub repos for more information:

Quick Start

$ wget https://concourse-ci.org/docker-compose.yml
$ docker-compose up
Creating docs_concourse-db_1 ... done
Creating docs_concourse_1    ... done

Concourse will be running at 127.0.0.1:8080. You can log in with the username/password as test/test.

⚠️ If you are using an M1 mac: M1 macs are incompatible with the containerd runtime. After downloading the docker-compose file, change CONCOURSE_WORKER_RUNTIME: "containerd" to CONCOURSE_WORKER_RUNTIME: "houdini". This feature is experimental

Next, install fly by downloading it from the web UI and target your local Concourse as the test user:

$ fly -t ci login -c http://127.0.0.1:8080 -u test -p test
logging in to team 'main'

target saved

Configuring a Pipeline

There is no GUI for configuring Concourse. Instead, pipelines are configured as declarative YAML files:

resources:
- name: booklit
  type: git
  source: {uri: "https://github.com/vito/booklit"}

jobs:
- name: unit
  plan:
  - get: booklit
    trigger: true
  - task: test
    file: booklit/ci/test.yml

Most operations are done via the accompanying fly CLI. If you've got Concourse installed, try saving the above example as booklit.yml, target your Concourse instance, and then run:

fly -t ci set-pipeline -p booklit -c booklit.yml

These pipeline files are self-contained, maximizing portability from one Concourse instance to the next.

Learn More

Contributing

Our user base is basically everyone that develops software (and wants it to work).

It's a lot of work, and we need your help! If you're interested, check out our contributing docs.

governance's People

Contributors

alejandra-lara avatar alrs avatar anexper avatar chenbh avatar clarafu avatar connorwidtfeldt avatar cyberox avatar dtimm avatar estebanfs avatar logyball avatar lrstanley avatar markstokan avatar matthewpereira avatar mikroskeem avatar muntac avatar navdeep-pama avatar notrepo05 avatar pd avatar pvaramballypivot avatar ram-pivot avatar rui42 avatar scottietremendous avatar staylor14 avatar steve-sienk avatar syslxg avatar taylorsilva avatar tech-geek29 avatar vito avatar wanderanimrod avatar xtremerui avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

governance's Issues

Transfer oddball repos to internal GitLab

  • https://github.com/concourse/flight-attendant
    • can we just retire this in favor of official pagerduty integration?
      • nope; the 'daily on call announcing' feature hasn't GA'd yet
    • clean up pagerduty setup
      • move 'Concourse Customer Facing' into Concourse team, rename to 'Concourse External'
      • rename 'Concourse Hush House' to 'Concourse Internal'
      • remove 'Concourse Wings' service
      • remove 'Concourse Datadog' service
      • move Scott's escalation from Internal to External
    • fix up email/slack handle detection (old API usage)
    • reinstall app for scope change to take effect
  • https://github.com/concourse/boarding-pass
    • push to gitlab project
    • painstakingly migrate all the issues
    • move the pipeline to Runway
    • bring back the lost commits
      • 14643ffc update release checklist (thanks taylor!)
      • 45c87fec update boarding pass URL (⚰️, but probably easily restored)
      • 196aa75d Merge pull request #15 from concourse/update-deploy-hh (⚰️)
  • https://github.com/concourse/platform-automation-deployments
    • move pipeline from ci.concourse-ci.org to runway

Ability to configure repository deploy keys

Admin permissions are needed for configuring a repo's deploy keys. The governance model only grants maintain permissions, and this is a pretty common need for maintainers, so we'll need a way to do this through Terraform.

We can use the github_repository_deploy_key resource and add a deploy_keys section to the repo config listing public keys to authorize. The importer should also be updated to import these, and all existing deploy keys should be configured in the repo. This would also be a good method of auditing repo access; deploy keys should only be set up through this repo.

Integrate governance model into contributing docs and website

Things to mention:

  • Guidance for why/how to join as a contributor
    • to be able to re-run PR flakes
    • to be able to label your own PR (#35)
    • to be able to help with triaging issues (#35)
  • Guidance for how/when to apply to join each team
    • team-specific criteria?
    • deciding against this; i don't think we necessarily need to encourage everyone to join a team, it's probably better for each team to determine its own criteria and process

Automatically apply changes

  • run terraform apply
  • run go test to verify the integrity of the state in GitHub

Will need to securely configure a GitHub token with effectively org admin permissions.

Though there is an obvious temptation to use Concourse for this, it's probably worth considering GitHub Actions just to keep the scope of this narrow.

Run tests in GitHub actions

There's already a test suite; just need to run it in Actions. The suite tests not only that the desired state matches the actual state, but that insidious things like outside/individual collaborators haven't been configured on any repos. The suite doesn't run yet because there's some cleanup to be done before it will pass.

Automate Discord configuration

  • teams map to roles in Discord
  • all contributors are granted 'contributors' role

The aequasi/discord provider seems the best one (it has docs).

This will likely involve creating a Discord Application, Bot, and Team which should probably have the @concourse/infrastructure team as members (admins).

Set up a Security team and email forwarding for security issues

Currently security issue reports are sent to [email protected], an address accessed exclusively by VMware team members. This email address is also used for various VMware-controlled accounts, so it's a bit of a mess. We should make this more neutral, and probably get a more trustworthy-looking address.

Set up a Community team-controlled email address for Code of Conduct reports

It currently says to send reports to [email protected], which isn't great.

Open up maintainers team to non-VMware employees

Because we ship Concourse directly to VMware customers, we have to set up some internal infrastructure to make sure what we ship comes from something VMware controls.

This can be done by setting up an internal mirror that we sync to every time we ship Concourse. We can then develop internal pipelines to build from this repo instead.

  • Set up a repo in the internal VMware GitLab
  • Configure a pipeline that pushes every tagged release from master on the Concourse repo to master in the mirror
  • Figure out how to do the same for every release branch (can we just use the Mirroring feature in GitLab?)
    • commercial release docs in boarding pass now mention this
  • Figure out how to ship to VMware customers (might be no change, but maybe we also need to mirror more things, or build from these sources, or ...)
  • Remove comment from maintainers.yml

Grant triage permission to all contributors

The Δ:

image

I think we can trust contributors to use these powers for good. 🙂 It'll also be nice for making the concourse/validate-labels check pass, since you can add the required labels to your own PR.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.