Skip to content

Commit

Permalink
Pipeline Docker Builds / Promotion
Browse files Browse the repository at this point in the history
  • Loading branch information
jhunt committed Feb 7, 2016
1 parent 104919a commit a4cc241
Show file tree
Hide file tree
Showing 6 changed files with 207 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/ci/credentials.yml
/ci/.*.yml
29 changes: 29 additions & 0 deletions ci/pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
meta:
dockerhub:
account: starkandwayne
email: (( param "Please provide an email address for pushing to Dockerhub" ))
username: (( param "Please provide a username for pushing to Dockerhub" ))
password: (( param "Please provide a password for pushing to Dockerhub" ))

github:
key: (( param "Please provide a private key for the dockerfiles repository" ))

resources:
dockerfiles:
type: git
source:
uri: git@github.com:starkandwayne/dockerfiles
branch: master
private_key: (( grab meta.github.key ))

dockerhub:
type: docker-image
source:
email: (( grab meta.dockerhub.email ))
username: (( grab meta.dockerhub.username ))
password: (( grab meta.dockerhub.password ))

groups:
- name: concourse
- name: concourse-go
37 changes: 37 additions & 0 deletions ci/repipe
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/bash
if [[ -z ${1} ]]; then
echo >&2 "USAGE: $0 concourse-target"
exit 1
fi
concourse=${1}

set -eu
root=$(cd $(dirname $BASH_SOURCE[0])/..; pwd)

if [[ -z $(command -v spruce 2>/dev/null) ]]; then
echo >&2 "spruce is missing! Please install spruce from https://github.com/geofffranks/spruce"
exit 1
fi

if [[ ! -f ${root}/ci/credentials.yml ]]; then
echo >&2 "Looks like you are missing a ci/credentials.yml file in ${root} ..."
exit 1
fi

ifpresent() {
for file in "$@"; do
[ -f ${file} ] && echo ${file}
done
}

(cd ${root}/ci && \
spruce merge \
$(ifpresent pipeline.yml ../*/*/pipeline.yml) \
credentials.yml \
> .full.yml) || exit 2
(cd ${root}/ci && \
spruce merge --prune meta .full.yml \
> .live.yml) || exit 2

set -x
fly set-pipeline -p docker-images -c ${root}/ci/.live.yml -t ${concourse}
44 changes: 44 additions & 0 deletions concourse-go/1.4/pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
groups:
- name: concourse-go
jobs:
- 'build concourse-go:1.4'
- 'promote concourse-go:1.4'

resources:
- name: 'concourse-go:1.4 @github'
.: (( inject meta.resources.dockerfiles ))
source:
paths:
- concourse-go/1.4/Dockerfile
- name: 'concourse-go:1.4-rc @dockerhub'
.: (( inject meta.resources.dockerhub ))
source:
repository: (( concat meta.dockerhub.account "/concourse-go" ))
tag: 1.4-rc
- name: 'concourse-go:1.4 @dockerhub'
.: (( inject meta.resources.dockerhub ))
source:
repository: (( concat meta.dockerhub.account "/concourse-go" ))
tag: 1.4

jobs:
- name: 'build concourse-go:1.4'
public: true
plan:
- aggregate:
- { get: git, resource: 'concourse-go:1.4 @github', trigger: true }
- { get: img, resource: 'concourse:latest @dockerhub', trigger: true }
- put: 'concourse-go:1.4-rc @dockerhub'
params: { build: git/concourse-go/1.4 }
- name: 'promote concourse-go:1.4'
public: true
plan:
- get: rc
resource: 'concourse-go:1.4-rc @dockerhub'
passed: ['build concourse-go:1.4']
- put: 'concourse-go:1.4 @dockerhub'
params:
load_base: rc
load_file: rc/image
load_repository: (( concat meta.dockerhub.account "/concourse-go" ))
load_tag: 1.4-rc
46 changes: 46 additions & 0 deletions concourse-go/1.5/pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
groups:
- name: concourse-go
jobs:
- (( append ))
- 'build concourse-go:1.5'
- 'promote concourse-go:1.5'

resources:
- name: 'concourse-go:1.5 @github'
.: (( inject meta.resources.dockerfiles ))
source:
paths:
- concourse-go/1.5/Dockerfile
- name: 'concourse-go:1.5-rc @dockerhub'
.: (( inject meta.resources.dockerhub ))
source:
repository: (( concat meta.dockerhub.account "/concourse-go" ))
tag: 1.5-rc
- name: 'concourse-go:1.5 @dockerhub'
.: (( inject meta.resources.dockerhub ))
source:
repository: (( concat meta.dockerhub.account "/concourse-go" ))
tag: 1.5

jobs:
- name: 'build concourse-go:1.5'
public: true
plan:
- aggregate:
- { get: git, resource: 'concourse-go:1.5 @github', trigger: true }
- { get: img, resource: 'concourse:latest @dockerhub', trigger: true }
- put: 'concourse-go:1.5-rc @dockerhub'
params: { build: git/concourse-go/1.5 }
- name: 'promote concourse-go:1.5'
public: true
plan:
- get: rc
resource: 'concourse-go:1.5-rc @dockerhub'
passed: ['build concourse-go:1.5']
- put: 'concourse-go:1.5 @dockerhub'
params:
load_base: rc
load_file: rc/image
load_repository: (( concat meta.dockerhub.account "/concourse-go" ))
load_tag: 1.5-rc
49 changes: 49 additions & 0 deletions concourse/latest/pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
groups:
- name: concourse
jobs:
- (( append ))
- 'build concourse:latest'
- 'promote concourse:latest'

resources:
- name: 'concourse:latest @github'
.: (( inject meta.resources.dockerfiles ))
source:
paths:
- concourse/latest/Dockerfile
- concourse/latest/scripts/*

- name: 'concourse:latest-rc @dockerhub'
.: (( inject meta.resources.dockerhub ))
source:
repository: (( concat meta.dockerhub.account "/concourse" ))
tag: latest-rc
- name: 'concourse:latest @dockerhub'
.: (( inject meta.resources.dockerhub ))
source:
repository: (( concat meta.dockerhub.account "/concourse" ))
tag: latest

jobs:
- name: 'build concourse:latest'
public: true
plan:
- get: git
resource: 'concourse:latest @github'
trigger: true
- put: 'concourse:latest-rc @dockerhub'
params:
build: git/concourse/latest
- name: 'promote concourse:latest'
public: true
plan:
- get: rc
resource: 'concourse:latest-rc @dockerhub'
passed: ['build concourse:latest']
- put: 'concourse:latest @dockerhub'
params:
load_base: rc
load_file: rc/image
load_repository: (( concat meta.dockerhub.account "/concourse" ))
load_tag: latest-rc

0 comments on commit a4cc241

Please sign in to comment.