shipitron 1.1.0 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +1 -0
  3. data/.gitattributes +1 -0
  4. data/.gitignore +1 -0
  5. data/Dockerfile +28 -5
  6. data/Dockerfile.release +28 -5
  7. data/Gemfile +1 -0
  8. data/README.md +48 -9
  9. data/build_dev.sh +1 -1
  10. data/docker-compose.yml +24 -0
  11. data/lib/shipitron/cli.rb +10 -4
  12. data/lib/shipitron/client.rb +9 -0
  13. data/lib/shipitron/client/bootstrap_application.rb +1 -0
  14. data/lib/shipitron/client/create_ecs_services.rb +7 -7
  15. data/lib/shipitron/client/deploy_application.rb +1 -0
  16. data/lib/shipitron/client/ensure_deploy_not_running.rb +2 -1
  17. data/lib/shipitron/client/fetch_clusters.rb +1 -0
  18. data/lib/shipitron/client/force_deploy.rb +1 -0
  19. data/lib/shipitron/client/load_application_config.rb +4 -0
  20. data/lib/shipitron/client/load_templates.rb +1 -0
  21. data/lib/shipitron/client/register_ecs_task_definitions.rb +5 -5
  22. data/lib/shipitron/client/run_ecs_tasks.rb +14 -1
  23. data/lib/shipitron/docker_image.rb +4 -1
  24. data/lib/shipitron/find_docker_volume_name.rb +68 -0
  25. data/lib/shipitron/git_info.rb +57 -0
  26. data/lib/shipitron/mustache_yaml_parser.rb +12 -8
  27. data/lib/shipitron/s3_copy.rb +46 -0
  28. data/lib/shipitron/server/deploy_application.rb +3 -0
  29. data/lib/shipitron/server/docker/build_image.rb +4 -1
  30. data/lib/shipitron/server/docker/configure.rb +46 -10
  31. data/lib/shipitron/server/docker/push_image.rb +3 -0
  32. data/lib/shipitron/server/docker/run_build_script.rb +17 -10
  33. data/lib/shipitron/server/download_build_cache.rb +17 -4
  34. data/lib/shipitron/server/git/clone_local_copy.rb +3 -4
  35. data/lib/shipitron/server/git/update_cache.rb +1 -0
  36. data/lib/shipitron/server/run_post_build.rb +40 -1
  37. data/lib/shipitron/server/transform_cli_args.rb +6 -0
  38. data/lib/shipitron/server/update_ecs_task_definitions.rb +2 -1
  39. data/lib/shipitron/server/upload_build_cache.rb +14 -8
  40. data/lib/shipitron/version.rb +1 -1
  41. data/scripts/docker-entrypoint.sh +9 -0
  42. data/shipitron.gemspec +8 -6
  43. metadata +53 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8942009b3ccf99e9b14c8676e355c8a8cd22d7def515a2903daf6707e476a235
4
- data.tar.gz: 3f1d602aebc48bdc3fda47458da830626c964320b621d6d21cf0db08dfef50a1
3
+ metadata.gz: ffcd046204b230e7282508063bb33a58c1c68e73c4e7c8546ea15cfc48d6a2f7
4
+ data.tar.gz: 38ddb0adc7677e27c9afcee285d09358afb60df254994d456319bf904d518091
5
5
  SHA512:
6
- metadata.gz: 8e0a2d2d5575272eada04e2cb8b836a2a71a5139e992714bec2ba45ed83dd3d0b6c7821eb92e824c4f8bcba9805f707be1b56e65d95b3ad87b69b40403758f5e
7
- data.tar.gz: 45f1cdf8c7d940e0defc1ef6be4d65f772648b6c7e7d5d8759f3e19043e426d262a435a5e282eb7fd6872536041f02429d1c3822cc78979dbc444c9c53713c7c
6
+ metadata.gz: 28b568e8e1a5fa928beeeaf2ff1e00415671712c9415dacc317581d10d79bb320bbc05f07d9d1c7b528db4a5523f9568cb9dac33d2bc5607165b43d1896d3cc4
7
+ data.tar.gz: fcd1597703388b9bf8be61ab98e03faabbcf17bab98a06895344e14cb41f3ee412941fe2a27257425c3db646762130500e592150c53e35520939d04240f77fe6
data/.dockerignore CHANGED
@@ -2,3 +2,4 @@
2
2
  /pkg/
