Skip to content

Deployment (#11)

Deployment (#11) #56

Workflow file for this run

# This workflow will install a prebuilt Ruby version, install dependencies, and run Rspec tests.
name: "Test Expertiza"
on:
workflow_dispatch:
pull_request:
branches: [main, development]
paths-ignore: ['**.md']
push:
branches: [main, development]
paths-ignore: ['**.md']
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix: # we will be running rspec tests in controllers, models, helpers, and lib folders
folder: [controllers, models, helpers, lib]
services:
mysql:
image: mysql:8.0
env:
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
MYSQL_DATABASE: expertiza_test
ports:
- 3306
options: >-
--health-cmd="mysqladmin ping"
--health-interval=10s
--health-timeout=5s
--health-retries=3
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install bower
run: npm install -g bower
- run: bower install
- name: Install Ruby and Gems
uses: ruby/[email protected]
with:
ruby-version: 2.4
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
- name: Set up code climate test-reporter
run: |
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
chmod +x ./cc-test-reporter
./cc-test-reporter before-build
- name: Start redis
uses: supercharge/[email protected]
- name: Run tests
run: |
cp config/database.yml.github config/database.yml
cp config/secrets.yml.example config/secrets.yml
sudo /etc/init.d/mysql start
mysql -u root -proot < db/grant_expertiza.sql
bundle exec rails db:setup
RUBYOPT="-W0" bundle exec rspec spec/${{ matrix.folder }}
env:
DB_PORT: 3306
RAILS_ENV: test
- name: Format code coverage report
run: ./cc-test-reporter format-coverage -t simplecov -o "coverage/codeclimate.${{ matrix.folder }}.json"
- name: Upload coverage artifacts
uses: actions/upload-artifact@v3
with:
name: code-coverage-artifacts
path: coverage/
# Publish code coverage report to code climate
publish-code-coverage:
needs: test
if: github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: code-coverage-artifacts
path: coverage
- name: Upload code coverage report
run: |
export GIT_BRANCH="${GITHUB_REF/refs\/heads\//}"
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
chmod +x ./cc-test-reporter
./cc-test-reporter sum-coverage coverage/codeclimate.*.json
./cc-test-reporter after-build -t simplecov -r ${{ secrets.CC_TEST_REPORTER_ID }}
# Deploy the latest version of Expertiza development branch to the development server
# when changes are pushed to the development branch
deploy-on-dev:
needs: test
if: github.event_name == 'push' && github.ref == 'refs/heads/development'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: 2.4
bundler-cache: true
- uses: miloserdow/capistrano-deploy@master
with:
target: development
enc_rsa_key_val: ${{ secrets.ENCRYPTED_PRIVATE_KEY_DEV }}
deploy_key: ${{ secrets.DEPLOY_ENC_KEY }}
# Deploy the latest version of Expertiza main branch to the test server
# when changes are pushed to the main branch
deploy-on-test:
needs: test
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: 2.4
bundler-cache: true
- uses: miloserdow/capistrano-deploy@master
with:
target: staging
enc_rsa_key_val: ${{ secrets.ENCRYPTED_PRIVATE_KEY_STAGING }}
deploy_key: ${{ secrets.DEPLOY_ENC_KEY }}