satorix-rails 0.0.1 → 1.0.11

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.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/.gitlab-ci.yml +31 -0
  3. data/.ruby-version +1 -0
  4. data/Gemfile +2 -0
  5. data/Procfile +4 -0
  6. data/README.md +116 -1
  7. data/Rakefile +2 -2
  8. data/lib/rails/generators/satorix/custom_ci_job_generator.rb +27 -0
  9. data/lib/rails/generators/satorix/install_generator.rb +32 -0
  10. data/lib/rails/generators/templates/custom_ci_job/satorix/CI/deploy/mock_deploy.rb +37 -0
  11. data/lib/rails/generators/templates/custom_ci_job/satorix/CI/test/bare_bones.rb +25 -0
  12. data/lib/rails/generators/templates/custom_ci_job/satorix/CI/test/info.rb +96 -0
  13. data/lib/rails/generators/templates/custom_ci_job/satorix/custom.rb +50 -0
  14. data/lib/rails/generators/templates/install/.gitlab-ci.yml +132 -0
  15. data/lib/rails/generators/templates/install/Procfile +6 -0
  16. data/lib/rails/generators/templates/install/config/passenger_standalone/includes/authentication.erb +14 -0
  17. data/lib/rails/generators/templates/install/config/passenger_standalone/includes/htpasswd +1 -0
  18. data/lib/rails/generators/templates/install/config/passenger_standalone/includes/page_level_redirects.erb +16 -0
  19. data/lib/rails/generators/templates/install/config/passenger_standalone/includes/proxy_configuration.erb +27 -0
  20. data/lib/rails/generators/templates/install/config/passenger_standalone/nginx.conf.erb +139 -0
  21. data/lib/satorix/rails/version.rb +3 -1
  22. data/lib/satorix/rails.rb +1 -7
  23. data/satorix/CI/deploy/ie_gem_server.rb +80 -0
  24. data/satorix/custom.rb +21 -0
  25. data/satorix-rails.gemspec +16 -14
  26. metadata +38 -8
  27. data/.travis.yml +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 139448f84d0176cd1cbce7bcc9dfcb3c85efb389
4
- data.tar.gz: 549e6d642dfaea6da7ef3923ee4d22e3dd233629
3
+ metadata.gz: a5dbf0b5018c9ce918066276a1dba71c041a7a2f
4
+ data.tar.gz: 3d9c9065c8f8d85945f8f5a81be09c295f25d9fc
5
5
  SHA512:
6
- metadata.gz: 5f43071c9c21906cf5c844b6a816a032ac01a3b1dd15912faac3d4ec81d5d046ee55ccb1f32b1b8ce290c7e09e0232f238cb17c175f643d7d324a9e472e5074c
7
- data.tar.gz: 337c9161d533f8a6a83f5be26d169d0d9766f77677a52bb6635d4ead786a669927c1be5fcb7135bb3a4d3643049e20522b0bb2763f852c74e01325ed96a93127
6
+ metadata.gz: 2b8e13947ba20ba173d173af8097bfcd602edce3f5ceac950627baf9489b5fabff1376f3da52811a8787438fad2b997177661427486b31dbb6e96a85ca3b4dd3
7
+ data.tar.gz: 50872269ddd8cc9f68f35ac4458da9c87643270d21abc68a7f466faebcaa2385495a3ffa377d480d99deaf62169dfefa9462e275df66e8a6c5fbe54f0feb6d8e
data/.gitlab-ci.yml ADDED
@@ -0,0 +1,31 @@
1
+ image: 'satorix/rails'
2
+
3
+
4
+ .satorix: &satorix
5
+ script:
6
+ - bundle # This generates a Gemfile.lock, to make the buildpacks happy
7
+ - gem install satorix --source https://gems.iexposure.com --no-document
8
+ - satorix
9
+
10
+
11
+ cache:
12
+ key: "$CI_PROJECT_ID"
13
+ paths:
14
+ - 'tmp/satorix/cache' # To cache buildpack gems between runs.
15
+
16
+
17
+ rspec:
18
+ before_script:
19
+ - sed -i -e 's/add_development_dependency/add_dependency/g' satorix-rails.gemspec # To avoid an application dependency, but still be available for CI
20
+ <<: *satorix
21
+
22
+
23
+ # This is a custom job, defined at satorix/CI/deploy/ie_gem_server.rb
24
+ deploy_to_ie_gem_server:
25
+ environment:
26
+ name: $CI_COMMIT_REF_NAME
27
+ url: 'http://gems.iexposure.com/gems/satorix-rails'
28
+ stage: deploy
29
+ only:
30
+ - master
31
+ <<: *satorix
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.4.1
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ ruby File.open("#{ File.dirname(__FILE__) }/.ruby-version", &:gets).strip[/ruby-(.+)/i, 1]
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in satorix-rails.gemspec
data/Procfile ADDED
@@ -0,0 +1,4 @@
1
+ # This Procfile defines the types of process that Flynn will run.
2
+ # For more information, please see the documentation at http://gitlab.iexposure.com/satorix/satorix
3
+
4
+ # We don't need to run anything, so there are no jobs here.
data/README.md CHANGED
@@ -1,3 +1,118 @@
1
- # Satorix::Rails
1
+ # satorix-rails
2
2
 
