shipitron 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7653475a31f523308f996fcc6706ba164f1c0803
4
- data.tar.gz: 9cfda8b85cb629ecaf060d9b56d741817426a80b
3
+ metadata.gz: f276eea3bc814eeedda43552b9c801662562f7b1
4
+ data.tar.gz: 129599725b7dfe76b22e1ddd3be38dfd9577a9c1
5
5
  SHA512:
6
- metadata.gz: 1ae5bea9fc367cdd7d8cba5db9438f634ee4a1ad3fe438f36fa524f9a4df6b90312271f5e43113035917b471723971a6ba5c3380fdbafbea41845e9839f40c6a
7
- data.tar.gz: a0002bf6452cf263af8ebf362b36b6a8917ac036979e5358e5fec47820b11349da0a6a1709ea3eb9b21cb670f9dd06160acf031fa625fbd1b8c621e848810e54
6
+ metadata.gz: 44af2826b1072da8b54808c86553fa6c093c3894f658cb54d03a2035eaa64950fef01a0df7c3a0369e6c902eaf9b3222300a63c062c4d45de916bb6c66c9ff02
7
+ data.tar.gz: 9098145bb5484b87ded3aafb2b88cc43ba0f41569ed96990222826e24ab87d777dc12c22d172287f4e8ebf068264133520830ec59f8588f23eaa237c030fac56
data/Dockerfile CHANGED
@@ -6,20 +6,20 @@ RUN addgroup -S shipitron && \
6
6
  addgroup -g 1101 docker && \
7
7
  addgroup shipitron docker
8
8
 
9
- ENV GOSU_VERSION 1.9
10
- ENV DUMB_INIT_VERSION 1.1.3
9
+ ENV GOSU_VERSION 1.10
10
+ ENV DUMB_INIT_VERSION 1.2.0
11
11
 
12
- RUN apk add --no-cache ca-certificates gnupg && \
12
+ RUN apk add --no-cache ca-certificates gnupg openssl && \
13
13
  mkdir -p /tmp/build && \
14
14
  cd /tmp/build && \
15
15
  gpg --keyserver pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 && \
16
- curl -o gosu -L "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-amd64" && \
17
- curl -o gosu.asc -L "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-amd64.asc" && \
16
+ wget -O gosu "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-amd64" && \
17
+ wget -O gosu.asc "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-amd64.asc" && \
18
18
  gpg --verify gosu.asc && \
19
19
  chmod +x gosu && \
20
20
  cp gosu /bin/gosu && \
21
- curl -O -L https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_amd64 && \
22
- curl -O -L https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/sha256sums && \
21
+ wget https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_amd64 && \
22
+ wget https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/sha256sums && \
23
23
  grep dumb-init_${DUMB_INIT_VERSION}_amd64$ sha256sums | sha256sum -c && \
24
24
  chmod +x dumb-init_${DUMB_INIT_VERSION}_amd64 && \
25
25
  cp dumb-init_${DUMB_INIT_VERSION}_amd64 /bin/dumb-init && \
@@ -31,7 +31,7 @@ RUN apk add --no-cache ca-certificates gnupg && \
31
31
  RUN apk add --no-cache \
32
32
  build-base \
33
33
  git \
34
- openssh \
34
+ openssh-client \
35
35
  perl \
36
36
  bash
37
37
 
data/Dockerfile.release CHANGED
@@ -6,20 +6,20 @@ RUN addgroup -S shipitron && \
6
6
  addgroup -g 1101 docker && \
7
7
  addgroup shipitron docker
8
8
 
9
- ENV GOSU_VERSION 1.9
10
- ENV DUMB_INIT_VERSION 1.1.3
9
+ ENV GOSU_VERSION 1.10
10
+ ENV DUMB_INIT_VERSION 1.2.0
11
11
 
12
- RUN apk add --no-cache ca-certificates gnupg && \
12
+ RUN apk add --no-cache ca-certificates gnupg openssl && \
13
13
  mkdir -p /tmp/build && \
14
14
  cd /tmp/build && \
15
15
  gpg --keyserver pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 && \
16
- curl -o gosu -L "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-amd64" && \
17
- curl -o gosu.asc -L "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-amd64.asc" && \
16
+ wget -O gosu "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-amd64" && \
17
+ wget -O gosu.asc "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-amd64.asc" && \
18
18
  gpg --verify gosu.asc && \
19
19
  chmod +x gosu && \
20
20
  cp gosu /bin/gosu && \
21
- curl -O -L https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_amd64 && \
22
- curl -O -L https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/sha256sums && \
21
+ wget https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_amd64 && \
22
+ wget https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/sha256sums && \
23
23
  grep dumb-init_${DUMB_INIT_VERSION}_amd64$ sha256sums | sha256sum -c && \
24
24
  chmod +x dumb-init_${DUMB_INIT_VERSION}_amd64 && \
25
25
  cp dumb-init_${DUMB_INIT_VERSION}_amd64 /bin/dumb-init && \
@@ -31,12 +31,13 @@ RUN apk add --no-cache ca-certificates gnupg && \
31
31
  RUN apk add --no-cache \
32
32
  build-base \
33
33
  git \
34
+ openssh-client \
34
35
  perl \
35
36
  bash
36
37
 
37
38
  WORKDIR /app
38
39
 
39
- ENV SHIPITRON_VERSION=0.2.2
40
+ ENV SHIPITRON_VERSION=0.3.0
40
41
 
