Provides a Concourse resource for Github Organizations. Used to create pipelines for org repos when deploying a webapp on the Analytical Platform
These parameters go into the source
fields of the resource type. Bold items are required:
Parameter | Description |
---|---|
access_token |
Github access token |
name |
Name of the Github organization |
concourse_url |
Base URL of the Concourse API, eg: https://concourse.example.com |
username |
Concourse basic auth username |
password |
Concourse basic auth password |
team_name |
Concourse team name |
cookie-secret |
Secret used to encrypt deployed webapp session cookies |
cluster-ca |
Base64 encoded PEM |
token |
Bearer token for Kubernetes |
skip_ssl_verification |
Whether curl should verify SSL certificates. (Default false ) |
A version corresponds to the timestamp of the last push to any of the org's repositories.
Retrieves the
Organization JSON object
into the org
file and a list of
repositories in the repos
file.
Creates pipelines for any repo for which their does not already exist a pipeline
with the same name, and which contains a Jenkinsfile
(for now).
This resource is not included with Concourse CI. You must integrate this resource in the resource_types
section of your pipeline.
resource_types:
- name: github-org
type: docker-image
source:
repository: quay.io.mojanalytics/github-org-resource
tag: v0.1.3
resources:
- name: moj-analytical-services
type: github-org
source:
name: moj-analytical-services
access_token: ((github-access-token))
concourse_url: ((concourse-url))
username: ((concourse-username))
password: ((concourse-password))
team_name: ((concourse-team-name))
cookie-secret: ((cookie-secret))
cluster-ca: ((cluster-ca))
token: ((token))
jobs:
- name: deploy
plan:
- get: moj-analytical-services
trigger: true
Changing this resource is not enough to release it. A new release tag needs to be created and Concourse needs to be instructed to use it.
Here are the steps:
- Create a GitHub release
- Update the config (
concourse-org-pipeline.yaml
) to use this new version (example PR here) - Upgrade the helm release for the
concourse-org-pipeline
helm chart (see "Installing the Chart" section of README)
Once this above is done, newly created pipelines will use the new version of the pipeline templates.
NOTE: Existing pipelines are not affected.
Generally manually delete a concourse pipeline (using
fly destroy-pipeline
) is safe as Concourse will
automatically re-create a pipeline, and use the
latest stable version of it.
If the pipeline change is just in one of the custom
resource types' version (e.g. ecr-repo
, pull-request
,
auth0-client
, helm
, kubernetes
, etc...) there is
now a way to set the version of a resource on all
existing pipelines:
Here an example of how to invoke this script:
$ ./update-pipelines-resource-types.py --help
Usage: update-pipelines-resource-types.py [OPTIONS]
Options:
-b, --fly-binary-path TEXT path to the fly binary (the Concourse cli)
-c, --concourse-url TEXT URL of Concourse
-t, --fly-target TEXT Concourse's fly target name
-n, --concourse-team-name TEXT Concourse team where the pipelines to update
are
-r, --resource-name TEXT Name of the custom resource to update. Note
this is the name used in the pipelines (e.g.
'auth0-client') [required]
-v, --resource-tag TEXT New version/tag of the resource [required]
-d, --dry-run When true, will not update the upstream
Concourse pipeline
-i, --interactive Run fly set-pipeline interactively
--help Show this message and exit.
Let's say for example that you want to update all the
pipelines to use concourse-auth0-resource
v2.0.2
.
First you need to find out what this resource is called
in the pipeline, in this case if you check the webapp
pipeline definition, in the resource_types
section
you'll see that this resource is instantiated with the
name auth0-client
, this will be the value you'll pass
for the resource-name
argument of the script.
This is the command you'd invoke (remove --dry-run
when
you want the script to update the upstream Concourse
pipelines):
$ ./update-pipelines-resource-types.py --resource-name=auth0-client --resource-tag=v2.0.2 --dry-run
Fly binary path [/usr/local/bin/fly]:
Concourse url [https://concourse.services.dev.mojanalytics.xyz]:
Fly target [dev-main]:
Concourse team name [main]:
logging in to team 'main'
1: ap-main
2: Basic Auth
choose an auth method: 1
navigate to the following URL in your browser:
https://concourse.services.dev.mojanalytics.xyz/auth/oauth?team_name=main&fly_local_port=59103
or enter token manually: target saved
[####--------------------------------] 12% 00:01:27
NOTE: script requires Concourse's command line tool
fly
. Also be sure you install its dependency by
running pip install -r requirements.dev.txt
to be sure
its Python dependencies are satisfied.
- Fork it!
- Create your feature branch:
git checkout -b feature/new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin feature/new-feature
- Submit a pull request.