diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6d27b6d6..4e4ba35f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -49,13 +49,13 @@ jobs: - name: Install bower run: npm install -g bower - name: Install bowndler packages - run: bin/bowndler update + run: bundle exec bowndler update - name: Precompile assets to speed up Puma test server start time - run: bin/rake assets:precompile + run: bundle exec rake assets:precompile - name: Set up database schema run: | - bin/rake db:create db:schema:load + bundle exec rake db:create db:schema:load - name: Run tests run: | - bin/rspec - bin/cucumber + bundle exec rspec + bundle exec cucumber diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..84e87896 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +FROM ruby:2.7.7 + +RUN apt-get update -qq && apt-get install -y build-essential nodejs npm + +RUN mkdir /myapp +WORKDIR /myapp + +ENV BUNDLE_GEM__FURY__IO=7LFoF-x9YJoqOoGxi84i6BCDfxDvRt0 +ENV APP_NAME=CMS +ENV RAILS_ENV=production +ENV RAILS_GROUPS=assets +ENV ALGOLIA_APP_ID=$ALGOLIA_APP_ID +ENV ALGOLIA_API_KEY=$ALGOLIA_API_KEY + +COPY Gemfile* .ruby-version package.json ./ + +RUN gem install bundler:1.17.3 +RUN bundle install -j4 + +RUN npm install -g bower@1.8.8 + +COPY . /myapp + +RUN rm -rf vendor/assets/bower_components +RUN bundle exec bowndler update --allow-root +RUN bundle exec rake assets:precompile + +EXPOSE 3000 +CMD ["puma"] diff --git a/Gemfile.lock b/Gemfile.lock index dac02b48..6340a243 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -552,7 +552,7 @@ GEM json (>= 1.8.0) unf (0.1.4) unf_ext - unf_ext (0.0.7.2) + unf_ext (0.0.9.1) unicode-display_width (1.8.0) uuidtools (2.1.5) valid_attribute (2.0.0) diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index c66a6d5a..00000000 --- a/Jenkinsfile +++ /dev/null @@ -1,42 +0,0 @@ -pipeline { - agent { label "master" } - environment { - COMPOSE_PROJECT_NAME = "${env.JOB_NAME}" - GITHUB_TOKEN = credentials('masbuild-github-token') - } - stages { - stage('prepare') { - steps { - script { - docker.withRegistry('https://masdevtestregistry.azurecr.io', 'acr_credentials') { - sh 'docker-compose -f docker-compose.yml build --force-rm' - sh 'docker-compose -f docker-compose.yml up -d' - } - } - } - } - stage ('branch-test') { - when { not { branch 'PR-*' } } - steps { - sh 'docker-compose -f docker-compose.yml run --rm rails ./jenkins/test' - } - } - stage ('pr-test') { - when { branch 'PR-*' } - environment { - DANGER_CHANGE_ID = "${env.CHANGE_ID}" - DANGER_GIT_URL = "${env.GIT_URL}" - DANGER_JENKINS_URL = "${env.JENKINS_URL}" - } - steps { - sh 'docker-compose -f docker-compose.yml run --rm rails ./jenkins/test' - } - } - } - post { - always { - sh 'docker-compose -f docker-compose.yml down --remove-orphans' - cleanWs() - } - } -} diff --git a/bin/bundle b/bin/bundle index 524dfd3f..66e9889e 100755 --- a/bin/bundle +++ b/bin/bundle @@ -1,105 +1,3 @@ #!/usr/bin/env ruby -# frozen_string_literal: true - -# -# This file was generated by Bundler. -# -# The application 'bundle' is installed as part of a gem, and -# this file is here to facilitate running it. -# - -require "rubygems" - -m = Module.new do - module_function - - def invoked_as_script? - File.expand_path($0) == File.expand_path(__FILE__) - end - - def env_var_version - ENV["BUNDLER_VERSION"] - end - - def cli_arg_version - return unless invoked_as_script? # don't want to hijack other binstubs - return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update` - bundler_version = nil - update_index = nil - ARGV.each_with_index do |a, i| - if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN - bundler_version = a - end - next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/ - bundler_version = $1 || ">= 0.a" - update_index = i - end - bundler_version - end - - def gemfile - gemfile = ENV["BUNDLE_GEMFILE"] - return gemfile if gemfile && !gemfile.empty? - - File.expand_path("../../Gemfile", __FILE__) - end - - def lockfile - lockfile = - case File.basename(gemfile) - when "gems.rb" then gemfile.sub(/\.rb$/, gemfile) - else "#{gemfile}.lock" - end - File.expand_path(lockfile) - end - - def lockfile_version - return unless File.file?(lockfile) - lockfile_contents = File.read(lockfile) - return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/ - Regexp.last_match(1) - end - - def bundler_version - @bundler_version ||= begin - env_var_version || cli_arg_version || - lockfile_version || "#{Gem::Requirement.default}.a" - end - end - - def load_bundler! - ENV["BUNDLE_GEMFILE"] ||= gemfile - - # must dup string for RG < 1.8 compatibility - activate_bundler(bundler_version.dup) - end - - def activate_bundler(bundler_version) - if Gem::Version.correct?(bundler_version) && Gem::Version.new(bundler_version).release < Gem::Version.new("2.0") - bundler_version = "< 2" - end - gem_error = activation_error_handling do - gem "bundler", bundler_version - end - return if gem_error.nil? - require_error = activation_error_handling do - require "bundler/version" - end - return if require_error.nil? && Gem::Requirement.new(bundler_version).satisfied_by?(Gem::Version.new(Bundler::VERSION)) - warn "Activating bundler (#{bundler_version}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_version}'`" - exit 42 - end - - def activation_error_handling - yield - nil - rescue StandardError, LoadError => e - e - end -end - -m.load_bundler! - -if m.invoked_as_script? - load Gem.bin_path("bundler", "bundle") -end +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) +load Gem.bin_path('bundler', 'bundle') diff --git a/bin/rails b/bin/rails index 7fd59cc7..5191e692 100755 --- a/bin/rails +++ b/bin/rails @@ -1,29 +1,4 @@ #!/usr/bin/env ruby -# frozen_string_literal: true - -# -# This file was generated by Bundler. -# -# The application 'rails' is installed as part of a gem, and -# this file is here to facilitate running it. -# - -require "pathname" -ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", - Pathname.new(__FILE__).realpath) - -bundle_binstub = File.expand_path("../bundle", __FILE__) - -if File.file?(bundle_binstub) - if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ - load(bundle_binstub) - else - abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. -Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") - end -end - -require "rubygems" -require "bundler/setup" - -load Gem.bin_path("railties", "rails") +APP_PATH = File.expand_path('../../config/application', __FILE__) +require_relative '../config/boot' +require 'rails/commands' diff --git a/bin/rake b/bin/rake index 9275675e..17240489 100755 --- a/bin/rake +++ b/bin/rake @@ -1,29 +1,4 @@ #!/usr/bin/env ruby -# frozen_string_literal: true - -# -# This file was generated by Bundler. -# -# The application 'rake' is installed as part of a gem, and -# this file is here to facilitate running it. -# - -require "pathname" -ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", - Pathname.new(__FILE__).realpath) - -bundle_binstub = File.expand_path("../bundle", __FILE__) - -if File.file?(bundle_binstub) - if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ - load(bundle_binstub) - else - abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. -Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") - end -end - -require "rubygems" -require "bundler/setup" - -load Gem.bin_path("rake", "rake") +require_relative '../config/boot' +require 'rake' +Rake.application.run diff --git a/build.sh b/build.sh deleted file mode 100755 index 7506bac2..00000000 --- a/build.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash -l - -set -e - -unset RUBYOPT -export BUNDLE_WITHOUT="test:development" - -version_number=${GO_PIPELINE_LABEL-0} -revision=`git rev-parse HEAD` -build_date=`date +'%Y-%m-%d %H:%M %z'` - -cat > public/version < /dev/null && \ - apt-get -qq dist-upgrade > /dev/null && \ - apt-get -qq clean > /dev/null && \ - rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -COPY . /var/tmp/app/ - -WORKDIR /var/tmp/app \ No newline at end of file diff --git a/jenkins/test b/jenkins/test deleted file mode 100755 index 0587e3d7..00000000 --- a/jenkins/test +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash -l - -set -e - -if [ -f /.dockerenv ]; then - source ~/.bashrc - rvm use default - rvm gemset use cms - bundle config github.com $GITHUB_USER:$GITHUB_PASS - mv config/database{-jenkins,}.yml - mv .env{-example,} -fi - -export RAILS_ENV=test -export BUNDLE_WITHOUT=development:build -export APP_NAME=MAS - -function run { - declare -a tests_command=("$@") - echo '' - echo "=== Running \`${tests_command[*]}\`" - if ! ${tests_command[*]}; then - echo "=== These tests failed." - exit 1 - fi -} - -function info { - declare -a info_command=("$@") - echo '' - echo "=== Running for informational purposes \`${info_command[*]}\`" - if ! ${info_command[*]}; then - echo "== This test has errors and/or warnings. Please review results" - fi -} - -run bundle install --quiet -run npm install --quiet -run bundle exec bowndler update --allow-root -run bundle exec rake db:drop db:create db:schema:load db:migrate -run bundle exec rspec spec --format html --out tmp/spec.html --format RspecJunitFormatter --out tmp/spec.xml --format progress --profile --deprecation-out log/rspec_deprecations.txt -run bundle exec cucumber -run ./node_modules/karma/bin/karma start spec/javascripts/karma.conf.js --single-run -info brakeman -q --no-pager --ensure-latest -run bundle exec danger --dangerfile=jenkins/Dangerfile --verbose diff --git a/test.sh b/test.sh deleted file mode 100755 index 4ec01de3..00000000 --- a/test.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash -l - -set -e - -export PATH=./bin:$PATH -export RAILS_ENV=test -export BUNDLE_WITHOUT=development -# Workaround to remove ::Fixnum warnings until Rails upgrade -export RUBYOPT=-W0 - -CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu) -BUNDLE_JOBS=$((CORES-1)) - -# remove prior dirty packaged gems e.g. build.sh -rm -rf vendor/cache .bundle/config - -bundle install --jobs $BUNDLE_JOBS -npm install - -bundle exec bowndler install - -if [ -n "$GO_PIPELINE_NAME" ]; then - cp config/database{-ci,}.yml - - rake db:drop db:create db:schema:load db:migrate -fi - -CI_PIPELINE_COUNTER=${GO_PIPELINE_COUNTER-0} -CI_EXECUTOR_NUMBER=${EXECUTOR_NUMBER-0} - -bundle exec rspec spec --format html --out tmp/spec.html --format RspecJunitFormatter --out tmp/spec.xml --format progress --profile --deprecation-out log/rspec_deprecations.txt -bundle exec cucumber -bundle exec rubocop -./node_modules/karma/bin/karma start spec/javascripts/karma.conf.js --single-run