41
42
  RUN gem install shipitron -v ${SHIPITRON_VERSION} && \
42
43
  mkdir -p /home/shipitron/.ssh && \
data/README.md CHANGED
@@ -31,16 +31,18 @@ applications:
31
31
  - Add needed ssh known hosts to `shipitron/<app name>/git_host_key` in consul k/v
32
32
  - Add git ssh deploy key to `shipitron/<app name>/git_deploy_key` in consul k/v
33
33
  - Add docker auth config (`~/.docker/config.json` after `docker login`) to `shipitron/<app name>/docker_auth` in consul k/v
34
+ - Add deploy ref key to `shipitron/<app name>/deploy_ref_key`
34
35
  - `docker run -it --rm -v shipitron.yml:/shipitron/config/shipitron.yml outstand/shipitron:<version> deploy <app>`
35
36
 
36
37
  ## Development
37
38
 
38
39
  - `docker volume create --name shipitron_fog`
39
40
  - `./build_dev.sh`
40
- - `docker run -it --rm -v $(pwd):/shipitron -v shipitron_fog:/fog -e FOG_LOCAL=true outstand/shipitron:dev rspec spec` to run specs
41
- - `docker run -it --rm -v $(pwd):/shipitron -v /path/to/app:/app outstand/shipitron:dev deploy <app>` to run client side
42
- - `docker run -it --rm -v $(pwd):/shipitron -v /path/to/app:/app outstand/shipitron:dev deploy <app> --simulate` to get the arguments for `server_deploy` below
43
- - `docker run -it --rm --dns 10.10.10.2 -v $(pwd):/shipitron -v /path/to/app:/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)
41
+ - `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
42
+ - `APP_PATH=/path/to/app`
43
+ - `docker run -it --rm -v $(pwd):/shipitron -v $APP_PATH:/app outstand/shipitron:dev deploy <app>` to run client side
44
+ - `docker run -it --rm -v $(pwd):/shipitron -v $APP_PATH:/app outstand/shipitron:dev deploy <app> --simulate` to get the arguments for `server_deploy` below
45
+ - `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)
44
46
 
45
47
  To release a new version:
46
48
  - Update the version number in `version.rb` and `Dockerfile.release` and commit the result.
@@ -30,5 +30,16 @@ module Shipitron
30
30
  end
31
31
  end
32
32
 
33
+ def set_key(key:, value:)
34
+ Logger.debug "Setting key #{key}"
35
+ Diplomat::Kv.put(key, value)
36
+ end
37
+
38
+ def set_key!(key:, value:)
39
+ set_key(key: key, value: value).tap do |retval|
40
+ raise "Unable to set #{key}!" if retval != true
41
+ end
42
+ end
43
+
33
44
  end
34
45
  end
@@ -6,6 +6,7 @@ require 'shipitron/server/docker/build_image'
6
6
  require 'shipitron/server/docker/push_image'
7
7
  require 'shipitron/server/update_ecs_task_definitions'
8
8
  require 'shipitron/server/run_post_build'
9
+ require 'shipitron/server/update_deploy_ref'
9
10
  require 'shipitron/server/update_ecs_services'
10
11
 
11
12
  module Shipitron
@@ -57,6 +58,7 @@ module Shipitron
57
58
  Docker::PushImage,
58
59
  UpdateEcsTaskDefinitions,
59
60
  RunPostBuild,
61
+ UpdateDeployRef,
60
62
  UpdateEcsServices
61
63
  ]
62
64
 
@@ -0,0 +1,36 @@
1
+ require 'shipitron'
2
+ require 'shipitron/consul_keys'
3
+
4
+ module Shipitron
5
+ module Server
6
+ class UpdateDeployRef
7
+ include Metaractor
8
+ include ConsulKeys
9
+
10
+ required :application
11
+ required :docker_image
12
+
13
+ before do
14
+ configure_consul_client!
15
+ end
16
+
17
+ def call
18
+ Logger.info "Updating deploy ref to #{docker_image.tag}"
19
+ set_key!(key: deploy_ref_key, value: docker_image.tag)
20
+ end
21
+
22
+ private
23
+ def application
24
+ context.application
25
+ end
26
+
27
+ def docker_image
28
+ context.docker_image
29
+ end
30
+
31
+ def deploy_ref_key
32
+ fetch_key!(key: "shipitron/#{application}/deploy_ref_key")
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,3 +1,3 @@
1
1
  module Shipitron
2
- VERSION = '0.2.2'
2
+ VERSION = '0.3.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shipitron
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Schlesinger
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-13 00:00:00.000000000 Z
11
+ date: 2016-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -276,6 +276,7 @@ files:
276
276
  - lib/shipitron/server/git/upload_cache.rb
277
277
  - lib/shipitron/server/run_post_build.rb
278
278
  - lib/shipitron/server/transform_cli_args.rb
279
+ - lib/shipitron/server/update_deploy_ref.rb
279
280
  - lib/shipitron/server/update_ecs_services.rb
280
281
  - lib/shipitron/server/update_ecs_task_definitions.rb
281
282
  - lib/shipitron/server/upload_build_cache.rb
@@ -303,7 +304,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
303
304
  version: '0'
304
305
  requirements: []
305
306
  rubyforge_project:
306
- rubygems_version: 2.6.6
307
+ rubygems_version: 2.6.7
307
308
  signing_key:
308
309
  specification_version: 4
309
310
  summary: A deployment tool for use with Docker and ECS.