3
3
  Gemfile.lock
4
4
  /tmp/
5
+ /spec/fixtures/test_repo
data/.gitattributes ADDED
@@ -0,0 +1 @@
1
+ spec/fixtures/test_repo.tgz filter=lfs diff=lfs merge=lfs -text
data/.gitignore CHANGED
@@ -3,3 +3,4 @@
3
3
  Gemfile.lock
4
4
  /tmp/
5
5
  /cache/
6
+ /spec/fixtures/test_repo
data/Dockerfile CHANGED
@@ -1,12 +1,12 @@
1
- FROM ruby:2.5.1-alpine3.7 as cache
1
+ FROM ruby:2.7.2-alpine as cache
2
2
  COPY cache/ /tmp/
3
3
  RUN cd /usr/local/bundle && \
4
4
  ([ -f /tmp/bundler-data.tar.gz ] && \
5
5
  tar -zxf /tmp/bundler-data.tar.gz && \
6
6
  rm /tmp/bundler-data.tar.gz) || true
7
7
 
8
- FROM ruby:2.5.0-alpine3.7
9
- MAINTAINER Ryan Schlesinger <ryan@outstand.com>
8
+ FROM ruby:2.7.2-alpine
9
+ LABEL maintainer="Ryan Schlesinger <ryan@outstand.com>"
10
10
 
11
11
  RUN addgroup -S shipitron && \
12
12
  adduser -S -G shipitron shipitron && \
@@ -15,18 +15,41 @@ RUN addgroup -S shipitron && \
15
15
 
16
16
  RUN apk add --no-cache \
17
17
  ca-certificates \
18
- openssl \
18
+ openssl-dev \
19
19
  tini \
20
20
  su-exec \
21
21
  build-base \
22
22
  git \
23
+ git-lfs \
23
24
  openssh-client \
24
25
  perl \
25
26
  bash \
26
27
  curl \
27
28
  wget \
28
- jq
29
+ jq \
30
+ cmake
29
31
 
32
+ ENV ECR_CREDENTIAL_HELPER_VERSION 0.4.0
33
+ RUN cd /usr/local/bin && \
34
+ wget https://amazon-ecr-credential-helper-releases.s3.us-east-2.amazonaws.com/${ECR_CREDENTIAL_HELPER_VERSION}/linux-amd64/docker-credential-ecr-login && \
35
+ chmod +x docker-credential-ecr-login
36
+
37
+ ENV BUILDKIT_VERSION v0.7.2
38
+ RUN cd /usr/local/bin && \
39
+ wget -nv https://github.com/moby/buildkit/releases/download/${BUILDKIT_VERSION}/buildkit-${BUILDKIT_VERSION}.linux-amd64.tar.gz && \
40
+ tar --strip-components=1 -zxvf buildkit-${BUILDKIT_VERSION}.linux-amd64.tar.gz bin/buildctl && \
41
+ chmod +x buildctl && \
42
+ rm -f buildkit-${BUILDKIT_VERSION}.linux-amd64.tar.gz
43
+
44
+ USER shipitron
45
+ ENV BUILDX_VERSION v0.4.2
46
+ RUN cd /home/shipitron && \
47
+ wget -nv https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/buildx-${BUILDX_VERSION}.linux-amd64 && \
48
+ mkdir -p ~/.docker/cli-plugins && \
49
+ mv buildx-${BUILDX_VERSION}.linux-amd64 ~/.docker/cli-plugins/docker-buildx && \
50
+ chmod a+x ~/.docker/cli-plugins/docker-buildx
51
+
52
+ USER root
30
53
  ENV USE_BUNDLE_EXEC true
31
54
  ENV BUNDLE_GEMFILE /shipitron/Gemfile
32
55
 
data/Dockerfile.release CHANGED
@@ -1,5 +1,5 @@
1
- FROM ruby:2.5.1-alpine3.7
2
- MAINTAINER Ryan Schlesinger <ryan@outstand.com>
1
+ FROM ruby:2.7.2-alpine
2
+ LABEL maintainer="Ryan Schlesinger <ryan@outstand.com>"
3
3
 
