shipitron 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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.