Skip to content
This repository was archived by the owner on Jul 19, 2022. It is now read-only.

Commit b4d3270

Browse files
generate-manifest now handles all options and now only generates manifest (no artifact copying)
1 parent 5798e64 commit b4d3270

File tree

2 files changed

+58
-41
lines changed

2 files changed

+58
-41
lines changed

generate-manifest/task.sh

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,42 @@
1-
#!/bin/ash
1+
#!/bin/bash
22
#
3-
# All UPERCASE variables are provided externally from this script
3+
# All UPERCASE variables are provided externally from this yml
44

55
set -eu
66
set -o pipefail
77

8-
# copy the artifact to the task-output folder
9-
cp artifact/$CF_APP_PATH task-output/.
10-
118
cd task-output
129

13-
# convert 'artifact-*.jar' into 'artifact-1.0.0-rc.1.jar'
14-
appPath=$(ls $CF_APP_PATH)
15-
16-
cat <<EOF >manifest.yml
17-
---
18-
applications:
19-
- name: $CF_APP_NAME
20-
path: $appPath
21-
EOF
22-
23-
[ -n "$CF_APP_HOST" ] && echo " host: $CF_APP_HOST" >> manifest.yml
24-
[ -n "$CF_APP_MEMORY" ] && echo " memory: $CF_APP_MEMORY" >> manifest.yml
25-
[ -n "$CF_APP_INSTANCES" ] && echo " instances: $CF_APP_INSTANCES" >> manifest.yml
26-
[ -n "$CF_APP_TIMEOUT" ] && echo " timeout: $CF_APP_TIMEOUT" >> manifest.yml
27-
# note: should be passed in as an array: [service1,service2,etc]
28-
[ -n "$CF_APP_SERVICES" ] && echo " services: $CF_APP_SERVICES" >> manifest.yml
29-
# note: concourse passes this as a json object, which is cool
30-
[ -n "$CF_APP_ENV_VARS" ] && echo " env: $CF_APP_ENV_VARS" >> manifest.yml
31-
32-
echo "Generated manifest:"
33-
cat manifest.yml
10+
# Build the yaml create script
11+
yml=
12+
[ "${MF_NAME:-}" ] && yml+="applications[0].name: $MF_NAME\n"
13+
[ "${MF_BUILDPACK:-}" ] && yml+="applications[0].buildpack: $MF_BUILDPACK\n"
14+
[ "${MF_COMMAND:-}" ] && yml+="applications[0].command: $MF_COMMAND\n"
15+
[ "${MF_DISK_QUOTA:-}" ] && yml+="applications[0].disk_quota: $MF_DISK_QUOTA\n"
16+
[ "${MF_DOMAIN:-}" ] && yml+="applications[0].domain: $MF_DOMAIN\n"
17+
[ "${MF_DOMAINS:-}" ] && yml+="applications[0].domains: $MF_DOMAINS\n"
18+
[ "${MF_HEALTH_CHECK_HTTP_ENDPOINT:-}" ] && yml+="applications[0].health-check-http-endpoint: $MF_HEALTH_CHECK_HTTP_ENDPOINT\n"
19+
[ "${MF_HEALTH_CHECK_TYPE:-}" ] && yml+="applications[0].health-check-type: $MF_HEALTH_CHECK_TYPE\n"
20+
[ "${MF_HOST:-}" ] && yml+="applications[0].host: $MF_HOST\n"
21+
[ "${MF_HOSTS:-}" ] && yml+="applications[0].hosts: $MF_HOSTS\n"
22+
[ "${MF_INSTANCES:-}" ] && yml+="applications[0].instances: $MF_INSTANCES\n"
23+
[ "${MF_MEMORY:-}" ] && yml+="applications[0].memory: $MF_MEMORY\n"
24+
[ "${MF_NO_HOSTNAME:-}" ] && yml+="applications[0].no-hostname: $MF_NO_HOSTNAME\n"
25+
[ "${MF_NO_ROUTE:-}" ] && yml+="applications[0].no-route: $MF_NO_ROUTE\n"
26+
[ "${MF_PATH:-}" ] && yml+="applications[0].path: $MF_PATH\n"
27+
[ "${MF_RANDOM_ROUTE:-}" ] && yml+="applications[0].random_route: $MF_RANDOM_ROUTE\n"
28+
[ "${MF_ROUTES:-}" ] && yml+="applications[0].routes: $MF_ROUTES\n"
29+
[ "${MF_STACK:-}" ] && yml+="applications[0].stack: $MF_STACK\n"
30+
[ "${MF_TIMEOUT:-}" ] && yml+="applications[0].timeout: $MF_TIMEOUT\n"
31+
[ "${MF_ENV:-}" ] && yml+="applications[0].env: $MF_ENV\n"
32+
[ "${MF_SERVICES:-}" ] && yml+="applications[0].services: $MF_SERVICES\n"
33+
34+
if [ -n "$yml" ]; then
35+
echo -e "---\n$(echo -e $yml | yaml n -s -)" > manifest.yml
36+
echo 'Generated manifest:'
37+
cat manifest.yml
38+
else
39+
echo 'No manifest options specified: nothing to generate!'
40+
fi
3441