4
4
  RUN addgroup -S shipitron && \
5
5
  adduser -S -G shipitron shipitron && \
@@ -8,7 +8,7 @@ RUN addgroup -S shipitron && \
8
8
 
9
9
  RUN apk add --no-cache \
10
10
  ca-certificates \
11
- openssl \
11
+ openssl-dev \
12
12
  tini \
13
13
  su-exec \
14
14
  build-base \
@@ -18,11 +18,34 @@ RUN apk add --no-cache \
18
18
  bash \
19
19
  curl \
20
20
  wget \
21
- jq
21
+ jq \
22
+ cmake
23
+
24
+ ENV ECR_CREDENTIAL_HELPER_VERSION 0.4.0
25
+ RUN cd /usr/local/bin && \
26
+ wget https://amazon-ecr-credential-helper-releases.s3.us-east-2.amazonaws.com/${ECR_CREDENTIAL_HELPER_VERSION}/linux-amd64/docker-credential-ecr-login && \
27
+ chmod +x docker-credential-ecr-login
28
+
29
+ ENV BUILDKIT_VERSION v0.7.2
30
+ RUN cd /usr/local/bin && \
31
+ wget -nv https://github.com/moby/buildkit/releases/download/${BUILDKIT_VERSION}/buildkit-${BUILDKIT_VERSION}.linux-amd64.tar.gz && \
32
+ tar --strip-components=1 -zxvf buildkit-${BUILDKIT_VERSION}.linux-amd64.tar.gz bin/buildctl && \
33
+ chmod +x buildctl && \
34
+ rm -f buildkit-${BUILDKIT_VERSION}.linux-amd64.tar.gz
35
+
36
+ USER shipitron
37
+ ENV BUILDX_VERSION v0.4.2
38
+ RUN cd /home/shipitron && \
39
+ wget -nv https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/buildx-${BUILDX_VERSION}.linux-amd64 && \
40
+ mkdir -p ~/.docker/cli-plugins && \
41
+ mv buildx-${BUILDX_VERSION}.linux-amd64 ~/.docker/cli-plugins/docker-buildx && \
42
+ chmod a+x ~/.docker/cli-plugins/docker-buildx
43
+
44
+ USER root
22
45
 
23
46
  WORKDIR /app
24
47
 
25
- ENV SHIPITRON_VERSION=1.1.0
48
+ ENV SHIPITRON_VERSION=1.3.2
26
49
 
27
50
  RUN gem install shipitron -v ${SHIPITRON_VERSION} && \
28
51
  mkdir -p /home/shipitron/.ssh && \
data/Gemfile CHANGED
@@ -1,3 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
+ gem 'irb'
data/README.md CHANGED
@@ -9,6 +9,7 @@ applications:
9
9
  dummy-app:
10
10
  repository: git@github.com:outstand/dummy-app
11
11
  cache_bucket: bucket
12
+ build_cache_location: tmp/build-cache.tar.gz
12
13
  image_name: outstand/dummy-app
13
14
  build_script: shipitron/build.sh
14
15
  post_builds:
@@ -30,25 +31,63 @@ applications:
30
31
  - Add deploy ref key to `shipitron/<app name>/deploy_ref_key`
31
32
  - `docker run -it --rm -v shipitron.yml:/shipitron/config/shipitron.yml outstand/shipitron:<version> deploy <app>`
32
33
 
