Created
May 25, 2016 14:11
-
-
Save mweagle/24581524a2fac2df25e71fecc1cd3c5d to your computer and use it in GitHub Desktop.
Concourse CI pipeline for http://gosparta.io application build
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
################################################################################ | |
# REFERENCES | |
# ConcourseCI Docs: https://concourse.ci | |
# Concourse tutorial: https://github.com/starkandwayne/concourse-tutorial | |
# | |
# NOTES | |
# This file is a self-contained description of a Concourse CI pipeline | |
# to deploy a http://gosparta.io application. There's a couple of things to | |
# note: | |
# - The YAML uses node references so that scripts can be defined in the | |
# CONSTANTS key and referenced in the jobs section | |
# - This requires an additional YML file that defines AWS credentials and the | |
# S3 bucket that should be used for storage. Required keys: | |
# s3-bucket: XXXXXX | |
# s3-access-key-id: XXXXXXXXXXXXXXXXXX | |
# s3-secret-access-key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | |
# | |
################################################################################ | |
# RESOURCES | |
################################################################################ | |
resources: | |
- name: SpartaHelloWorld | |
type: git | |
source: | |
uri: https://github.com/mweagle/SpartaHelloWorld | |
branch: master | |
- name: Version | |
type: semver | |
source: | |
bucket: {{s3-bucket}} | |
region_name: us-west-2 | |
key: SpartaHelloWorldSemVer | |
access_key_id: {{s3-access-key-id}} | |
secret_access_key: {{s3-secret-access-key}} | |
- name: SourceArchive | |
type: s3 | |
source: | |
bucket: {{s3-bucket}} | |
regexp: SpartaHelloWorld-(.*).tgz | |
region_name: us-west-2 | |
access_key_id: {{s3-access-key-id}} | |
secret_access_key: {{s3-secret-access-key}} | |
################################################################################ | |
# JOBS | |
################################################################################ | |
jobs: | |
- name: Package | |
serial_groups: [Version] | |
plan: | |
- get: SpartaHelloWorld | |
trigger: true | |
- get: Version | |
params: {pre: rc} | |
- task: package | |
config: | |
<< : *CONFIG | |
inputs: | |
- name: SpartaHelloWorld | |
- name: Version | |
run: | |
path: sh | |
args: | |
- -exc | |
- *PACKAGE_SCRIPT | |
outputs: | |
- name: build | |
- put: SourceArchive | |
params: {file: build/SpartaHelloWorld-*.tgz*} | |
- put: Version | |
params: {file: Version/number} | |
- name: UnitTest | |
plan: | |
- get: SourceArchive | |
passed: [Package] | |
trigger: true | |
- task: unit-test | |
config: | |
<< : *CONFIG | |
inputs: | |
- name: SourceArchive | |
run: | |
path: sh | |
args: | |
- -exc | |
- *UNIT_TEST_SCRIPT | |
- name: Build | |
plan: | |
- get: SourceArchive | |
passed: [UnitTest] | |
trigger: true | |
- task: build | |
config: | |
<< : *CONFIG | |
inputs: | |
- name: SourceArchive | |
run: | |
path: sh | |
args: | |
- -exc | |
- *BUILD_SCRIPT | |
outputs: | |
- name: build | |
- name: Provision | |
plan: | |
- get: SourceArchive | |
passed: [Build] | |
trigger: true | |
- task: deploy | |
config: | |
<< : *CONFIG | |
inputs: | |
- name: SourceArchive | |
params: | |
AWS_REGION: us-west-2 | |
AWS_ACCESS_KEY_ID: {{s3-access-key-id}} | |
AWS_SECRET_ACCESS_KEY: {{s3-secret-access-key}} | |
run: | |
path: sh | |
args: | |
- -exc | |
- *PROVISION_SCRIPT | |
################################################################################ | |
# CONSTANTS | |
################################################################################ | |
CONSTANTS: | |
- CONFIG: &CONFIG | |
platform: linux | |
image_resource: | |
type: docker-image | |
source: | |
repository: golang | |
tag: '1.6' | |
- PACKAGE_SCRIPT: &PACKAGE_SCRIPT | | |
cd Version | |
SEM_NUMBER=`cat number` | |
SEM_VERSION=`cat version` | |
echo "SEM_NUMBER=$SEM_NUMBER, SEM_VERSION=$SEM_VERSION" | |
cd .. | |
cd SpartaHelloWorld | |
if [ ! -d ./vendor ] | |
then | |
echo "./vendor does not exist - fetching packages" | |
go get -d -v ./... | |
ls -la $GOPATH/src | |
# Move the $GOPATH/src contents into /.vendor | |
mv $GOPATH/src ./vendor | |
fi | |
cd .. | |
mkdir -pv build | |
# TAR everything up... | |
OUTPUT_FILE="./build/SpartaHelloWorld-$SEM_NUMBER.tgz" | |
tar -zcf $OUTPUT_FILE --exclude=".git" ./SpartaHelloWorld | |
- UNIT_TEST_SCRIPT: &UNIT_TEST_SCRIPT | | |
tar -xf ./SourceArchive/*.tgz | |
mv ./SpartaHelloWorld $GOPATH/src | |
cd $GOPATH/src/SpartaHelloWorld | |
go test -v . | |
- BUILD_SCRIPT: &BUILD_SCRIPT | | |
tar -xf ./SourceArchive/*.tgz | |
mv ./SpartaHelloWorld $GOPATH/src | |
cd $GOPATH/src/SpartaHelloWorld | |
go build . | |
- PROVISION_SCRIPT: &PROVISION_SCRIPT | | |
tar -xf ./SourceArchive/*.tgz | |
mv ./SpartaHelloWorld $GOPATH/src | |
cd $GOPATH/src/SpartaHelloWorld | |
go build -o SpartaProvision . | |
./SpartaProvision --level info provision --s3Bucket {{s3-bucket}} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment