shiplane 0.2.2 → 0.2.6
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 +4 -4
- data/README.md +6 -0
- data/lib/capistrano/tasks/capistrano_stubs.rake +16 -0
- data/lib/generators/shiplane/install/templates/deploy.rb.erb +40 -12
- data/lib/generators/shiplane/install/templates/production_dockerfile_stages.erb +4 -1
- data/lib/generators/shiplane/install/templates/shiplane.yml.erb +4 -4
- data/lib/shiplane/build.rb +11 -1
- data/lib/shiplane/deploy/container_configuration.rb +5 -1
- data/lib/shiplane/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b5acdecf601b6e3dcc169a7034ba182339401e432a4ede3a718f0fce112f400
|
4
|
+
data.tar.gz: 311b91b9388650ccdf260dca0a92f99c776019e182a05044b31fb352a0a5a51b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3fd03c6026a3a18cbcbdf974830f826c4c766712b7859de225a86b50c15e45970e9ac03a531204af708a5e81ffa8e79f3fbe39b8640f7e9443b2b68c19c0a7eb
|
7
|
+
data.tar.gz: dda7a3732b07058709461b24deccf24a9c471381af8667e915344e0ee1dcb9f7ac3b4e969e7e9d93ef1f541eeb064c491858aa104733e7485258f838bc90b926
|
data/README.md
CHANGED
@@ -131,6 +131,12 @@ You can run a deployment like so:
|
|
131
131
|
bundle exec cap production deploy
|
132
132
|
```
|
133
133
|
|
134
|
+
You can also deploy a specific Git SHA using the following syntax:
|
135
|
+
|
136
|
+
```sh
|
137
|
+
bundle exec cap production deploy[<sha>]
|
138
|
+
```
|
139
|
+
|
134
140
|
### Troubleshooting
|
135
141
|
This is as much a reminder to me as anyone else. If a new version of the gem has just been released and you are trying to pull it, make sure to run the following if bundler fails:
|
136
142
|
```
|
@@ -12,6 +12,22 @@ namespace :deploy do
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
+
Rake::Task["deploy"].clear
|
16
|
+
task :deploy, :sha do |t, args|
|
17
|
+
sha = args[:sha] || fetch(:sha) || `git rev-parse HEAD`.chomp
|
18
|
+
set :sha, sha
|
19
|
+
|
20
|
+
set(:deploying, true)
|
21
|
+
%w{ starting started
|
22
|
+
updating updated
|
23
|
+
publishing published
|
24
|
+
finishing finished }.each do |task|
|
25
|
+
invoke "deploy:#{task}"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
Rake::Task["default"].clear
|
29
|
+
task default: :deploy
|
30
|
+
|
15
31
|
|
16
32
|
# deploy
|
17
33
|
# deploy:check
|
@@ -8,7 +8,7 @@ lock '3.11.0'
|
|
8
8
|
set :application, 'podcaster'
|
9
9
|
set :repo_url, 'git@github.com:kirillian/podcaster.git'
|
10
10
|
|
11
|
-
set :deploy_to, '/var/www/
|
11
|
+
set :deploy_to, '/var/www/my_app_network'
|
12
12
|
|
13
13
|
# Default value for :log_level is :debug
|
14
14
|
# set :log_level, :debug
|
@@ -54,8 +54,21 @@ set :sha, `git rev-parse HEAD`.chomp
|
|
54
54
|
set :shiplane_docker_registry_username, ENV['DOCKERHUB_USERNAME']
|
55
55
|
set :shiplane_docker_registry_password, ENV['DOCKERHUB_PASSWORD']
|
56
56
|
|
57
|
+
|
58
|
+
set :shiplane_build_environment_variables, {
|
59
|
+
# The following example Fetches RAILS_ENV from your Capistrano environment-specific configuration
|
60
|
+
# RAILS_ENV: proc { fetch(:rails_env, 'production') },
|
61
|
+
}
|
62
|
+
|
63
|
+
# The following setting points shiplane to Github's Registry
|
64
|
+
# set :shiplane_docker_registry_url, 'ghcr.io'
|
65
|
+
|
66
|
+
# The following settings assign the username and token/password needed to login to a given registry
|
67
|
+
# set :shiplane_docker_registry_username, ENV['SHIPLANE_CONTAINER_REGISTRY_USERNAME']
|
68
|
+
# set :shiplane_docker_registry_token, ENV['SHIPLANE_CONTAINER_REGISTRY_TOKEN']
|
69
|
+
|
57
70
|
set :shiplane_networks, {
|
58
|
-
|
71
|
+
my_app_network: {
|
59
72
|
connections: [
|
60
73
|
"nginx_reverse_proxy",
|
61
74
|
"nginx-proxy-letsencrypt",
|
@@ -65,28 +78,28 @@ set :shiplane_networks, {
|
|
65
78
|
|
66
79
|
set :shiplane_containers, {
|
67
80
|
app: {
|
68
|
-
alias: '
|
81
|
+
alias: 'my_app-app',
|
69
82
|
volumes: [],
|
70
83
|
environment: [],
|
71
84
|
expose: 3000,
|
72
85
|
capistrano_role: "docker",
|
73
|
-
repo: "
|
86
|
+
repo: "my_docker_repo_account_name/my_docker_repo",
|
74
87
|
command: 'bin/start',
|
75
|
-
virtual_host: "
|
76
|
-
letsencrypt_email: "john.epperson@
|
88
|
+
virtual_host: "my_app.com",
|
89
|
+
letsencrypt_email: "john.epperson@my_app_network.com",
|
77
90
|
networks: [
|
78
|
-
"
|
91
|
+
"my_app_network"
|
79
92
|
],
|
80
93
|
},
|
81
94
|
sidekiq: {
|
82
|
-
alias: '
|
95
|
+
alias: 'my_app-sidekiq',
|
83
96
|
volumes: [],
|
84
97
|
environment: [],
|
85
98
|
capistrano_role: "docker",
|
86
|
-
repo: "
|
99
|
+
repo: "my_docker_repo_account_name/my_docker_repo",
|
87
100
|
command: 'bin/start_sidekiq_workers',
|
88
101
|
networks: [
|
89
|
-
"
|
102
|
+
"my_app_network"
|
90
103
|
],
|
91
104
|
},
|
92
105
|
redis: {
|
@@ -101,22 +114,37 @@ set :shiplane_containers, {
|
|
101
114
|
repo: "redis",
|
102
115
|
tag: "4.0.9-alpine",
|
103
116
|
networks: [
|
104
|
-
"
|
117
|
+
"my_app_network"
|
105
118
|
],
|
119
|
+
deploy: {
|
120
|
+
# This setting will tell shiplane NOT to restart this container every deploy
|
121
|
+
restart: false,
|
122
|
+
},
|
106
123
|
},
|
107
124
|
postgres: {
|
108
125
|
alias: 'postgres',
|
109
126
|
volumes: [
|
110
127
|
"/var/lib/postgres/data:/var/lib/postgresql/data",
|
111
128
|
],
|
129
|
+
environment: {
|
130
|
+
POSTGRES_PASSWORD: ENV['DATABASE_PASSWORD'],
|
131
|
+
POSTGRES_USER: ENV['DATABASE_USERNAME'],
|
132
|
+
},
|
133
|
+
flags: {
|
134
|
+
'shm-size' => '256MB',
|
135
|
+
},
|
112
136
|
expose: 5432,
|
113
137
|
publish: 5432,
|
114
138
|
capistrano_role: "docker",
|
115
139
|
repo: "postgres",
|
116
140
|
tag: "9.6",
|
117
141
|
networks: [
|
118
|
-
"
|
142
|
+
"my_app_network"
|
119
143
|
],
|
144
|
+
deploy: {
|
145
|
+
# This setting will tell shiplane NOT to restart this container every deploy
|
146
|
+
restart: false,
|
147
|
+
},
|
120
148
|
},
|
121
149
|
}
|
122
150
|
|
@@ -6,6 +6,8 @@ COPY . $APP_PATH
|
|
6
6
|
|
7
7
|
WORKDIR $APP_PATH
|
8
8
|
|
9
|
+
ARG RAILS_ENV production
|
10
|
+
ENV RAILS_ENV $RAILS_ENV
|
9
11
|
ARG GITHUB_TOKEN
|
10
12
|
ENV GITHUB_TOKEN $GITHUB_TOKEN
|
11
13
|
ENV SHIPLANE building
|
@@ -36,7 +38,8 @@ WORKDIR $APP_PATH
|
|
36
38
|
RUN bundle config --local path vendor/bundle
|
37
39
|
RUN bundle config --local without development:test:assets
|
38
40
|
|
39
|
-
|
41
|
+
ARG RAILS_ENV production
|
42
|
+
ENV RAILS_ENV $RAILS_ENV
|
40
43
|
ENV SHIPLANE running
|
41
44
|
ENV RAILS_LOG_TO_STDOUT true
|
42
45
|
ENV RAILS_SERVE_STATIC_FILES true
|
@@ -6,8 +6,8 @@ project:
|
|
6
6
|
bootstrap:
|
7
7
|
env_file: .env.production
|
8
8
|
chef-bootstrapper:
|
9
|
-
package_name: chefdk_3.
|
10
|
-
package_url: https://packages.chef.io/files/stable/chefdk/3.
|
9
|
+
package_name: chefdk_3.13.1-1_amd64.deb
|
10
|
+
package_url: https://packages.chef.io/files/stable/chefdk/3.13.1/ubuntu/16.04/chefdk_3.13.1-1_amd64.deb
|
11
11
|
build:
|
12
12
|
registry:
|
13
13
|
# url: ghcr.io # for Github Container Service. Should work for similar services such as Gitlab
|
@@ -34,9 +34,9 @@ build:
|
|
34
34
|
- services.container-name.depends_on
|
35
35
|
deploy:
|
36
36
|
servers:
|
37
|
-
#
|
37
|
+
# `server-url` is your server domain or ip address here (e.g. `12.345.67.89` or `myapp.com`)
|
38
38
|
server-url:
|
39
|
-
# Only set this flag if you need docker to run as
|
39
|
+
# Only set this flag if you need docker to escalate permissions and run everything as sudo (default Ubuntu AMI on AWS requires this)
|
40
40
|
requires_sudo: false
|
41
41
|
# Put SSH options here
|
42
42
|
# ssh_options:
|
data/lib/shiplane/build.rb
CHANGED
@@ -19,6 +19,16 @@ module Shiplane
|
|
19
19
|
@postfix = postfix
|
20
20
|
|
21
21
|
Dotenv.overload File.join(Dir.pwd, build_config.fetch('environment_file', '.env'))
|
22
|
+
|
23
|
+
# Add any ENV variable overrides from the capistrano configuration
|
24
|
+
environment_variable_overrides = fetch(:shiplane_build_environment_variables, {})
|
25
|
+
environment_variable_overrides.each do |key, value|
|
26
|
+
if value.is_a? Proc
|
27
|
+
ENV[key.to_s] = value.call
|
28
|
+
else
|
29
|
+
ENV[key.to_s] = value
|
30
|
+
end
|
31
|
+
end
|
22
32
|
end
|
23
33
|
|
24
34
|
def build!
|
@@ -73,7 +83,7 @@ module Shiplane
|
|
73
83
|
def token_login_command
|
74
84
|
@token_login_command ||= [
|
75
85
|
'echo',
|
76
|
-
login_token,
|
86
|
+
"\"#{login_token}\"",
|
77
87
|
'|',
|
78
88
|
'docker',
|
79
89
|
'login',
|
@@ -44,7 +44,11 @@ module Shiplane
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def virtual_host
|
47
|
-
@virtual_host
|
47
|
+
return @virtual_host if defined?(@virtual_host) && @virtual_host
|
48
|
+
|
49
|
+
if options[:virtual_host]
|
50
|
+
@virtual_host = options[:virtual_host].is_a?(Proc) ? options[:virtual_host].call : options[:virtual_host]
|
51
|
+
end
|
48
52
|
end
|
49
53
|
|
50
54
|
def letsencrypt_host
|
data/lib/shiplane/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shiplane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Epperson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: shiplane_bootstrappers_chef
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.2.
|
19
|
+
version: 0.2.6
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.2.
|
26
|
+
version: 0.2.6
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: shiplane_deployers_capistrano_docker
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.2.
|
33
|
+
version: 0.2.6
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.2.
|
40
|
+
version: 0.2.6
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: dotenv
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|