34
+ ### New shipitron config file keys:
35
+
36
+ - registry (specifies an alternate docker registry):
37
+ ```yaml
38
+ ---
39
+ applications:
40
+ foobar:
41
+ registry: 12345.dkr.ecr.us-east-1.amazonaws.com
42
+ ```
43
+
44
+ - skip_push (shipitron will skip pushing the docker images; use if the build script takes care of this):
45
+ ```yaml
46
+ ---
47
+ applications:
48
+ foobar:
49
+ skip_push: true
50
+ ```
51
+ Additionally, the build script will receive the named tag in use as `$2`.
52
+
53
+ ### Containerized tool support
54
+ Shipitron now supports starting other containers as part of the build process. We're using this to use the aws cli to transfer files to/from s3. Shipitron's task definition needs to have a task scoped docker volume added with the name `shipitron-home`. This volume will be mounted at `/home/shipitron` and should be shared with any new containers:
55
+
56
+ ```
57
+ shipitron_home_volume = FindDockerVolumeName.call!(
58
+ container_name: 'shipitron',
59
+ volume_search: /shipitron-home/
60
+ ).volume_name
61
+
62
+ docker run ... -v #{shipitron_home_volume}:/home/shipitron ...
63
+ ```
64
+
65
+ This allows the containers to share data with each other. ECS will automatically clean up the task scoped container.
66
+
67
+ If a containerized tool requires access to AWS resources, be sure to pass the `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` to it so it can inherit any task roles.
68
+
33
69
  ## Development
34
70
 
35
- - `docker volume create --name shipitron_fog`
36
71
  - `./build_dev.sh`
37
- - `docker run -it --rm -v $(pwd):/shipitron -v shipitron_fog:/fog -e FOG_LOCAL=true -w /shipitron outstand/shipitron:dev rspec spec` to run specs
38
- - `APP_PATH=/path/to/app`
39
- - `docker run -it --rm -v $(pwd):/shipitron -v $HOME/.config/shipitron:/home/shipitron/.config/shipitron -v $APP_PATH:/app outstand/shipitron:dev deploy <app>` to run client side
40
- - `docker run -it --rm -v $(pwd):/shipitron -v $HOME/.config/shipitron:/home/shipitron/.config/shipitron -v $APP_PATH:/app outstand/shipitron:dev deploy <app> --simulate` to get the arguments for `server_deploy` below
41
- - `docker run -it --rm --dns 10.10.10.2 -v $(pwd):/shipitron -v $APP_PATH:/app -v /bin/docker:/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v shipitron_fog:/fog -e FOG_LOCAL=true -e CONSUL_HOST=consul outstand/shipitron:dev server_deploy --name dummy-app --repository git@github.com:outstand/dummy-app --bucket outstand-shipitron --image-name outstand/dummy-app --region us-east-1 --cluster-name us-east-1-prod-blue --ecs-task-defs dummy-app --ecs-services dummy-app --build-script shipitron/build.sh --post-builds 'ecs_task:dummy-app,container_name:dummy-app,command:echo postbuild' --ecs-task-def-templates LS0tCmZhbWlseTogZHVtbXktYXBwCmNvbnRhaW5lcl9kZWZpbml0aW9uczoKICAtIG5hbWU6IGR1bW15LWFwcAogICAgaW1hZ2U6IG91dHN0YW5kL2R1bW15LWFwcDp7e3RhZ319CiAgICBtZW1vcnk6IDEyOAogICAgZXNzZW50aWFsOiB0cnVlCiAgICBwb3J0X21hcHBpbmdzOgogICAgICAtIGNvbnRhaW5lcl9wb3J0OiA4MAogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gbmFtZTogU0VSVklDRV84MF9OQU1FCiAgICAgICAgdmFsdWU6IGR1bW15Cg== --ecs-service-templates LS0tCmNsdXN0ZXI6IHt7Y2x1c3Rlcn19CnNlcnZpY2VfbmFtZTogZHVtbXktYXBwCnRhc2tfZGVmaW5pdGlvbjogZHVtbXktYXBwe3tyZXZpc2lvbn19CmRlc2lyZWRfY291bnQ6IHt7Y291bnR9fQojcm9sZToge3tyb2xlfX0KZGVwbG95bWVudF9jb25maWd1cmF0aW9uOgogIG1heGltdW1fcGVyY2VudDogMjAwCiAgbWluaW11bV9oZWFsdGh5X3BlcmNlbnQ6IDUwCg== --debug` to run server side (dummy-app is an example)
72
+ - `dev run --rm shipitron_specs` to run specs
73
+ - Set the application path in the volumes section in `docker-compose.yml`.
74
+ - `dev run --rm shipitron deploy <app>` to run client side
75
+ - `dev run --rm shipitron deploy <app> --simulate` to get the arguments for `server_deploy` below
76
+ - `dev run --rm -v /bin/docker:/bin/docker -v /var/run/docker.sock:/var/run/docker.sock shipitron server_deploy --name dummy-app --repository git@github.com:outstand/dummy-app --bucket outstand-shipitron --image-name outstand/dummy-app --region us-east-1 --cluster-name us-east-1-prod-blue --ecs-task-defs dummy-app --ecs-services dummy-app --build-script shipitron/build.sh --post-builds 'ecs_task:dummy-app,container_name:dummy-app,command:echo postbuild' --ecs-task-def-templates LS0tCmZhbWlseTogZHVtbXktYXBwCmNvbnRhaW5lcl9kZWZpbml0aW9uczoKICAtIG5hbWU6IGR1bW15LWFwcAogICAgaW1hZ2U6IG91dHN0YW5kL2R1bW15LWFwcDp7e3RhZ319CiAgICBtZW1vcnk6IDEyOAogICAgZXNzZW50aWFsOiB0cnVlCiAgICBwb3J0X21hcHBpbmdzOgogICAgICAtIGNvbnRhaW5lcl9wb3J0OiA4MAogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gbmFtZTogU0VSVklDRV84MF9OQU1FCiAgICAgICAgdmFsdWU6IGR1bW15Cg== --ecs-service-templates LS0tCmNsdXN0ZXI6IHt7Y2x1c3Rlcn19CnNlcnZpY2VfbmFtZTogZHVtbXktYXBwCnRhc2tfZGVmaW5pdGlvbjogZHVtbXktYXBwe3tyZXZpc2lvbn19CmRlc2lyZWRfY291bnQ6IHt7Y291bnR9fQojcm9sZToge3tyb2xlfX0KZGVwbG95bWVudF9jb25maWd1cmF0aW9uOgogIG1heGltdW1fcGVyY2VudDogMjAwCiAgbWluaW11bV9oZWFsdGh5X3BlcmNlbnQ6IDUwCg== --debug` to run server side (dummy-app is an example)
42
77
 