3
3
  By [Internet Exposure](https://www.iexposure.com/)
4
+
5
+ [![build](http://gitlab.iexposure.com/satorix/satorix-rails/badges/master/build.svg)](http://gitlab.iexposure.com/satorix/satorix-rails/pipelines)
6
+ [![coverage](http://gitlab.iexposure.com/satorix/satorix-rails/badges/master/coverage.svg)](http://gitlab.iexposure.com/satorix/satorix-rails/pipelines)
7
+
8
+
9
+ [Satorix](http://gitlab.iexposure.com/satorix/satorix) is a full-featured CI/CD pipeline developed by Internet Exposure.
10
+
11
+ The satorix-rails gem provides a streamlined mechanism for a 12-factor capable Rails application to interact with the Satorix ecosystem.
12
+
13
+
14
+ ## Getting Started
15
+
16
+ Add Satorix to your Rails application by including it in your Gemfile with:
17
+
18
+ ```ruby
19
+ source 'https://gems.iexposure.com' do
20
+ gem 'satorix-rails'
21
+ end
22
+ ```
23
+
24
+ Run the bundle command to install it.
25
+
26
+ Next, run the generator from a terminal at the root of your application:
27
+
28
+ ```console
29
+ $ rails g satorix:install
30
+ ```
31
+
32
+ Congratulations, your application is now suitable for deployment into Satorix.
33
+
34
+ # Logging in Rails 4 and below
35
+
36
+ If you are using Rails version 4 or below, you will need to take an additional step so that your application logs correctly.
37
+
38
+ You will need to either:
39
+
40
+ * add `gem 'rails_12factor', group: :production` to your Gemfile
41
+ * Set `config.logger = Logger.new(STDOUT)` in `config/environments/production.rb`
42
+
43
+
44
+ ## What's Included
45
+
46
+
47
+ ## Environment Variables
48
+
49
+ You can configure your application on a per-environment basis using environment variables.
50
+
51
+ The following environment variables are used by the generated files:
52
+
53
+ Using the Satorix Dashboard? You can relax, all of these variables are automatically configured for you.
54
+
55
+ ##### SATORIX_AUTHENTICATION_USER_NAMES_AND_PASSWORDS
56
+
57
+ Optional
58
+
59
+ Hashed usernames:passwords, newline separated
60
+
61
+ ##### SATORIX_AUTHENTICATION_ALLOWED_IPS
62
+
63
+ Optional
64
+
65
+ Valid settings:
66
+
67
+ * all (`all`)
68
+ * single IP (`192.168.101.2`)
69
+ * single IP range (`192.168.101.0/24`)
70
+ * multiple IPs/ranges (`192.168.101.3 192.168.1.4`)
71
+
72
+ ##### SATORIX_CANONICAL_URI_HOST
73
+
74
+ Optional
75
+
76
+ If specified, t
77
+
78
+ ##### SATORIX_CANONICAL_URI_PROTOCOL
79
+
80
+ Optional
81
+
82
+ ##### SATORIX_PROXY_IPS
83
+
84
+ was NGINX_ADDITIONAL_REAL_IPS
85
+
86
+ Used to define proxy IP addresses, for services like CloudFlare.
87
+
88
+
89
+ ## Contributing
90
+
91
+ Please coordinate contributions using the [official issue tracker](http://gitlab.iexposure.com/satorix/satorix-rails/issues).
92
+
93
+
94
+ ## Testing
95
+
96
+ This application is tested using [rspec](http://rspec.info/).
97
+
98
+ You can run the same tests that run during CI with:
99
+
100
+ ```
101
+ bundle exec rspec spec
102
+ ```
103
+
104
+
105
+ ## CI/CD
106
+
107
+ Satorix is used to provide continuous integration and continuous deployment for this application.
108
+
109
+ CI is run against every push.
110
+
111
+ CD is used to build and publish the gem for the master branch.
112
+
113
+
114
+
115
+ ## License
116
+
117
+
118
+ The Satorix gem is released under the terms described in the [LICENSE file](LICENSE).
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
@@ -0,0 +1,27 @@
1
+ module Satorix
2
+ module Generators
3
+ class CustomCiJobGenerator < ::Rails::Generators::Base
4
+
5
+ source_root File.expand_path('../../templates', __FILE__)
6
+
7
+ desc 'Adds Satorix custom CI job functionality and examples to your application.'
8
+
9
+
10
+ def install_satorix
11
+ template 'custom_ci_job/satorix/custom.rb', 'satorix/custom.rb'
12
+ template 'custom_ci_job/satorix/CI/deploy/mock_deploy.rb', 'satorix/CI/deploy/mock_deploy.rb'
13
+ template 'custom_ci_job/satorix/CI/test/bare_bones.rb', 'satorix/CI/test/bare_bones.rb'
14
+ template 'custom_ci_job/satorix/CI/test/info.rb', 'satorix/CI/test/info.rb'
15
+
16
+ say ''
17
+ say 'Satorix custom CI job examples have been added to your project.'
18
+ say "Don't forget to add your new jobs to the gitlab-ci.yml file."
19
+ say ''
20
+ end
21
+
22
+
23
+ end
24
+ end
25
+ end
26
+
27
+
@@ -0,0 +1,32 @@
1
+ module Satorix
2
+ module Generators
3
+ class InstallGenerator < ::Rails::Generators::Base
4
+
5
+ source_root File.expand_path('../../templates', __FILE__)
6
+
7
+ desc 'Generators to prepare a Rails application for the Satorix ecosystem.'
8
+
9
+
10
+ def install_satorix
11
+ template 'install/Procfile', 'Procfile'
12
+ template 'install/.gitlab-ci.yml', '.gitlab-ci.yml'
13
+
14
+ template 'install/config/passenger_standalone/nginx.conf.erb', 'config/passenger_standalone/nginx.conf.erb'
15
+
16
+ template 'install/config/passenger_standalone/includes/htpasswd', 'config/passenger_standalone/includes/htpasswd'
17
+ template 'install/config/passenger_standalone/includes/authentication.erb', 'config/passenger_standalone/includes/authentication.erb'
18
+ template 'install/config/passenger_standalone/includes/page_level_redirects.erb', 'config/passenger_standalone/includes/page_level_redirects.erb'
19
+ template 'install/config/passenger_standalone/includes/proxy_configuration.erb', 'config/passenger_standalone/includes/proxy_configuration.erb'
20
+
21
+ say ''
22
+ say 'Satorix installation complete!', "\e[32m"
23
+ say 'For additional configuration information, please see http://gitlab.iexposure.com/satorix/satorix'
24
+ say ''
25
+ end
26
+
27
+
28
+ end
29
+ end
30
+ end
31
+
32
+
@@ -0,0 +1,37 @@
1
+ module Satorix
2
+ module CI
3
+ module Deploy
4
+ module MockDeploy
5
+
6
+
7
+ include Satorix::Shared::Console
8
+
9
+
10
+ extend self
11
+
12
+
13
+ def go
14
+ log_bench('Atomic batteries to power...') { batnap }
15
+ log_bench('Turbines to speed...') { turbines_to_speed }
16
+ log_bench('Moving out...') { batnap }
17
+ end
18
+
19
+
20
+ private ########################################################################################################
21
+
22
+
23
+ def turbines_to_speed
24
+ batnap
25
+ puts 'Roger. Ready to move out.'
26
+ end
27
+
28
+
29
+ def batnap
30
+ sleep(rand(6))
31
+ end
32
+
33
+
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,25 @@
1
+ module Satorix
2
+ module CI
3
+ module Test
4
+
5
+ # This is the simplest possible implementation of a custom job.
6
+ module BareBones
7
+
8
+
9
+ extend self
10
+
11
+ # go() is the method that will be called during the CI run.
12
+ # You can add your own logic to do whatever you want.
13
+ def go
14
+ # Uncomment the line below if you want to execute in the context of the app's buildpack.
15
+ # Satorix::CI::Test::Shared::Buildpack.go
16
+ puts "\n\nRunning BareBones#go..."
17
+ end
18
+
19
+
20
+ end
21
+
22
+
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,96 @@
1
+ module Satorix
2
+ module CI
3
+ module Test
4
+ module Info
5
+
6
+
7
+ include Satorix::Shared::Console
8
+
9
+
10
+ extend self
11
+
12
+ # go() is the method that will be called during the CI run.
13
+ # You can add your own logic to do whatever you want.
14
+ def go
15
+ # Uncomment the line below if you want to execute in the context of the app's buildpack.
16
+ # Satorix::CI::Test::Shared::Buildpack.go
17
+
18
+ log_bench('Describing logging...') do
19
+ describe_log
20
+ describe_log_error
21
+ describe_log_error_and_abort
22
+ end
23
+
24
+ log_bench('Describing console commands...') do
25
+ describe_run_command_string
26
+ describe_run_command_array
27
+ describe_run_command_filtered
28
+ describe_run_command_quiet
29
+ describe_run_command_with_error
30
+ end
31
+
32
+ log_bench('Describing environment variables...') { describe_environment_variables }
33
+ end
34
+
35
+
36
+ private ########################################################################################################
37
+
38
+
39
+ def describe_environment_variables
40
+ puts "Remember, #{ ENV['GITLAB_USER_EMAIL'] }, that you have access to all of the environment variables ",
41
+ ' described at https://docs.gitlab.com/ce/ci/variables/#predefined-variables-environment-variables'
42
+ end
43
+
44
+
45
+ def describe_log
46
+ log 'The log() method writes a message to the log'
47
+ colors.keys.each { |color| log "You can provide an optional color, like :#{ color }", color }
48
+ end
49
+
50
+
51
+ def describe_log_error
52
+ log_error 'The log_error() method writes an error to the log'
53
+ end
54
+
55
+
56
+ def describe_log_error_and_abort
57
+ log_error 'The log_error_and_abort() method writes an error to the log and aborts the job'
58
+ rescue SystemExit => e
59
+ puts 'Rescuing from the error, to continue the tutorial.',
60
+ e.inspect
61
+ end
62
+
63
+
64
+ def describe_run_command_string
65
+ run_command "echo 'We can safely run string console commands with the run_command() method'"
66
+ end
67
+
68
+
69
+ def describe_run_command_array
70
+ run_command ['echo', "'We can safely run array console commands with the run_command() method'"]
71
+ end
72
+
73
+
74
+ def describe_run_command_quiet
75
+ run_command "echo 'This will not be displayed'", quiet: true
76
+ end
77
+
78
+
79
+ def describe_run_command_filtered
80
+ run_command "echo 'You can filter secrets, like 1234 and 5678 (unless you explicitly display them)'", filtered_text: %w(1234 5678)
81
+ end
82
+
83
+
84
+ def describe_run_command_with_error
85
+ run_command 'false'
86
+ rescue SystemExit
87
+ puts 'Commands that exit with a non-zero return code abort operation, unless rescued.',
88
+ 'Rescuing from the error, to continue the tutorial.',
89
+ e.inspect
90
+ end
91
+
92
+
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,50 @@
1
+ module Satorix
2
+ module Custom
3
+
4
+ # Ensure the files required by the available_jobs method are available.
5
+ require_relative 'CI/deploy/mock_deploy.rb'
6
+ require_relative 'CI/test/bare_bones.rb'
7
+ require_relative 'CI/test/info.rb'
8
+
9
+
10
+ extend self
11
+
12
+
13
+ # Define the custom jobs to be added to the application's Ci pipeline.
14
+ #
15
+ # The first tier describes the stage. Default stages are build, test, and deploy.
16
+ # If desired, you can define your own custom stages in your gitlab-ci.yml file.
17
+ # For more information about GitLab stages, please refer to https://docs.gitlab.com/ce/ci/yaml/#stages
18
+ #
19
+ # The second tier describes the jobs available within each tier, and the class they map to.
20
+ # The key should be the actual job name to be used in the gitlab-ci.yml file.
21
+ # The value should be a Ruby class or module with a go() method.
22
+ #
23
+ # Example:
24
+ #
25
+ # The available_jobs method below defines three new jobs - one for the deploy stage and
26
+ # two for the test stage. The deploy job is named 'mock_deploy'.
27
+ # The test jobs are named 'bare_bones_example' and 'info'.
28
+ #
29
+ # In this example, the Satorix::CI::Test::Info#go method
30
+ # will be called by an entry in gitlab-ci.yml that looks like:
31
+ #
32
+ # display_info:
33
+ # stage: test
34
+ # <<: *satorix
35
+ #
36
+ def available_jobs
37
+ {
38
+ deploy: {
39
+ mock_deploy: Satorix::CI::Deploy::MockDeploy
40
+ },
41
+ test: {
42
+ bare_bones_example: Satorix::CI::Test::BareBones,
43
+ display_info: Satorix::CI::Test::Info
44
+ }
45
+ }
46
+ end
47
+
48
+
49
+ end
50
+ end
@@ -0,0 +1,132 @@
1
+ # We are using the Satorix Rails CI image from https://hub.docker.com/r/satorix/rails/
2
+ image: 'satorix/rails'
3
+
4
+
5
+ # Global caching directives.
6
+ cache:
7
+ key: "$CI_PROJECT_ID"
8
+ paths:
9
+ - 'tmp/satorix/cache' # To cache buildpack gems between runs.
10
+
11
+
12
+ .satorix: &satorix
13
+ script:
14
+ - gem install satorix --source https://gems.iexposure.com --no-document
15
+ - satorix
16
+
17
+
18
+ ###############################################################################
19
+ #
20
+ # Below are resources that will be available as part of the CI pipeline.
21
+ # Uncomment the resources matching the testing requirements of your application.
22
+ # Feel free to delete unused/unwanted resource entries.
23
+ #
24
+ ###############################################################################
25
+
26
+
27
+ # Configure postgresql environment variables (https://hub.docker.com/r/_/postgres/)
28
+ # These defaults should work well for all implementations.
29
+ .use_postgres: &use_postgres
30
+ services:
31
+ - postgres:9.5
32
+ variables:
33
+ DB_HOST: postgres
34
+ POSTGRES_DB: test
35
+ POSTGRES_PASSWORD: password
36
+ POSTGRES_USER: root
37
+
38
+
39
+ ## https://github.com/flynn/flynn/issues/3505
40
+ ## https://hub.docker.com/r/_/mariadb/
41
+ ## These defaults should work well for all implementations.
42
+ #.use_mariadb: &use_mariadb
43
+ # services:
44
+ # - mariadb:10.1
45
+ # variables:
46
+ # DB_HOST: mariadb
47
+ # MYSQL_DATABASE: test
48
+ # MYSQL_ROOT_PASSWORD: password # The default user is: root
49
+ #
50
+
51
+
52
+ ## https://github.com/flynn/flynn/issues/3505
53
+ ## https://hub.docker.com/r/_/mysql/
54
+ ## These defaults should work well for all implementations.
55
+ #.use_mysql: &use_mysql
56
+ # services:
57
+ # - mysql:5.7
58
+ # variables:
59
+ # DB_HOST: mysql
60
+ # MYSQL_DATABASE: test
61
+ # MYSQL_ROOT_PASSWORD: password # The default user is: root
62
+
63
+
64
+ ###############################################################################
65
+ #
66
+ # Below are jobs that will run as part of the CI pipeline.
67
+ # Uncomment the jobs you want to use for your application.
68
+ # Feel free to delete unused/unwanted job entries.
69
+ #
70
+ ###############################################################################
71
+
72
+
73
+ ## Brakeman
74
+ ## Static analysis security scanner for Ruby on Rails
75
+ ## http://brakemanscanner.org/
76
+ #brakeman:
77
+ # variables:
78
+ # SKIP_BUILDPACK: 'true'
79
+ # <<: *satorix
80
+
81
+
82
+ ## bundler-audit
83
+ ## Patch-level verification for Bundler
84
+ ## https://github.com/rubysec/bundler-audit
85
+ #bundler_audit:
86
+ # variables:
87
+ # SKIP_BUILDPACK: 'true'
88
+ # <<: *satorix
89
+
90
+
91
+ ## Cucumber
92
+ ## Executes executable specifications written in plain language
93
+ ## https://github.com/cucumber/cucumber
94
+ #cucumber:
95
+ # <<: *use_postgres
96
+ # <<: *satorix
97
+
98
+
99
+ ## Rails test
100
+ ## Built-in mechanisms in Rails for testing your application
101
+ ## http://guides.rubyonrails.org/testing.html
102
+ #rails_test:
103
+ # <<: *use_postgres
104
+ # <<: *satorix
105
+
106
+
107
+ ## RSpec
108
+ ## Behaviour Driven Development for Ruby
109
+ ## http://rspec.info/
110
+ #rspec:
111
+ # <<: *use_postgres
112
+ # <<: *satorix
113
+
114
+
115
+ ## RuboCop
116
+ ## A Ruby static code analyzer, based on the community Ruby style guide.
117
+ ## https://github.com/bbatsov/rubocop
118
+ #rubocop:
119
+ # variables:
120
+ # SKIP_BUILDPACK: 'true'
121
+ # <<: *satorix
122
+
123
+
124
+ deploy_with_flynn:
125
+ environment:
126
+ name: $CI_COMMIT_REF_NAME
127
+ url: "http://$CI_PROJECT_NAME.$CI_COMMIT_REF_SLUG.$SATORIX_HOSTING_NAMESPACE"
128
+ stage: deploy
129
+ only:
130
+ - staging
131
+ - production
132
+ <<: *satorix
@@ -0,0 +1,6 @@
1
+ # This Procfile defines the types of process that Flynn will run.
2
+ # For more information, please see the documentation at http://gitlab.iexposure.com/satorix/satorix
3
+
4
+ web: bundle exec passenger start -p $PORT --nginx-config-template config/passenger_standalone/nginx.conf.erb --max-pool-size 3
5
+ # worker: rake jobs:work
6
+ # clock: bundle exec clockwork config/clock.rb
@@ -0,0 +1,14 @@
1
+
2
+ # Authentication
3
+ #
4
+ # Allow listed networks to access without auth, otherwise require password
5
+
6
+ satisfy any;
7
+ <%% ENV['SATORIX_AUTHENTICATION_ALLOWED_IPS'].to_s.split(' ').each do |target| %>
8
+ allow <%%= target %>;
9
+ <%% end %>
10
+ deny all;
11
+ auth_basic "Please Log In";
12
+ auth_basic_user_file /app/config/passenger_standalone/includes/htpasswd;
13
+
14
+ # End Authentication
@@ -0,0 +1 @@
1
+ iestaging:$apr1$b4UNgid/$jVoc0rRDzUfmldUp9.DK8.
@@ -0,0 +1,16 @@
1
+
2
+ # Page-level Redirects
3
+ #
4
+ # Define your own custom page-level redirects below.
5
+ #
6
+ # Examples:
7
+ # Standard single page redirects:
8
+ # location = /old-page-1 { return 301 $scheme://$server_name/new-page-1; }
9
+ # location = /old-page-2 { return 301 $scheme://$server_name/new-page-2; }
10
+ # Do not work:
11
+ # # Redirects to port 8080
12
+ # location = /asdf2 { return 301 /process; }
13
+
14
+
15
+
16
+ # End Page-level Redirects
@@ -0,0 +1,27 @@
1
+
2
+ # Proxy Configuration
3
+ #
4
+ # Used to configure settings related to Flynn's interaction with proxies.
5
+ # Add your custom proxy configuration details below.
6
+
7
+ <%% if ENV['SATORIX_PROXY_IPS'] %>
8
+ # Provide additional proxy IPS, as described at http://nginx.org/en/docs/http/ngx_http_realip_module.html.
9
+ #
10
+ # This is particularity useful for services like CloudFlare, using the example at:
11
+ # https://support.cloudflare.com/hc/en-us/articles/200170706-How-do-I-restore-original-visitor-IP-with-Nginx-
12
+ #
13
+ # If required, this variable should be populated with a space-separated list of proxy IPs. Example:
14
+ # 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 104.16.0.0/12 108.162.192.0/18 2c0f:f248::/32
15
+
16
+ real_ip_recursive on;
17
+
18
+ <%% ENV['SATORIX_PROXY_IPS'].to_s.split(' ').each do |real_ip| %>
19
+ set_real_ip_from <%%= real_ip %>;
20
+ <%% end %>
21
+ <%% end %>
22
+
23
+ # Use the internal Flynn network set X-Forwarded-For header for access IPs.
24
+ set_real_ip_from 100.100.0.0/16;
25
+ real_ip_header X-Forwarded-For;
26
+
27
+ # End Proxy Configuration
@@ -0,0 +1,139 @@
1
+ # passenger start --nginx-config-template config/passenger_standalone/nginx.conf.erb --debug-nginx-config
2
+
3
+
4
+ ##########################################################################
5
+ # Passenger Standalone is built on the same technology that powers
6
+ # Passenger for Nginx, so any configuration option supported by Passenger
7
+ # for Nginx can be applied to Passenger Standalone as well. You can do
8
+ # this by direct editing the Nginx configuration template that is used by
9
+ # Passenger Standalone.
10
+ #
11
+ # This file is the original template. DO NOT EDIT THIS FILE DIRECTLY.
12
+ # Instead, make a copy of this file and pass the `--nginx-config-template`
13
+ # parameter to Passenger Standalone.
14
+ #
15
+ # Learn more about using the Nginx configuration template at:
16
+ # https://www.phusionpassenger.com/library/config/standalone/intro.html#nginx-configuration-template
17
+ #
18
+ # *** NOTE ***
19
+ # If you customize the template file, make sure you keep an eye on the
20
+ # original template file and merge any changes. New Phusion Passenger
21
+ # features may require changes to the template file.
22
+ ##############################################################
23
+
24
+ <%%
25
+ def include_passenger_custom_template(template)
26
+ ERB.new(File.read( File.join( File.dirname(__FILE__), 'includes', template ) )).result(binding)
27
+ end
28
+
29
+ def use_canonical?
30
+ !canonical_domain.nil? &&
31
+ !canonical_domain.empty? &&
32
+ !canonical_domain_protocol.nil? &&
33
+ !canonical_domain_protocol.empty?
34
+ end
35
+
36
+ def canonical_domain
37
+ ENV['SATORIX_CANONICAL_URI_HOST']
38
+ end
39
+
40
+ def canonical_domain_protocol
41
+ ENV['SATORIX_CANONICAL_URI_PROTOCOL']
42
+ end
43
+
44
+ def canonical_uri
45
+ "#{ canonical_domain_protocol }://#{ canonical_domain }" if use_canonical?
46
+ end
47
+ %>
48
+
49
+ <%%= include_passenger_internal_template('global.erb') %>
50
+
51
+ worker_processes 1;
52
+ events {
53
+ worker_connections 4096;
54
+ }
55
+
56
+ http {
57
+ <%%= include_passenger_internal_template('http.erb', 4) %>
58
+
59
+ ### BEGIN your own configuration options ###
60
+ # This is a good place to put your own config
61
+ # options. Note that your options must not
62
+ # conflict with the ones Passenger already sets.
63
+ # Learn more at:
64
+ # https://www.phusionpassenger.com/library/config/standalone/intro.html#nginx-configuration-template
65
+
66
+ ### END your own configuration options ###
67
+
68
+ default_type application/octet-stream;
69
+ types_hash_max_size 2048;
70
+ server_names_hash_bucket_size 96;
71
+ client_max_body_size 1024m;
72
+ access_log off;
73
+ keepalive_timeout 60;
74
+ underscores_in_headers on;
75
+ gzip on;
76
+ gzip_comp_level 3;
77
+ gzip_min_length 150;
78
+ gzip_proxied any;
79
+ gzip_types text/plain text/css text/json text/javascript
80
+ application/javascript application/x-javascript application/json
81
+ application/rss+xml application/vnd.ms-fontobject application/x-font-ttf
82
+ application/xml font/opentype image/svg+xml text/xml;
83
+
84
+ <%% if @app_finder.multi_mode? %>
85
+ # Default server entry for mass deployment mode.
86
+ server {
87
+ <%%= include_passenger_internal_template('mass_deployment_default_server.erb', 12) %>
88
+ }
89
+ <%% end %>
90
+
91
+ <%% @apps.each do |app| %>
92
+
93
+ <%% if use_canonical? %>
94
+ # Redirect all requests to the canonical domain.
95
+ server {
96
+ server_name <%%= app[:server_names].join(' ') %>;
97
+ listen <%%= nginx_listen_address(app) %> default_server;
98
+
99
+ return 301 <%%= canonical_uri %>$request_uri;
100
+ }
101
+ <%% else %>
102
+ # No canonical domain defined, passing all requests to the main server block.
103
+ <%% end %>
104
+
105
+ # Main server block.
106
+ server {
107
+ <%% app[:server_names] = [canonical_domain] if use_canonical? %>
108
+ <%%= include_passenger_internal_template('server.erb', 8, true, binding) %>
109
+ <%%= include_passenger_internal_template('rails_asset_pipeline.erb', 8, false) %>
110
+
111
+ <%%= include_passenger_custom_template('page_level_redirects.erb') %>
112
+ <%%= include_passenger_custom_template('proxy_configuration.erb') %>
113
+ <%%= include_passenger_custom_template('authentication.erb') %>
114
+
115
+ ### BEGIN your own configuration options ###
116
+ # This is a good place to put your own config options.
117
+ # Note that your options must not conflict with the ones Passenger already sets.
118
+ #
119
+ # Learn more at:
120
+ # https://www.phusionpassenger.com/library/config/standalone/intro.html#nginx-configuration-template
121
+ #
122
+ # You can use the include_passenger_custom_template to method include your own custom template.
123
+ # This will help you compartmentalize your configurations, to help organize your settings.
124
+ #
125
+ # Example:
126
+ #
127
+ # Create a new file for your new logic ( /config/passenger_standalone/includes/my_new_logic.erb )
128
+ # Add your custom logic to your newly created file.
129
+ # Add your file to the area below, in an ERB block ( include_passenger_custom_template('my_new_logic.erb') )
130
+
131
+
132
+ ### END your own configuration options ###
133
+ }
134
+
135
+ passenger_pre_start <%%= listen_url(app) %>;
136
+ <%% end %>
137
+
138
+ <%%= include_passenger_internal_template('footer.erb', 4) %>
139
+ }
@@ -1,5 +1,7 @@
1
1
  module Satorix
2
2
  module Rails
3
- VERSION = '0.0.1'
3
+ module Version
4
+ VERSION = '1.0.11'
5
+ end
4
6
  end
5
7
  end
data/lib/satorix/rails.rb CHANGED
@@ -1,7 +1 @@
1
- require "satorix/rails/version"
2
-
3
- module Satorix
4
- module Rails
5
- # Your code goes here...
6
- end
7
- end
1
+ require_relative 'rails/version'
@@ -0,0 +1,80 @@
1
+ module Satorix
2
+ module CI
3
+ module Deploy
4
+ module IeGemServer
5
+
6
+
7
+ require 'fileutils'
8
+
9
+
10
+ include Satorix::Shared::Console
11
+
12
+
13
+ extend self
14
+
15
+
16
+ def go
17
+ log_bench('Installing the geminabox gem...') { install_geminabox_gem }
18
+ log_bench('Preparing gem build directory...') { prepare_gem_build_directory }
19
+ log_bench('Building gem...') { build_gem }
20
+ built_gems.each { |gem| log_bench("Publishing #{ File.basename gem }...") { publish_gem gem } }
21
+ end
22
+
23
+
24
+ private ########################################################################################################
25
+
26
+
27
+ def build_gem
28
+ run_command 'rake build'
29
+ end
30
+
31
+
32
+ def built_gems
33
+ Dir.glob(File.join(gem_build_directory, '*.gem')).select { |e| File.file? e }
34
+ end
35
+
36
+
37
+ def gem_build_directory
38
+ File.join Satorix.app_root, 'pkg'
39
+ end
40
+
41
+
42
+ def ie_gem_server_host
43
+ "https://#{ ie_gem_server_user_name }:#{ ie_gem_server_password }@gems.iexposure.com"
44
+ end
45
+
46
+
47
+ def ie_gem_server_password
48
+ ENV['SATORIX_CI_IE_GEM_SERVER_PASSWORD']
49
+ end
50
+
51
+
52
+ def ie_gem_server_user_name
53
+ ENV['SATORIX_CI_IE_GEM_SERVER_USER_NAME']
54
+ end
55
+
56
+
57
+ def install_geminabox_gem
58
+ run_command 'gem install geminabox --source https://gems.iexposure.com --no-document'
59
+ end
60
+
61
+
62
+ def prepare_gem_build_directory
63
+ run_command "rm -rf #{ gem_build_directory }"
64
+ FileUtils.mkdir_p gem_build_directory
65
+ end
66
+
67
+
68
+ def publish_gem(gem)
69
+ run_command "gem inabox #{ gem } --host #{ ie_gem_server_host }",
70
+ filtered_text: [ie_gem_server_user_name, ie_gem_server_password]
71
+ rescue RuntimeError
72
+ # To prevent the display of an ugly stacktrace.
73
+ abort "\nGem was not published!"
74
+ end
75
+
76
+
77
+ end
78
+ end
79
+ end
80
+ end
data/satorix/custom.rb ADDED
@@ -0,0 +1,21 @@
1
+ module Satorix
2
+ module Custom
3
+
4
+
5
+ require_relative 'CI/deploy/ie_gem_server.rb'
6
+
7
+
8
+ extend self
9
+
10
+
11
+ def available_jobs
12
+ {
13
+ deploy: {
14
+ deploy_to_ie_gem_server: Satorix::CI::Deploy::IeGemServer
15
+ }
16
+ }
17
+ end
18
+
19
+
20
+ end
21
+ end
@@ -4,14 +4,14 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'satorix/rails/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "satorix-rails"
8
- spec.version = Satorix::Rails::VERSION
9
- spec.authors = ['Brad Werth', 'Bret Baptist']
10
- spec.email = ['satorix@iexposure.com']
7
+ spec.name = 'satorix-rails'
8
+ spec.version = Satorix::Rails::Version::VERSION
9
+ spec.authors = ['Internet Exposure']
10
+ spec.email = ['info@satorix.com']
11
11
 
12
- spec.summary = 'Satorix in Rails'
13
- spec.description = 'The satorix-rails gem provides a streamlined mechanism for a Rails application to interact with the Satorix ecosystem.'
14
- spec.homepage = 'https://iexposure.com'
12
+ spec.summary = 'Satorix in Rails'
13
+ spec.description = 'The satorix-rails gem provides a streamlined mechanism for a Rails application to interact with the Satorix ecosystem.'
14
+ spec.homepage = 'https://www.satorix.com'
15
15
 
16
16
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
17
17
  # to allow pushing to a single host or delete this section to allow pushing to any host.
@@ -21,14 +21,16 @@ Gem::Specification.new do |spec|
21
21
  raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.'
22
22
  end
23
23
 
24
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
24
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
25
25
  f.match(%r{^(test|spec|features)/})
26
26
  end
27
- spec.bindir = "exe"
28
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
- spec.require_paths = ["lib"]
27
+ spec.bindir = 'exe'
28
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
+ spec.require_paths = ['lib']
30
30
 
31
- spec.add_development_dependency "bundler", "~> 1.13"
32
- spec.add_development_dependency "rake", "~> 10.0"
33
- spec.add_development_dependency "rspec", "~> 3.0"
31
+ spec.add_dependency 'passenger'
32
+
33
+ spec.add_development_dependency 'bundler', '~> 1.13'
34
+ spec.add_development_dependency 'rake', '~> 10.0'
35
+ spec.add_development_dependency 'rspec', '~> 3.0'
34
36
  end
metadata CHANGED
@@ -1,16 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: satorix-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.11
5
5
  platform: ruby
6
6
  authors:
7
- - Brad Werth
8
- - Bret Baptist
7
+ - Internet Exposure
9
8
  autorequire:
10
9
  bindir: exe
11
10
  cert_chain: []
12
- date: 2016-11-18 00:00:00.000000000 Z
11
+ date: 2017-08-16 00:00:00.000000000 Z
13
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: passenger
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
14
27
  - !ruby/object:Gem::Dependency
15
28
  name: bundler
16
29
  requirement: !ruby/object:Gem::Requirement
@@ -56,23 +69,40 @@ dependencies:
56
69
  description: The satorix-rails gem provides a streamlined mechanism for a Rails application
57
70
  to interact with the Satorix ecosystem.
58
71
  email:
59
- - satorix@iexposure.com
72
+ - info@satorix.com
60
73
  executables: []
61
74
  extensions: []
62
75
  extra_rdoc_files: []
63
76
  files:
64
77
  - ".gitignore"
78
+ - ".gitlab-ci.yml"
65
79
  - ".rspec"
66
- - ".travis.yml"
80
+ - ".ruby-version"
67
81
  - Gemfile
82
+ - Procfile
68
83
  - README.md
69
84
  - Rakefile
70
85
  - bin/console
71
86
  - bin/setup
87
+ - lib/rails/generators/satorix/custom_ci_job_generator.rb
88
+ - lib/rails/generators/satorix/install_generator.rb
89
+ - lib/rails/generators/templates/custom_ci_job/satorix/CI/deploy/mock_deploy.rb
90
+ - lib/rails/generators/templates/custom_ci_job/satorix/CI/test/bare_bones.rb
91
+ - lib/rails/generators/templates/custom_ci_job/satorix/CI/test/info.rb
92
+ - lib/rails/generators/templates/custom_ci_job/satorix/custom.rb
93
+ - lib/rails/generators/templates/install/.gitlab-ci.yml
94
+ - lib/rails/generators/templates/install/Procfile
95
+ - lib/rails/generators/templates/install/config/passenger_standalone/includes/authentication.erb
96
+ - lib/rails/generators/templates/install/config/passenger_standalone/includes/htpasswd
97
+ - lib/rails/generators/templates/install/config/passenger_standalone/includes/page_level_redirects.erb
98
+ - lib/rails/generators/templates/install/config/passenger_standalone/includes/proxy_configuration.erb
99
+ - lib/rails/generators/templates/install/config/passenger_standalone/nginx.conf.erb
72
100
  - lib/satorix/rails.rb
73
101
  - lib/satorix/rails/version.rb
74
102
  - satorix-rails.gemspec
75
- homepage: https://iexposure.com
103
+ - satorix/CI/deploy/ie_gem_server.rb
104
+ - satorix/custom.rb
105
+ homepage: https://www.satorix.com
76
106
  licenses: []
77
107
  metadata:
78
108
  allowed_push_host: https://rubygems.org
@@ -92,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
122
  version: '0'
93
123
  requirements: []
94
124
  rubyforge_project:
95
- rubygems_version: 2.5.1
125
+ rubygems_version: 2.6.11
96
126
  signing_key:
97
127
  specification_version: 4
98
128
  summary: Satorix in Rails
data/.travis.yml DELETED
@@ -1,5 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.3.1
5
- before_install: gem install bundler -v 1.13.6