-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathworking-distelli-manifest.yml
More file actions
119 lines (100 loc) · 4.13 KB
/
working-distelli-manifest.yml
File metadata and controls
119 lines (100 loc) · 4.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
bmcgehee/example-node-docker:
# Distelli Manifest example
PreBuild:
# Add any build pre-requisites here
#- echo "---PreBuild---"
#CommitData:
#- RepoType: Git
#- RepoPath: .
Build:
# Enter your build steps here!
#- echo "DD_USERNAME - $DISTELLI_DOCKER_USERNAME"
#- echo "DD_EMAIL - $DISTELLI_DOCKER_EMAIL"
#- echo "DD_ENDPOINT - $DISTELLI_DOCKER_ENDPOINT"
- echo "DD_REPO - $DISTELLI_DOCKER_REPO"
- echo "DD_REPO - $DISTELLI_DOCKER_REPO"
# use nvm (node version manager)
- source ~/.nvm/nvm.sh
# Install node v4.4.7
- nvm install v4.4.7
# install latest npm version globlaly
- npm install npm -g
#- echo "---Building---"
- npm install
#- echo "--Testing--"
- npm test
#- echo "docker login -u $DISTELLI_DOCKER_USERNAME -p $DISTELLI_DOCKER_PW -e $DISTELLI_DOCKER_EMAIL $DISTELLI_DOCKER_ENDPOINT"
- echo "--Creating Docker Image--"
- docker login -u "$DISTELLI_DOCKER_USERNAME" -p "$DISTELLI_DOCKER_PW" -e "$DISTELLI_DOCKER_EMAIL" $DISTELLI_DOCKER_ENDPOINT
#- echo "docker build --quiet=false -t $DISTELLI_DOCKER_REPO $DISTELLI_DOCKER_PATH"
- docker build --quiet=false -t "$DISTELLI_DOCKER_REPO" "$DISTELLI_DOCKER_PATH"
#- echo "docker tag $DISTELLI_DOCKER_REPO $DISTELLI_DOCKER_REPO:$DISTELLI_BUILDNUM"
- docker tag "$DISTELLI_DOCKER_REPO" "$DISTELLI_DOCKER_REPO:$DISTELLI_BUILDNUM"
- echo "--Pushing Docker Image--"
#- echo "docker push $DISTELLI_DOCKER_REPO:$DISTELLI_BUILDNUM"
- 'docker push "$DISTELLI_DOCKER_REPO:$DISTELLI_BUILDNUM"'
#PkgInclude:
# - '*'
###Below is deployment phases
Env:
# Set any environment variables in this section.
# These are available during all phases of a deploy.
- PORT: "3001"
- FINDPORT_LOOP_CNT: "60"
- FINDPORT_SLEEP: "2"
PreInstall:
# Use this section to install any deployment pre-requisites.
- echo "---PreInstall---"
- echo "DD_USERNAME - $DISTELLI_DOCKER_USERNAME"
- echo "DD_EMAIL - $DISTELLI_DOCKER_EMAIL"
- echo "DD_ENDPOINT - $DISTELLI_DOCKER_ENDPOINT"
- echo "DD_REPO - $DISTELLI_DOCKER_REPO"
#- echo "sudo docker login -u $DISTELLI_DOCKER_USERNAME -p $DISTELLI_DOCKER_PW -e $DISTELLI_DOCKER_EMAIL $DISTELLI_DOCKER_ENDPOINT"
- sudo docker login -u "$DISTELLI_DOCKER_USERNAME" -p "$DISTELLI_DOCKER_PW" -e "$DISTELLI_DOCKER_EMAIL" $DISTELLI_DOCKER_ENDPOINT
- echo "--Installing deploy dependencies--"
- echo "-Updating apt-get-"
- sudo apt-get -y clean
- sudo apt-get -y update
- echo "-Installing nodejs-"
- sudo apt-get -y install nodejs
PostInstall:
- echo "---PostInstall---"
Exec:
- DOCKER_ENV_STRING=""
- TEMP_PREFIX_LENGTH="${#DOCKER_ENV_PREFIX}"
- for i in $(set | grep "$DOCKER_ENV_PREFIX"); do
- if [ ${i:0:2} != "_=" ] && [ ${i:0:18} != "DOCKER_ENV_PREFIX=" ]; then
- TEMP_ENV_VAR_LENGTH=${#i}
- TEMP_ENV_VAR=${i:$TEMP_PREFIX_LENGTH:($TEMP_ENV_VAR_LENGTH - $TEMP_PREFIX_LENGTH)}
- DOCKER_ENV_STRING+="-e $TEMP_ENV_VAR "
- fi
- done
- echo "docker run $DOCKER_ENV_STRING"
- cid=$(uuidgen)
- trap 'sudo docker stop $cid' SIGTERM
- (sudo docker run --name=$cid $DOCKER_ENV_STRING --rm=true $DISTELLI_DOCKER_PORTS "$DISTELLI_DOCKER_REPO:$DISTELLI_BUILDNUM") &
- wait
- "true"
PostStart:
- echo "---PostStart---"
- time_amount=$(($FINDPORT_LOOP_CNT * $FINDPORT_SLEEP))
- echo "--Checking over $time_amount seconds for up service on PORT $PORT--"
- failure=1
- for i in `seq 1 $FINDPORT_LOOP_CNT`; do
- echo "checking..."
- response=$(netstat -an | grep "LISTEN" | grep ":$PORT") || true
- 'echo "RESPONSE: $response"'
- if [ "$response" != "" ]; then
- echo "Got $response."
- failure=0
- break
- fi
- sleep $FINDPORT_SLEEP
- done
- echo "================"
- if [ "$failure" -gt 0 ]; then
- exit $failure
- fi
- echo "The service appears to be up."
- publicip=$(curl -s ident.me) || true
- 'echo "You can validate the install by pointing your browser at http://$publicip:$PORT"'