43
78
  Running a dev version in production:
79
+ - Update `Shipitron::Client::STARTED_BY`
44
80
  - `docker push outstand/shipitron:dev`
45
81
  - Update config to use `shipitron_task: shipitron-dev`
46
- - `docker run -it --rm -v $(pwd):/shipitron -v $HOME/.config/shipitron:/home/shipitron/.config/shipitron -v $APP_PATH:/app outstand/shipitron:dev deploy <app> --debug`
82
+ - `dev run --rm shipitron deploy <app> --debug`
47
83
 
48
84
  To release a new version:
49
85
  - Update the version number in `version.rb` and `Dockerfile.release` and commit the result.
50
86
  - `./build_dev.sh`
51
87
  - `docker run -it --rm -v ~/.gitconfig:/root/.gitconfig -v ~/.gitconfig.user:/root/.gitconfig.user -v ~/.ssh/id_rsa:/root/.ssh/id_rsa -v ~/.gem:/root/.gem -w /shipitron outstand/shipitron:dev rake release`
52
- - `docker build -t outstand/shipitron:VERSION -f Dockerfile.release .`
53
- - `docker push outstand/shipitron:VERSION`
88
+ - `VERSION=<version>`
89
+ - `docker build -t outstand/shipitron:$VERSION -f Dockerfile.release .`
90
+ - `docker push outstand/shipitron:$VERSION`
91
+ - `docker tag outstand/shipitron:$VERSION outstand/shipitron:latest`
92
+ - `docker push outstand/shipitron:latest`
54
93
  - Update ECS task definition with new version
data/build_dev.sh CHANGED
@@ -20,7 +20,7 @@ trap cleanup EXIT
20
20
  build_args=''
21
21
  mkdir -p ${bundler_data_dir}
22
22
 
23
- docker build -t ${build_image} -f ${dockerfile} ${build_args} .
23
+ docker build --pull -t ${build_image} -f ${dockerfile} ${build_args} .
24
24
 
25
25
  docker run -t --cidfile=${bundler_data_dir}/cidfile -w /usr/local/bundle ${build_image} tar -zcf /tmp/bundler-data.tar.gz .
