modulorails 1.3.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +3 -0
- data/lib/generators/modulorails/docker/docker_generator.rb +7 -1
- data/lib/generators/modulorails/docker/templates/Dockerfile.prod.tt +9 -8
- data/lib/generators/modulorails/docker/templates/Dockerfile.tt +3 -4
- data/lib/generators/modulorails/docker/templates/config/database.yml.tt +12 -15
- data/lib/generators/modulorails/docker/templates/docker-compose.prod.yml.tt +8 -11
- data/lib/generators/modulorails/docker/templates/docker-compose.yml.tt +13 -17
- data/lib/generators/modulorails/docker/templates/entrypoints/docker-entrypoint.sh.tt +1 -1
- data/lib/generators/modulorails/docker/templates/entrypoints/webpack-entrypoint.sh.tt +1 -1
- data/lib/generators/modulorails/gitlabci/gitlabci_generator.rb +11 -0
- data/lib/generators/modulorails/gitlabci/templates/.gitlab-ci.yml.tt +45 -63
- data/lib/generators/modulorails/gitlabci/templates/config/deploy/production.yaml.tt +43 -0
- data/lib/generators/modulorails/gitlabci/templates/config/deploy/review.yaml.tt +42 -0
- data/lib/generators/modulorails/gitlabci/templates/config/deploy/staging.yaml.tt +42 -0
- data/lib/generators/modulorails/sidekiq/sidekiq_generator.rb +32 -0
- data/lib/modulorails/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6a06133e9c157d574ab3cc83ffd931e7e61873d7c8deff63c22b8a0657def075
|
4
|
+
data.tar.gz: d345aa7aa32575496041762e43f198001260a003dc811c69ae704f889dde0411
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1594ae1f801bf28f08ec2a86ecc6040f48c513d2c47a2dfb9f0a8a3b69bf2dd7f04d6465aff1041faf80759fb70610ff57a8b02b83bddf4cbdc3ab9c553bdb9b
|
7
|
+
data.tar.gz: 4e4652c68c1ba65d1ce429c5acffbb5e11c8f82effdcdd55735d91cb8c12e442f6a00b5b5099a316b26f8620ef20873c96b5349df4ea58ec24566aaebe75abb1
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,16 @@
|
|
2
2
|
|
3
3
|
This file is used to list changes made in each version of the gem.
|
4
4
|
|
5
|
+
# 1.3.1
|
6
|
+
|
7
|
+
- Update templates according to new devops standards:
|
8
|
+
- Add exec commands in entrypoints.
|
9
|
+
- Upgrade PG and Redis version in docker-compose files.
|
10
|
+
- Upgrade PG and Redis version in test stage in CI.
|
11
|
+
- Add default SECRET_KEY_BASE and optional `yarn install` in `Dockerfile.prod` templates.
|
12
|
+
- Add templates for Kubernetes values files.
|
13
|
+
- Append sidekiq in Kubernetes values files in Sidekiq generator.
|
14
|
+
|
5
15
|
# 1.3.0
|
6
16
|
|
7
17
|
- Update redis configuration in generators.
|
data/README.md
CHANGED
@@ -28,6 +28,9 @@ Modulorails.configure do |config|
|
|
28
28
|
config.project_manager 'The email of the project manager of the application'
|
29
29
|
config.endpoint 'The url to the intranet'
|
30
30
|
config.api_key 'The API key'
|
31
|
+
config.review_base_url 'The base url for the review environments' # optional
|
32
|
+
config.staging_url 'The url for the staging environment' # optional
|
33
|
+
config.production_url 'The url for the production environment' # optional
|
31
34
|
end
|
32
35
|
```
|
33
36
|
|
@@ -8,6 +8,12 @@ class Modulorails::DockerGenerator < Rails::Generators::Base
|
|
8
8
|
desc 'This generator creates Dockerfiles for an app'
|
9
9
|
|
10
10
|
def create_config_file
|
11
|
+
@data = Modulorails.data
|
12
|
+
@adapter = data.adapter
|
13
|
+
@webpack_container_needed = data.webpacker_version.present?
|
14
|
+
@image_name = @data.name.parameterize
|
15
|
+
@environment_name = @data.environment_name
|
16
|
+
|
11
17
|
template 'Dockerfile'
|
12
18
|
template 'Dockerfile.prod'
|
13
19
|
template 'docker-compose.yml'
|
@@ -18,7 +24,7 @@ class Modulorails::DockerGenerator < Rails::Generators::Base
|
|
18
24
|
template 'config/cable.yml'
|
19
25
|
|
20
26
|
# Useless unless project is using Webpacker
|
21
|
-
if
|
27
|
+
if @webpack_container_needed
|
22
28
|
template 'entrypoints/webpack-entrypoint.sh'
|
23
29
|
chmod 'entrypoints/webpack-entrypoint.sh', 0755
|
24
30
|
end
|
@@ -1,7 +1,8 @@
|
|
1
1
|
# BUILD IMAGE
|
2
|
-
FROM ruby:<%=
|
2
|
+
FROM ruby:<%= @data.ruby_version %>-alpine as builder
|
3
3
|
|
4
|
-
ENV RAILS_ENV=production
|
4
|
+
ENV RAILS_ENV=production \
|
5
|
+
SECRET_KEY_BASE=1
|
5
6
|
WORKDIR /app
|
6
7
|
|
7
8
|
RUN apk add --update --no-cache \
|
@@ -11,27 +12,28 @@ RUN apk add --update --no-cache \
|
|
11
12
|
yarn \
|
12
13
|
shared-mime-info \
|
13
14
|
gcompat \
|
14
|
-
<%- adapter
|
15
|
-
<%- if adapter =~ /mysql/ -%>
|
15
|
+
<%- if @adapter =~ /mysql/ -%>
|
16
16
|
mysql-dev
|
17
17
|
<%- else -%>
|
18
18
|
postgresql-dev
|
19
19
|
<%- end -%>
|
20
|
-
RUN gem install bundler -v <%=
|
20
|
+
RUN gem install bundler -v <%= @data.bundler_version %>
|
21
21
|
|
22
22
|
COPY Gemfile Gemfile.lock ./
|
23
23
|
RUN bundle config set --local deployment 'true'
|
24
24
|
RUN bundle check || bundle install --jobs=2 \
|
25
25
|
&& rm -rf vendor/bundle/ruby/*/cache/*
|
26
26
|
|
27
|
+
<%- if @webpack_container_needed -%>
|
27
28
|
COPY package.json yarn.lock ./
|
28
29
|
RUN yarn install
|
30
|
+
<%- end-%>
|
29
31
|
|
30
32
|
COPY . .
|
31
33
|
RUN bundle exec rake assets:precompile
|
32
34
|
|
33
35
|
# FINAL IMAGE
|
34
|
-
FROM ruby:<%=
|
36
|
+
FROM ruby:<%= @data.ruby_version %>-alpine
|
35
37
|
|
36
38
|
ENV RAILS_ENV=development
|
37
39
|
ENV EDITOR=vim
|
@@ -44,8 +46,7 @@ RUN apk add --update --no-cache \
|
|
44
46
|
tzdata \
|
45
47
|
shared-mime-info \
|
46
48
|
vim \
|
47
|
-
<%- adapter
|
48
|
-
<%- if adapter =~ /mysql/ -%>
|
49
|
+
<%- if @adapter =~ /mysql/ -%>
|
49
50
|
mysql-dev \
|
50
51
|
<%- else -%>
|
51
52
|
postgresql-dev \
|
@@ -1,4 +1,4 @@
|
|
1
|
-
FROM ruby:<%=
|
1
|
+
FROM ruby:<%= @data.ruby_version %>-alpine
|
2
2
|
|
3
3
|
ENV RAILS_ENV=development
|
4
4
|
ENV EDITOR=vim
|
@@ -11,13 +11,12 @@ RUN apk add --update --no-cache \
|
|
11
11
|
tzdata \
|
12
12
|
gcompat \
|
13
13
|
vim \
|
14
|
-
<%- adapter
|
15
|
-
<%- if adapter =~ /mysql/ -%>
|
14
|
+
<%- if @adapter =~ /mysql/ -%>
|
16
15
|
mysql-dev
|
17
16
|
<%- else -%>
|
18
17
|
postgresql-dev
|
19
18
|
<%- end -%>
|
20
|
-
RUN gem install bundler -v <%=
|
19
|
+
RUN gem install bundler -v <%= @data.bundler_version %>
|
21
20
|
|
22
21
|
COPY Gemfile Gemfile.lock ./
|
23
22
|
RUN bundle install --jobs=2
|
@@ -1,29 +1,26 @@
|
|
1
|
-
<%-
|
2
|
-
<%- environment_name = Modulorails.data.environment_name -%>
|
3
|
-
<%- adapter = Modulorails.data.adapter -%>
|
4
|
-
<%- if adapter =~ /mysql/ -%>
|
1
|
+
<%- if @adapter =~ /mysql/ -%>
|
5
2
|
development: &default
|
6
3
|
adapter: mysql2
|
7
4
|
encoding: utf8mb4
|
8
5
|
collation: utf8mb4_unicode_ci
|
9
|
-
database: <%%= ENV.fetch('<%= environment_name %>_DATABASE_NAME', '<%= image_name %>') %>
|
10
|
-
username: <%%= ENV.fetch('<%= environment_name %>_DATABASE_USERNAME', 'root') %>
|
11
|
-
password: <%%= ENV.fetch('<%= environment_name %>_DATABASE_PASSWORD', '') %>
|
12
|
-
host: <%%= ENV.fetch('<%= environment_name %>_DATABASE_HOST', 'database') %>
|
13
|
-
port: <%%= ENV.fetch('<%= environment_name %>_DATABASE_PORT', 3306) %>
|
6
|
+
database: <%%= ENV.fetch('<%= @environment_name %>_DATABASE_NAME', '<%= @image_name %>') %>
|
7
|
+
username: <%%= ENV.fetch('<%= @environment_name %>_DATABASE_USERNAME', 'root') %>
|
8
|
+
password: <%%= ENV.fetch('<%= @environment_name %>_DATABASE_PASSWORD', '') %>
|
9
|
+
host: <%%= ENV.fetch('<%= @environment_name %>_DATABASE_HOST', 'database') %>
|
10
|
+
port: <%%= ENV.fetch('<%= @environment_name %>_DATABASE_PORT', 3306) %>
|
14
11
|
<%- else -%>
|
15
12
|
development: &default
|
16
13
|
adapter: postgresql
|
17
|
-
database: <%%= ENV.fetch('<%= environment_name %>_DATABASE_NAME', '<%= image_name %>') %>
|
18
|
-
username: <%%= ENV.fetch('<%= environment_name %>_DATABASE_USERNAME', 'postgres') %>
|
19
|
-
password: <%%= ENV.fetch('<%= environment_name %>_DATABASE_PASSWORD', 'postgres') %>
|
20
|
-
host: <%%= ENV.fetch('<%= environment_name %>_DATABASE_HOST', 'database') %>
|
21
|
-
port: <%%= ENV.fetch('<%= environment_name %>_DATABASE_PORT', 5432) %>
|
14
|
+
database: <%%= ENV.fetch('<%= @environment_name %>_DATABASE_NAME', '<%= @image_name %>') %>
|
15
|
+
username: <%%= ENV.fetch('<%= @environment_name %>_DATABASE_USERNAME', 'postgres') %>
|
16
|
+
password: <%%= ENV.fetch('<%= @environment_name %>_DATABASE_PASSWORD', 'postgres') %>
|
17
|
+
host: <%%= ENV.fetch('<%= @environment_name %>_DATABASE_HOST', 'database') %>
|
18
|
+
port: <%%= ENV.fetch('<%= @environment_name %>_DATABASE_PORT', 5432) %>
|
22
19
|
<%- end -%>
|
23
20
|
|
24
21
|
test:
|
25
22
|
<<: *default
|
26
|
-
database: <%%= ENV.fetch('<%= environment_name %>_TEST_DATABASE_NAME', '<%= image_name %>_test') %>
|
23
|
+
database: <%%= ENV.fetch('<%= @environment_name %>_TEST_DATABASE_NAME', '<%= @image_name %>_test') %>
|
27
24
|
|
28
25
|
staging:
|
29
26
|
<<: *default
|
@@ -1,10 +1,8 @@
|
|
1
1
|
version: '3.7'
|
2
2
|
|
3
|
-
<%- image_name = Modulorails.data.name.parameterize -%>
|
4
|
-
<%- environment_name = Modulorails.data.environment_name -%>
|
5
3
|
services:
|
6
4
|
app:
|
7
|
-
image: modulotechgroup/<%= image_name %>
|
5
|
+
image: modulotechgroup/<%= @image_name %>
|
8
6
|
build:
|
9
7
|
context: .
|
10
8
|
dockerfile: Dockerfile.prod
|
@@ -16,36 +14,35 @@ services:
|
|
16
14
|
environment:
|
17
15
|
RAILS_ENV: production
|
18
16
|
URL: http://localhost:3000
|
19
|
-
<%= environment_name %>_DATABASE_HOST: database
|
20
|
-
<%= environment_name %>_DATABASE_NAME: <%= image_name %>
|
17
|
+
<%= @environment_name %>_DATABASE_HOST: database
|
18
|
+
<%= @environment_name %>_DATABASE_NAME: <%= @image_name %>
|
21
19
|
RAILS_SERVE_STATIC_FILES: 'true'
|
22
20
|
REDIS_URL: redis://redis:6379/1
|
23
21
|
|
24
|
-
<%- adapter
|
25
|
-
<%- if adapter =~ /mysql/ -%>
|
22
|
+
<%- if @adapter =~ /mysql/ -%>
|
26
23
|
database:
|
27
24
|
image: mysql/mysql-server:8.0
|
28
25
|
volumes:
|
29
26
|
- db_data:/var/lib/mysql
|
30
27
|
environment:
|
31
28
|
MYSQL_ALLOW_EMPTY_PASSWORD: 'true'
|
32
|
-
MYSQL_DATABASE: <%= image_name %>
|
29
|
+
MYSQL_DATABASE: <%= @image_name %>
|
33
30
|
MYSQL_ROOT_HOST: '%'
|
34
31
|
<%- else -%>
|
35
32
|
database:
|
36
|
-
image: postgres:
|
33
|
+
image: postgres:15-alpine
|
37
34
|
volumes:
|
38
35
|
- db_data:/var/lib/postgresql/data
|
39
36
|
environment:
|
40
37
|
POSTGRES_USER: postgres
|
41
38
|
POSTGRES_PASSWORD: postgres
|
42
|
-
POSTGRES_DB: <%= image_name %>
|
39
|
+
POSTGRES_DB: <%= @image_name %>
|
43
40
|
LC_COLLATE: 'en_US.UTF-8'
|
44
41
|
LC_CTYPE: 'en_US.UTF-8'
|
45
42
|
<%- end -%>
|
46
43
|
|
47
44
|
redis:
|
48
|
-
image: redis:
|
45
|
+
image: redis:7-alpine
|
49
46
|
|
50
47
|
# Define the volumes references in the services
|
51
48
|
volumes:
|
@@ -1,10 +1,8 @@
|
|
1
1
|
version: '3.7'
|
2
2
|
|
3
|
-
<%- image_name = Modulorails.data.name.parameterize -%>
|
4
|
-
<%- environment_name = Modulorails.data.environment_name -%>
|
5
3
|
services:
|
6
4
|
app:
|
7
|
-
image: modulotechgroup/<%= image_name %>:dev
|
5
|
+
image: modulotechgroup/<%= @image_name %>:dev
|
8
6
|
build:
|
9
7
|
context: .
|
10
8
|
dockerfile: Dockerfile
|
@@ -18,48 +16,46 @@ services:
|
|
18
16
|
environment:
|
19
17
|
RAILS_ENV: development
|
20
18
|
URL: http://localhost:3000
|
21
|
-
<%= environment_name %>_DATABASE_HOST: database
|
22
|
-
<%= environment_name %>_DATABASE_NAME: <%= image_name %>
|
19
|
+
<%= @environment_name %>_DATABASE_HOST: database
|
20
|
+
<%= @environment_name %>_DATABASE_NAME: <%= @image_name %>
|
23
21
|
REDIS_URL: redis://redis:6379/1
|
24
22
|
entrypoint: ./entrypoints/docker-entrypoint.sh
|
25
23
|
stdin_open: true
|
26
24
|
tty: true
|
27
25
|
|
28
|
-
<%- adapter
|
29
|
-
<%- if adapter =~ /mysql/ -%>
|
26
|
+
<%- if @adapter =~ /mysql/ -%>
|
30
27
|
database:
|
31
28
|
image: mysql/mysql-server:8.0
|
32
29
|
volumes:
|
33
30
|
- db_data:/var/lib/mysql
|
34
31
|
environment:
|
35
32
|
MYSQL_ALLOW_EMPTY_PASSWORD: 'true'
|
36
|
-
MYSQL_DATABASE: <%= image_name %>
|
33
|
+
MYSQL_DATABASE: <%= @image_name %>
|
37
34
|
MYSQL_ROOT_HOST: '%'
|
38
|
-
<%- else-%>
|
35
|
+
<%- else -%>
|
39
36
|
database:
|
40
|
-
image: postgres:
|
37
|
+
image: postgres:15-alpine
|
41
38
|
volumes:
|
42
39
|
- db_data:/var/lib/postgresql/data
|
43
40
|
environment:
|
44
41
|
POSTGRES_USER: postgres
|
45
42
|
POSTGRES_PASSWORD: postgres
|
46
|
-
POSTGRES_DB: <%= image_name %>
|
43
|
+
POSTGRES_DB: <%= @image_name %>
|
47
44
|
LC_COLLATE: 'en_US.UTF-8'
|
48
45
|
LC_CTYPE: 'en_US.UTF-8'
|
49
|
-
<%- end-%>
|
46
|
+
<%- end -%>
|
50
47
|
|
51
48
|
redis:
|
52
|
-
image: redis:
|
49
|
+
image: redis:7-alpine
|
53
50
|
|
54
51
|
mailcatcher:
|
55
52
|
image: dockage/mailcatcher
|
56
53
|
ports:
|
57
54
|
- 1080:1080
|
58
55
|
|
59
|
-
<%- webpack_container_needed
|
60
|
-
<%- if webpack_container_needed -%>
|
56
|
+
<%- if @webpack_container_needed -%>
|
61
57
|
webpack:
|
62
|
-
image: modulotechgroup/<%= image_name %>:dev
|
58
|
+
image: modulotechgroup/<%= @image_name %>:dev
|
63
59
|
build:
|
64
60
|
context: .
|
65
61
|
dockerfile: Dockerfile
|
@@ -72,7 +68,7 @@ services:
|
|
72
68
|
NODE_ENV: development
|
73
69
|
RAILS_ENV: development
|
74
70
|
WEBPACKER_DEV_SERVER_HOST: 0.0.0.0
|
75
|
-
<%- end-%>
|
71
|
+
<%- end -%>
|
76
72
|
|
77
73
|
volumes:
|
78
74
|
db_data:
|
@@ -8,8 +8,19 @@ class Modulorails::GitlabciGenerator < Rails::Generators::Base
|
|
8
8
|
desc 'This generator creates a template for a .gitlab-ci.yml file at root'
|
9
9
|
|
10
10
|
def create_config_file
|
11
|
+
@data = Modulorails.data
|
12
|
+
@image_name = @data.name.parameterize
|
13
|
+
@environment_name = @data.environment_name
|
14
|
+
@adapter = data.adapter
|
15
|
+
@review_base_url = @data.review_base_url
|
16
|
+
@staging_url = @data.staging_url
|
17
|
+
@production_url = @data.production_url
|
18
|
+
|
11
19
|
# Update the gitlab-ci template
|
12
20
|
template '.gitlab-ci.yml'
|
21
|
+
template 'config/deploy/production.yaml' if @production_url.present?
|
22
|
+
template 'config/deploy/staging.yaml' if @staging_url.present?
|
23
|
+
template 'config/deploy/review.yaml' if @review_base_url.present?
|
13
24
|
|
14
25
|
# Remove the database-ci template if it exists.
|
15
26
|
# It used to be referenced by the gitlab-ci template.
|
@@ -1,5 +1,3 @@
|
|
1
|
-
<%- image_name = Modulorails.data.name.parameterize -%>
|
2
|
-
<%- environment_name = Modulorails.data.environment_name -%>
|
3
1
|
include:
|
4
2
|
- project: 'modulosource/modulotech/devops/gitlab-ci-templates'
|
5
3
|
file:
|
@@ -7,26 +5,17 @@ include:
|
|
7
5
|
- '/templates/integration.gitlab-ci.yml'
|
8
6
|
- '/templates/docker-buildx.gitlab-ci.yml'
|
9
7
|
|
10
|
-
services:
|
11
|
-
<%- adapter = Modulorails.data.adapter -%>
|
12
|
-
<%- if adapter =~ /mysql/ -%>
|
13
|
-
- mysql:8.0
|
14
|
-
<%- else -%>
|
15
|
-
- postgres:13.5
|
16
|
-
<%- end -%>
|
17
|
-
- redis:6.2
|
18
|
-
|
19
8
|
variables:
|
20
|
-
IMAGE_NAME: <%= image_name %>
|
21
|
-
<%- if adapter =~ /mysql/ -%>
|
22
|
-
MYSQL_DATABASE: <%= image_name %>_test
|
9
|
+
IMAGE_NAME: <%= @image_name %>
|
10
|
+
<%- if @adapter =~ /mysql/ -%>
|
11
|
+
MYSQL_DATABASE: <%= @image_name %>_test
|
23
12
|
MYSQL_ALLOW_EMPTY_PASSWORD: 'true'
|
24
|
-
<%= environment_name %>_DATABASE_HOST: mysql
|
13
|
+
<%= @environment_name %>_DATABASE_HOST: mysql
|
25
14
|
<%- else -%>
|
26
|
-
POSTGRES_DB: <%= image_name %>_test
|
15
|
+
POSTGRES_DB: <%= @image_name %>_test
|
27
16
|
POSTGRES_USER: postgres
|
28
17
|
POSTGRES_PASSWORD: postgres
|
29
|
-
<%= environment_name %>_DATABASE_HOST: postgres
|
18
|
+
<%= @environment_name %>_DATABASE_HOST: postgres
|
30
19
|
<%- end -%>
|
31
20
|
|
32
21
|
stages:
|
@@ -34,35 +23,44 @@ stages:
|
|
34
23
|
- build
|
35
24
|
- deploy
|
36
25
|
|
26
|
+
build_integration_image:
|
27
|
+
extends: .build_integration_image
|
28
|
+
|
37
29
|
test:
|
38
30
|
extends: .test
|
31
|
+
services:
|
32
|
+
<%- if @adapter =~ /mysql/ -%>
|
33
|
+
- mysql:8-alpine
|
34
|
+
<%- else -%>
|
35
|
+
- postgres:15-alpine
|
36
|
+
<%- end -%>
|
37
|
+
- redis:7-alpine
|
38
|
+
variables:
|
39
|
+
RAILS_ENV: test
|
39
40
|
script:
|
40
|
-
-
|
41
|
-
-
|
42
|
-
-
|
43
|
-
|
44
|
-
build_integration_image:
|
45
|
-
extends: .build_integration_image
|
41
|
+
- bundle exec rake db:create
|
42
|
+
- bundle exec rake db:migrate:reset
|
43
|
+
- bundle exec rspec --format progress --format RspecJunitFormatter --out rspec.xml
|
46
44
|
|
47
45
|
docker_build:
|
48
46
|
extends: .docker_buildx_push
|
49
47
|
only:
|
50
48
|
- merge_requests
|
51
49
|
- staging
|
50
|
+
- master
|
52
51
|
|
53
|
-
<%- review_base_url
|
54
|
-
<%- if review_base_url.present? -%>
|
52
|
+
<%- if @review_base_url.present? -%>
|
55
53
|
deploy_review:
|
56
54
|
extends: .deploy_helm
|
57
55
|
variables:
|
58
|
-
NAMESPACE: <%= image_name %>-$CI_ENVIRONMENT_SLUG
|
59
|
-
NAME: <%= image_name %>
|
60
|
-
CHART_NAME: <%= image_name %>
|
61
|
-
CONFIG_FILE: config/deploy/
|
62
|
-
EXTRA_VARS: --set image.tag=$CI_COMMIT_SHORT_SHA --set ingress.hosts[0].host=${CI_ENVIRONMENT_SLUG}.<%= review_base_url %> --set ingress.tls[0].hosts[0]=${CI_ENVIRONMENT_SLUG}.<%= review_base_url %> --set env.url=${CI_ENVIRONMENT_SLUG}.<%= review_base_url %> --set database.
|
56
|
+
NAMESPACE: <%= @image_name %>-$CI_ENVIRONMENT_SLUG
|
57
|
+
NAME: <%= @image_name %>
|
58
|
+
CHART_NAME: <%= @image_name %>
|
59
|
+
CONFIG_FILE: config/deploy/review.yaml
|
60
|
+
EXTRA_VARS: --set image.tag=$CI_COMMIT_SHORT_SHA --set ingress.hosts[0].host=${CI_ENVIRONMENT_SLUG}.<%= @review_base_url %> --set ingress.tls[0].hosts[0]=${CI_ENVIRONMENT_SLUG}.<%= @review_base_url %> --set env.url=${CI_ENVIRONMENT_SLUG}.<%= @review_base_url %> --set database.url=$DATABASE_URL --set master_key.key=$MASTER_KEY
|
63
61
|
environment:
|
64
62
|
name: review/$CI_COMMIT_REF_SLUG
|
65
|
-
url: https://${CI_ENVIRONMENT_SLUG}.<%= review_base_url %>
|
63
|
+
url: https://${CI_ENVIRONMENT_SLUG}.<%= @review_base_url %>
|
66
64
|
on_stop: stop_review
|
67
65
|
auto_stop_in: 3 days
|
68
66
|
only:
|
@@ -71,56 +69,40 @@ deploy_review:
|
|
71
69
|
stop_review:
|
72
70
|
extends: .stop_review
|
73
71
|
variables:
|
74
|
-
NAMESPACE: <%= image_name %>-$CI_ENVIRONMENT_SLUG
|
75
|
-
NAME: <%= image_name %>
|
72
|
+
NAMESPACE: <%= @image_name %>-$CI_ENVIRONMENT_SLUG
|
73
|
+
NAME: <%= @image_name %>
|
76
74
|
only:
|
77
75
|
- merge_requests
|
78
76
|
<%- end -%>
|
79
77
|
|
80
|
-
<%- staging_url
|
81
|
-
<%- if staging_url.present? -%>
|
78
|
+
<%- if @staging_url.present? -%>
|
82
79
|
deploy_staging:
|
83
80
|
extends: .deploy_helm
|
84
81
|
variables:
|
85
|
-
NAMESPACE: <%= image_name %>
|
86
|
-
NAME: <%= image_name %>
|
87
|
-
CHART_NAME: <%= image_name %>
|
88
|
-
CONFIG_FILE: config/deploy/
|
89
|
-
EXTRA_VARS: --set image.tag=$CI_COMMIT_SHORT_SHA --set database.
|
82
|
+
NAMESPACE: <%= @image_name %>
|
83
|
+
NAME: <%= @image_name %>
|
84
|
+
CHART_NAME: <%= @image_name %>
|
85
|
+
CONFIG_FILE: config/deploy/staging.yaml
|
86
|
+
EXTRA_VARS: --set image.tag=$CI_COMMIT_SHORT_SHA --set database.url=$DATABASE_URL --set master_key.key=$MASTER_KEY
|
90
87
|
environment:
|
91
88
|
name: staging
|
92
|
-
url: https://<%= staging_url %>
|
93
|
-
only:
|
94
|
-
- staging
|
95
|
-
<%- else -%>
|
96
|
-
deploy_staging:
|
97
|
-
extends: .deploy_capistrano
|
98
|
-
variables:
|
99
|
-
STAGE: staging
|
89
|
+
url: https://<%= @staging_url %>
|
100
90
|
only:
|
101
91
|
- staging
|
102
92
|
<%- end -%>
|
103
93
|
|
104
|
-
<%- production_url
|
105
|
-
<%- if production_url.present? -%>
|
94
|
+
<%- if @production_url.present? -%>
|
106
95
|
deploy_production:
|
107
96
|
extends: .deploy_helm
|
108
97
|
variables:
|
109
|
-
NAMESPACE: <%= image_name %>
|
110
|
-
NAME: <%= image_name %>
|
111
|
-
CHART_NAME: <%= image_name %>
|
112
|
-
CONFIG_FILE: config/deploy/
|
113
|
-
EXTRA_VARS: --set image.tag=$CI_COMMIT_SHORT_SHA
|
98
|
+
NAMESPACE: <%= @image_name %>
|
99
|
+
NAME: <%= @image_name %>
|
100
|
+
CHART_NAME: <%= @image_name %>
|
101
|
+
CONFIG_FILE: config/deploy/production.yaml
|
102
|
+
EXTRA_VARS: --set image.tag=$CI_COMMIT_SHORT_SHA
|
114
103
|
environment:
|
115
104
|
name: production
|
116
|
-
url: https://<%= production_url %>
|
117
|
-
only:
|
118
|
-
- master
|
119
|
-
<%- else -%>
|
120
|
-
deploy_production:
|
121
|
-
extends: .deploy_capistrano
|
122
|
-
variables:
|
123
|
-
STAGE: production
|
105
|
+
url: https://<%= @production_url %>
|
124
106
|
only:
|
125
107
|
- master
|
126
108
|
<%- end -%>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
imagePullSecrets:
|
2
|
+
- name: regcred
|
3
|
+
|
4
|
+
ingress:
|
5
|
+
enabled: true
|
6
|
+
annotations:
|
7
|
+
kubernetes.io/ingress.class: nginx
|
8
|
+
kubernetes.io/tls-acme: 'true'
|
9
|
+
hosts:
|
10
|
+
- host: <%= @production_url %>
|
11
|
+
paths:
|
12
|
+
- path: /
|
13
|
+
tls:
|
14
|
+
- secretName: <%= @image_name %>
|
15
|
+
hosts:
|
16
|
+
- <%= @production_url %>
|
17
|
+
|
18
|
+
resources:
|
19
|
+
requests:
|
20
|
+
cpu: 100m
|
21
|
+
memory: 512Mi
|
22
|
+
limits:
|
23
|
+
memory: 512Mi
|
24
|
+
|
25
|
+
autoscaling:
|
26
|
+
enabled: true
|
27
|
+
minReplicas: 2
|
28
|
+
maxReplicas: 10
|
29
|
+
targetCPUUtilizationPercentage: 80
|
30
|
+
|
31
|
+
database:
|
32
|
+
existingSecret: 'database-credential'
|
33
|
+
|
34
|
+
master_key:
|
35
|
+
existingSecret: 'masterkey-credential'
|
36
|
+
|
37
|
+
env:
|
38
|
+
RAILS_ENV: production
|
39
|
+
URL: https://<%= @production_url %>/
|
40
|
+
|
41
|
+
redis:
|
42
|
+
enabled: false
|
43
|
+
existingSecret: 'redis-credential'
|
@@ -0,0 +1,42 @@
|
|
1
|
+
imagePullSecrets:
|
2
|
+
- name: regcred
|
3
|
+
|
4
|
+
ingress:
|
5
|
+
enabled: true
|
6
|
+
annotations:
|
7
|
+
kubernetes.io/ingress.class: nginx
|
8
|
+
kubernetes.io/tls-acme: 'true'
|
9
|
+
hosts:
|
10
|
+
- host: $REVIEW_URL
|
11
|
+
paths:
|
12
|
+
- path: /
|
13
|
+
tls:
|
14
|
+
- secretName: <%= @image_name %>
|
15
|
+
hosts:
|
16
|
+
- $REVIEW_URL
|
17
|
+
|
18
|
+
resources:
|
19
|
+
requests:
|
20
|
+
cpu: 100m
|
21
|
+
memory: 512Mi
|
22
|
+
limits:
|
23
|
+
memory: 512Mi
|
24
|
+
|
25
|
+
autoscaling:
|
26
|
+
enabled: true
|
27
|
+
minReplicas: 1
|
28
|
+
maxReplicas: 10
|
29
|
+
targetCPUUtilizationPercentage: 80
|
30
|
+
|
31
|
+
database:
|
32
|
+
url: $DATABASE_URL
|
33
|
+
|
34
|
+
master_key:
|
35
|
+
key: $MASTER_KEY
|
36
|
+
|
37
|
+
env:
|
38
|
+
RAILS_ENV: staging
|
39
|
+
URL: https://$REVIEW_URL/
|
40
|
+
|
41
|
+
redis:
|
42
|
+
enabled: true
|
@@ -0,0 +1,42 @@
|
|
1
|
+
imagePullSecrets:
|
2
|
+
- name: regcred
|
3
|
+
|
4
|
+
ingress:
|
5
|
+
enabled: true
|
6
|
+
annotations:
|
7
|
+
kubernetes.io/ingress.class: nginx
|
8
|
+
kubernetes.io/tls-acme: 'true'
|
9
|
+
hosts:
|
10
|
+
- host: <%= @staging_url %>
|
11
|
+
paths:
|
12
|
+
- path: /
|
13
|
+
tls:
|
14
|
+
- secretName: <%= @image_name %>
|
15
|
+
hosts:
|
16
|
+
- <%= @staging_url %>
|
17
|
+
|
18
|
+
resources:
|
19
|
+
requests:
|
20
|
+
cpu: 100m
|
21
|
+
memory: 512Mi
|
22
|
+
limits:
|
23
|
+
memory: 512Mi
|
24
|
+
|
25
|
+
autoscaling:
|
26
|
+
enabled: true
|
27
|
+
minReplicas: 1
|
28
|
+
maxReplicas: 10
|
29
|
+
targetCPUUtilizationPercentage: 80
|
30
|
+
|
31
|
+
database:
|
32
|
+
url: $DATABASE_URL
|
33
|
+
|
34
|
+
master_key:
|
35
|
+
key: $MASTER_KEY
|
36
|
+
|
37
|
+
env:
|
38
|
+
RAILS_ENV: staging
|
39
|
+
URL: https://<%= @staging_url %>/
|
40
|
+
|
41
|
+
redis:
|
42
|
+
enabled: true
|
@@ -16,6 +16,12 @@ class Modulorails::SidekiqGenerator < Rails::Generators::Base
|
|
16
16
|
add_to_docker_compose_yml_file(Rails.root.join('docker-compose.prod.yml'))
|
17
17
|
end
|
18
18
|
|
19
|
+
def add_to_deploy_files
|
20
|
+
add_to_deploy_file(Rails.root.join('config/deploy/production.yaml'))
|
21
|
+
add_to_deploy_file(Rails.root.join('config/deploy/staging.yaml'))
|
22
|
+
add_to_deploy_file(Rails.root.join('config/deploy/review.yaml'))
|
23
|
+
end
|
24
|
+
|
19
25
|
def add_to_gemfile
|
20
26
|
gemfile_path = Rails.root.join('Gemfile')
|
21
27
|
|
@@ -143,4 +149,30 @@ class Modulorails::SidekiqGenerator < Rails::Generators::Base
|
|
143
149
|
end
|
144
150
|
end
|
145
151
|
end
|
152
|
+
|
153
|
+
def add_to_deploy_file(file_path)
|
154
|
+
# Do nothing if file does not exists or Sidekiq is already enabled
|
155
|
+
return if !File.exist?(file_path) || File.read(file_path).match?(/^ {2}sidekiq:$/)
|
156
|
+
|
157
|
+
# Add sidekiq to deploy file
|
158
|
+
insert_into_file file_path do
|
159
|
+
<<-YAML
|
160
|
+
|
161
|
+
sidekiq:
|
162
|
+
enabled: true
|
163
|
+
resources:
|
164
|
+
requests:
|
165
|
+
cpu: 100m
|
166
|
+
memory: 512Mi
|
167
|
+
limits:
|
168
|
+
cpu: 100m
|
169
|
+
memory: 512Mi
|
170
|
+
autoscaling:
|
171
|
+
enabled: true
|
172
|
+
minReplicas: 1
|
173
|
+
maxReplicas: 10
|
174
|
+
targetCPUUtilizationPercentage: 80
|
175
|
+
YAML
|
176
|
+
end
|
177
|
+
end
|
146
178
|
end
|
data/lib/modulorails/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: modulorails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthieu Ciappara
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: git
|
@@ -211,6 +211,9 @@ files:
|
|
211
211
|
- lib/generators/modulorails/gitlabci/gitlabci_generator.rb
|
212
212
|
- lib/generators/modulorails/gitlabci/templates/.gitlab-ci.yml.tt
|
213
213
|
- lib/generators/modulorails/gitlabci/templates/.modulorails-gitlab-ci
|
214
|
+
- lib/generators/modulorails/gitlabci/templates/config/deploy/production.yaml.tt
|
215
|
+
- lib/generators/modulorails/gitlabci/templates/config/deploy/review.yaml.tt
|
216
|
+
- lib/generators/modulorails/gitlabci/templates/config/deploy/staging.yaml.tt
|
214
217
|
- lib/generators/modulorails/healthcheck/health_check_generator.rb
|
215
218
|
- lib/generators/modulorails/healthcheck/templates/.modulorails-health_check
|
216
219
|
- lib/generators/modulorails/healthcheck/templates/config/initializers/health_check.rb.tt
|