{"id":31904146,"url":"https://github.com/cloudfoundry-community/pipeline-templates","last_synced_at":"2025-10-13T13:47:41.611Z","repository":{"id":46182425,"uuid":"53165069","full_name":"cloudfoundry-community/pipeline-templates","owner":"cloudfoundry-community","description":"Generalized pipeline templates for various objectives, and a repipe script for compiling them.","archived":false,"fork":false,"pushed_at":"2024-12-04T21:49:49.000Z","size":1357,"stargazers_count":75,"open_issues_count":1,"forks_count":26,"subscribers_count":26,"default_branch":"master","last_synced_at":"2024-12-31T02:15:28.557Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"jamesgoodhouse/pipeline-templates","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudfoundry-community.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-03-04T20:58:16.000Z","updated_at":"2024-12-30T22:22:31.000Z","dependencies_parsed_at":"2024-05-30T13:01:28.284Z","dependency_job_id":"65881c24-0744-4916-aef5-4104b972be28","html_url":"https://github.com/cloudfoundry-community/pipeline-templates","commit_stats":null,"previous_names":["cloudfoundry-community/pipeline-templates","qarik-group/pipeline-templates"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/cloudfoundry-community/pipeline-templates","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudfoundry-community%2Fpipeline-templates","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudfoundry-community%2Fpipeline-templates/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudfoundry-community%2Fpipeline-templates/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudfoundry-community%2Fpipeline-templates/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudfoundry-community","download_url":"https://codeload.github.com/cloudfoundry-community/pipeline-templates/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudfoundry-community%2Fpipeline-templates/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279015339,"owners_count":26085685,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-13T13:47:36.681Z","updated_at":"2025-10-13T13:47:41.605Z","avatar_url":"https://github.com/cloudfoundry-community.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"Pipeline Templates\n==================\n\nThis repository collects up all that tribal wisdom we've gained\nfrom building Concourse Pipelines for various different purposes.\nEach template provides a base `ci/pipeline.yml` that structures the\npipeline, `ci/settings.yml` to override any parameters defined by the template, a set of scripts (in `ci/scripts/`) that are referenced\nfrom the pipeline, and a `ci/repipe` utility for putting all the\npieces together into a functioning Concourse pipeline.\n\nThis project was initially created by Stark \u0026 Wayne, and is now maintained by\nGstack.\n\n## Setup\n\nSetup is straightforward:\n\n```shell\ngit clone https://github.com/cloudfoundry-community/pipeline-templates\ncd pipeline-templates\n./setup \u003ctemplate\u003e ~/bosh/my-new-boshrelease\n```\n\nAlternatively, you can initialize the pipeline from inside the\ntarget repository:\n\n```shell\ncd code/my-buildpack\n~/code/pipeline-templates/setup \u003ctemplate\u003e\n```\n\nThe first argument to `setup` is the template you want to use. Currently available templates:\n\n* `bash`\n* `boshrelease`\n* `genesis-kit`\n* `buildpack`\n* `cfpush`\n* `docker/base`\n* `docker/ext-tests`\n* `go`\n* `helm`\n\nDon't let the name fool you!  `./setup` can also be used to update\nan existing templated pipeline `ci/` directory to pick up new\nchanges made to the templates.\n\nOnce you've set up your repository, you'll need to fill in your\n`ci/settings.yml` file with any parameters the template required:\n\n```shell\ncd code/my-project\nci/repipe # Attempt to update the pipeline config,\n          # spitting out errors for missing parameters\nvi ci/settings.yml # fill in the missing parameters\nci/repipe # Deploy the pipeline config!\n```\n\n### Dependencies\n\nThe `ci/repipe` script uses [Spruce](https://github.com/geofffranks/spruce) to merge `ci/pipeline.yml` and your bespoke `ci/settings.yml`.\n\nOn MacOS/Homebrew:\n\n```shell\nbrew install cloudfoundry-community/cf/spruce\n```\n\nOn Debian/Ubuntu:\n\n```shell\nwget -q -O - https://raw.githubusercontent.com/cloudfoundry-community/homebrew-cf/master/public.key | apt-key add -\necho \"deb http://apt.community.cloudfoundry.org stable main\" | tee /etc/apt/sources.list.d/cf-community.list\napt-get update\n\napt-get install spruce\n```\n\nThe `ci/repipe` for genesis-kits also requires `jq`, which can be installed via\nbrew on MacOS or apt-get on Debian/Ubuntu.\n\n## And Now, The Templates!\n\n### docker/base and docker/ext-tests\n\nFor building Docker images, with tests.  This template comes in\ntwo flavors: `docker/base` (where the unit tests are inside the\nDocker image) and `docker/ext-tests`, where the tests live outside\nof the image.\n\n![Docker Pipeline][docker-pipeline]\n\n### go\n\nTakes a Go software project repository, runs unit tests and\n(when the manual `shipit` job is run) releases to Github.\n\n![Go Project Pipeline][go-pipeline]\n\n### boshrelease\n\nTries to create a BOSH release from the repository, upload it to a\nhosted BOSH-lite for viability testing, and (when the manual\n`shipit` job is run) releasing it to Github with a tarball\nartifact, and also uploading that release tarball to S3.\n\n![BOSH Release Pipeline][boshrelease-pipeline]\n\nSee also the detailed [pipeline documentation](boshrelease/README.md) for more\ndetails.\n\n### genesis-kit\n\nBuilds a pipeline to create a pipeline that builds a release candidate, runs\nit through [spec tests](https://github.com/genesis-community/testkit) and\nspec-check, then any deployment, upgrad and acceptance tests.  Passing those,\nit prepares the release notes based on commit messages, and then can be\nmanually released.  It also includes a manual prerelease after the initial RC\nis built.\n\nThere is also provision for pulling upstream dependencies and bumping semantic\nversion components.\n\nRead the README.md file under genesis-kit for customization options.  As\nwritten, it is based on the cf-genesis-kit.\n\n![Genesis Kit Pipeline][genesis-kit-pipeline]\n\n### buildpack\n\nRuns unit and integration tests on a Cloud Foundry buildpack, and can release it to Github.\n\n![Buildpack Pipeline][buildpack-pipeline]\n\n### helm\n\nBuilds a docker image and uploads Helm chart to an S3 bucket\n\n![Helm][helm-pipeline]\n\n## ci/settings.yml\n\nYou will need to customize your pipeline with information about your CI, your Amazon AWS credentials + S3 bucket for storing assets + `version` file, your Slack account, etc.\n\nYou will create and maintain `ci/settings.yml` for this.\n\nTry very very hard to not modify `ci/pipeline.yml`. Instead, use `./setup` to update `ci/pipeline.yml` with new changes from this repo. If you do need to modify `ci/pipeline.yml` please feel welcome to submit PRs to this repo so that we can merge them and share them with everyone.\n\nFor those who use Vault to store their credentials, the spruce syntax\n`(( vault \"path1\" ))` can fetch the secret values during `ci/repipe`. Using\nthis feature is not recommended though, because the secrets will leak as\nclear-text in the Concourse (Postgres) database. Since Concourse CI has native\nsupport for Vault, everyone should use that so that secrets are fetched\njust-in-time, and have lower risk of leaking.\n\nHere is an example [`ci/settings.yml`](https://github.com/starkandwayne/eden/blob/master/ci/settings.yml) from the `eden` CLI project (uses the `go` template):\n\n```yaml\n---\nmeta:\n  name: eden\n  target: sw\n  url:     https://ci.starkandwayne.com\n\n  initial_version: 0.5.0\n\n  go:\n    binary: eden\n    cmd_module: .\n\n  aws:\n    access_key: (( vault \"secret/aws/starkandwayne-s3:access\" ))\n    secret_key: (( vault \"secret/aws/starkandwayne-s3:secret\" ))\n    region_name: eu-central-1\n\n  slack:\n    webhook: (( vault \"secret/pipelines/eden/slack:webhook\" ))\n    channel: \"#eden\" # https://openservicebrokerapi.slack.com/messages/C6Y5A2N8Z/\n    username: starkandwayne-ci\n    icon:     https://www.starkandwayne.com/assets/images/shield-blue-50x50.png\n\n  github:\n    owner: starkandwayne\n    repo: eden\n    access_token: (( vault \"secret/pipelines/shared/github:access_token\" ))\n    private_key: (( vault  \"secret/pipelines/shared/github:private_key\" ))\n```\n\nBonus, we use https://github.com/starkandwayne/safe as our CLI to interact with Vault.\n\nFor example, to populate the `(( vault \"secret/pipelines/eden/slack:webhook\" ))` value in Vault:\n\n```\nsafe set secret/pipelines/eden/slack webhook=https://hooks.slack.com/services/T2S1X7xxx/B6Y5A7xx/0nP7jxxx\n```\n\n[docker-pipeline]:      https://raw.githubusercontent.com/cloudfoundry-community/pipeline-templates/master/screenshots/docker.png\n[boshrelease-pipeline]: https://raw.githubusercontent.com/cloudfoundry-community/pipeline-templates/master/screenshots/boshrelease.png\n[genesis-kit-pipeline]: https://raw.githubusercontent.com/cloudfoundry-community/pipeline-templates/master/screenshots/genesis-kit.png\n[go-pipeline]:          https://raw.githubusercontent.com/cloudfoundry-community/pipeline-templates/master/screenshots/go.png\n[buildpack-pipeline]:   https://raw.githubusercontent.com/cloudfoundry-community/pipeline-templates/master/screenshots/buildpack.png\n[helm-pipeline]:        https://raw.githubusercontent.com/cloudfoundry-community/pipeline-templates/master/screenshots/helm.png\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudfoundry-community%2Fpipeline-templates","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudfoundry-community%2Fpipeline-templates","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudfoundry-community%2Fpipeline-templates/lists"}