26
26
  tar_container=$(cat ${bundler_data_dir}/cidfile)
@@ -0,0 +1,24 @@
1
+ version: '3.8'
2
+ services:
3
+ shipitron:
4
+ image: outstand/shipitron:dev
5
+ volumes:
6
+ - ~/dev/pages:/app # Set this to the application to be shipitron'd
7
+ - shipitron-home:/home/shipitron
8
+ - ~/.config/shipitron:/home/shipitron/.config/shipitron
9
+ - .:/shipitron
10
+ shipitron_specs:
11
+ image: outstand/shipitron:dev
12
+ command: rspec spec
13
+ environment:
14
+ FOG_LOCAL: 'true'
15
+ working_dir: /shipitron
16
+ volumes:
17
+ - fog:/fog
18
+ - shipitron-home:/home/shipitron
19
+ - ~/.config/shipitron:/home/shipitron/.config/shipitron
20
+ - .:/shipitron
21
+
22
+ volumes:
23
+ fog:
24
+ shipitron-home:
data/lib/shipitron/cli.rb CHANGED
@@ -27,7 +27,7 @@ module Shipitron
27
27
  )
28
28
 
29
29
  if result.failure?
30
- result.errors.each do |error|
30
+ result.error_messages.each do |error|
31
31
  Logger.fatal error
32
32
  end
33
33
  Logger.fatal 'Deploy failed.'
@@ -50,7 +50,7 @@ module Shipitron
50
50
  )
51
51
 
52
52
  if result.failure?
53
- result.errors.each do |error|
53
+ result.error_messages.each do |error|
54
54
  Logger.fatal error
55
55
  end
56
56
  Logger.fatal 'Deploy failed.'
@@ -62,9 +62,12 @@ module Shipitron
62
62
  option :name, required: true
63
63
  option :repository, required: true
64
64
  option :repository_branch, default: 'master'
65
+ option :registry, default: nil
65
66
  option :bucket, required: true
67
+ option :build_cache_location, default: 'tmp/build-cache.tar.gz'
66
68
  option :image_name, required: true
67
69
  option :named_tag, default: 'latest'
70
+ option :skip_push, type: :boolean, default: false
68
71
  option :region, required: true
69
72
  option :clusters, type: :array, required: true
70
73
  option :ecs_task_defs, type: :array, required: true
@@ -85,9 +88,12 @@ module Shipitron
85
88
  application: options[:name],
86
89
  repository_url: options[:repository],
87
90
  repository_branch: options[:repository_branch],
91
+ registry: options[:registry],
88
92
  s3_cache_bucket: options[:bucket],
93
+ build_cache_location: options[:build_cache_location],
89
94
  image_name: options[:image_name],
90
95
  named_tag: options[:named_tag],
96
+ skip_push: options[:skip_push],
91
97
  region: options[:region],
92
98
  clusters: options[:clusters],
93
99
  ecs_task_defs: options[:ecs_task_defs],
@@ -104,7 +110,7 @@ module Shipitron
104
110
  )
105
111
 
106
112
  if result.failure?
107
- result.errors.each do |error|
113
+ result.error_messages.each do |error|
108
114
  Logger.fatal error
109
115
  end
110
116
  Logger.fatal 'Deploy failed.'
@@ -135,7 +141,7 @@ module Shipitron
135
141
  )
136
142
 
137
143
  if result.failure?
138
- result.errors.each do |error|
144
+ result.error_messages.each do |error|
139
145
  Logger.fatal error
140
146
  end
141
147
  Logger.fatal 'Bootstrap failed.'
@@ -0,0 +1,9 @@
1
+ require 'shipitron'
2
+
3
+ module Shipitron
4
+ module Client
5
+ STARTED_BY = 'shipitron'
6
+ # Use this for testing.
7
+ # STARTED_BY = 'shipitron-dev'
8
+ end
9
+ end
@@ -1,4 +1,5 @@
1
1
  require 'shipitron'
2
+ require 'shipitron/client'
2
3
  require 'shipitron/client/register_ecs_task_definitions'