3542
cd ..

generate-manifest/task.yml

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,36 @@ platform: linux
44
image_resource:
55
type: docker-image
66
source:
7-
repository: busybox
8-
tag: '1.26'
7+
repository: patrickcrocker/cf-cli-resource
8+
tag: 'latest'
99

1010
params:
11-
CF_APP_NAME:
12-
CF_APP_HOST:
13-
CF_APP_PATH:
14-
CF_APP_MEMORY:
15-
CF_APP_INSTANCES:
16-
CF_APP_TIMEOUT:
17-
CF_APP_SERVICES:
18-
# Example:
19-
# CF_APP_ENV_VARS:
20-
# JAVA_OPTS: -Djava.security.egd=file:///dev/urandom
21-
# TRUST_CERTS: api.run.pivotal.io
22-
CF_APP_ENV_VARS:
11+
# all examples use in-line yaml syntax for sequences and maps, but you can
12+
# use the normal syntax as well
13+
MF_NAME: #my-app
14+
MF_BUILDPACK: #https://github.com/cloudfoundry/java-buildpack.git#v3.3.0
15+
MF_COMMAND: #bundle exec rake VERBOSE=true
16+
MF_DISK_QUOTA: #1024M
17+
MF_DOMAIN: #unique-example.com
18+
MF_DOMAINS: #[ domain-example1.com, domain-example2.org ]
19+
MF_HEALTH_CHECK_HTTP_ENDPOINT: #/health
20+
MF_HEALTH_CHECK_TYPE: #http
21+
MF_HOST: #my-app
22+
MF_HOSTS: #[ app_host1, app_host2 ]
23+
MF_INSTANCES: #2
24+
MF_MEMORY: #1024M
25+
MF_NO_HOSTNAME: #true
26+
MF_NO_ROUTE: #true
27+
MF_PATH: #/path/to/application/bits
28+
MF_RANDOM_ROUTE: #true
29+
MF_ROUTES: #[ { route: example.com }, { route: www.example.com/foo }, { route: 'tcp-example.com:1234' } ]
30+
MF_STACK: #cflinuxfs2
31+
MF_TIMEOUT: #80
32+
MF_ENV: # { RAILS_ENV: production, RACK_ENV: production, JBP_CONFIG_OPEN_JDK_JRE: '{ jre: { version: 1.8.0_+ }, memory_calculator: { stack_threads: 200 } }' }
33+
MF_SERVICES: #[ instance_ABC, instance_XYZ ]
2334

2435
inputs:
2536
- name: pipeline-tasks
26-
- name: artifact
2737

2838
outputs:
2939
- name: task-output

0 commit comments

Comments
 (0)