3
4
  require 'shipitron/client/create_ecs_services'
4
5
 
@@ -1,4 +1,5 @@
1
1
  require 'shipitron'
2
+ require 'shipitron/client'
2
3
  require 'shipitron/ecs_client'
3
4
  require 'shipitron/mustache_yaml_parser'
4
5
  require 'securerandom'
@@ -29,13 +30,12 @@ module Shipitron
29
30
 
30
31
  service_def = Smash.load(
31
32
  path.to_s,
32
- parser: MustacheYamlParser.new(
33
- context: {
34
- cluster: cluster_name,
35
- revision: nil, # ECS will default to latest ACTIVE
36
- count: service_count
37
- }
38
- )
33
+ parser: MustacheYamlParser,
34
+ context: {
35
+ cluster: cluster_name,
36
+ revision: nil, # ECS will default to latest ACTIVE
37
+ count: service_count
38
+ }
39
39
  ).merge(
40
40
  client_token: SecureRandom.uuid
41
41
  )
@@ -1,4 +1,5 @@
1
1
  require 'shipitron'
2
+ require 'shipitron/client'
2
3
  require 'shipitron/client/load_application_config'
3
4
  require 'shipitron/client/load_templates'
4
5
  require 'shipitron/client/fetch_clusters'
@@ -1,4 +1,5 @@
1
1
  require 'shipitron'
2
+ require 'shipitron/client'
2
3
  require 'shipitron/ecs_client'
3
4
 
4
5
  # Note: This is a best effort client side check to make sure there
@@ -21,7 +22,7 @@ module Shipitron
21
22
  begin
22
23
  response = ecs_client(region: cluster.region).list_tasks(
23
24
  cluster: cluster.name,
24
- started_by: 'shipitron',
25
+ started_by: Shipitron::Client::STARTED_BY,
25
26
  max_results: 1,
26
27
  desired_status: status
27
28
  )
@@ -1,4 +1,5 @@
1
1
  require 'shipitron'
2
+ require 'shipitron/client'
2
3
  require 'resolv'
3
4
 
4
5
  module Shipitron
@@ -1,4 +1,5 @@
1
1
  require 'shipitron'
2
+ require 'shipitron/client'
2
3
  require 'shipitron/ecs_client'
3
4
  require 'shipitron/client/load_application_config'
4
5
  require 'shipitron/client/fetch_clusters'
@@ -1,4 +1,5 @@
1
1
  require 'shipitron'
2
+ require 'shipitron/client'
2
3
  require 'shipitron/post_build'
3
4
 
4
5
  module Shipitron
@@ -11,7 +12,9 @@ module Shipitron
11
12
  def call
12
13
  context.repository_url = config.repository
13
14
  context.repository_branch = config.repository_branch
15
+ context.registry = config.registry
14
16
  context.s3_cache_bucket = config.cache_bucket
17
+ context.build_cache_location = config.build_cache_location
15
18
  context.image_name = config.image_name
16
19
  context.named_tag = begin
17
20
  if config.named_tag.nil?
@@ -20,6 +23,7 @@ module Shipitron
20
23
  config.named_tag
21
24
  end
22
25
  end
26
+ context.skip_push = config.skip_push
23
27
  context.build_script = config.build_script
24
28
  context.post_builds = begin
25
29
  if config.post_builds.nil?
@@ -1,4 +1,5 @@
1
1
  require 'shipitron'
2
+ require 'shipitron/client'
2
3
 
3
4
  module Shipitron
4
5
  module Client
@@ -1,4 +1,5 @@
1
1
  require 'shipitron'
2
+ require 'shipitron/client'
2
3
  require 'shipitron/ecs_client'
3
4
  require 'shipitron/mustache_yaml_parser'
4
5
 
@@ -26,11 +27,10 @@ module Shipitron
26
27
 
27
28
  task_def = Smash.load(
28
29
  path.to_s,
29
- parser: MustacheYamlParser.new(
30
- context: {
31
- tag: 'latest'
32
- }
33
- )
30
+ parser: MustacheYamlParser,
31
+ context: {
32
+ tag: 'latest'
33
+ }
34
34
  )
35
35
 
36
36
  begin