Skip to content

Updates comment

Updates comment #5557

name: Test
on: push
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
# Connect to locally-running Maildev for tests
SMTP_PORT: 1025
SMTP_DOMAIN: localhost
SMTP_ENABLE_TLS: false
REDIS_HOST: redis
REDIS_PORT: 6379
HEADLESS: true
AWS_S3_ACCESS_KEY_ID: ${{ secrets.AWS_S3_ACCESS_KEY_ID }}
AWS_S3_SECRET_ACCESS_KEY: ${{ secrets.AWS_S3_SECRET_ACCESS_KEY }}
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
STRIPE_API_KEY: ${{ secrets.DEFAULT_STRIPE_API_KEY }}
MARKETPLACE_VENDOR_STRIPE_ACCOUNT: ${{ secrets.MARKETPLACE_VENDOR_STRIPE_ACCOUNT }}
jobs:
setup:
name: Install and cache dependencies
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Update apt
env:
DEBIAN_FRONTEND: noninteractive
run:
sudo apt-get update -qq -o Acquire::Retries=3
- name: Install libvips
env:
DEBIAN_FRONTEND: noninteractive
run:
# we only need the library
sudo apt-get install --fix-missing -qq -o Acquire::Retries=3
libvips
- name: Setup Ruby and install gems
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Setup Node with cache
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'yarn'
- name: Install Node dependencies
run: yarn install
test-rspec:
name: Run Rspec tests
runs-on: ubuntu-latest
needs: [setup]
services:
postgres:
image: postgres:latest
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432
# needed because the postgres container does not provide a healthcheck
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis
ports:
# Maps port 6379 on service container to the host
- 6379:6379
# Set health checks to wait until redis has started
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Update apt
env:
DEBIAN_FRONTEND: noninteractive
run:
sudo apt-get update -qq -o Acquire::Retries=3
- name: Install libvips
env:
DEBIAN_FRONTEND: noninteractive
run:
# we only need the library
sudo apt-get install --fix-missing -qq -o Acquire::Retries=3
libvips
- name: Install Firefox
uses: browser-actions/setup-firefox@latest
- name: Setup Ruby and install gems
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Setup Node with cache
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'yarn'
- name: Allow Ruby process to access port 80
run: sudo setcap 'cap_net_bind_service=+ep' `which ruby`
- name: Setup CI database.yml
run: cp config/database.yml.github-actions config/database.yml
- name: Setup rails
run: bin/setup-rails && bin/rails assets:precompile
- name: Install stripe cli
run: |
curl -s https://packages.stripe.dev/api/security/keypair/stripe-cli-gpg/public | gpg --dearmor | sudo tee /usr/share/keyrings/stripe.gpg
echo "deb [signed-by=/usr/share/keyrings/stripe.gpg] https://packages.stripe.dev/stripe-cli-debian-local stable main" | sudo tee -a /etc/apt/sources.list.d/stripe.list
sudo apt update
sudo apt install stripe
- name: Run Tests
env:
HEADLESS: true
run: bundle exec rspec
- name: Upload RSpec Screenshots
uses: actions/upload-artifact@v2
if: failure()
with:
name: rspec-failed-screenshot
path: tmp/capybara/*.png
test-features:
name: Run Cucumber tests
runs-on: ubuntu-latest
needs: [setup]
services:
postgres:
image: postgres:latest
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432
# needed because the postgres container does not provide a healthcheck
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
redis:
image: redis
ports:
# Maps port 6379 on service container to the host
- 6379:6379
# Set health checks to wait until redis has started
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Ruby and install gems
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Setup Node with cache
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'yarn'
- name: Install Firefox
uses: browser-actions/setup-firefox@latest
- name: Allow Ruby process to access port 80
run: sudo setcap 'cap_net_bind_service=+ep' `which ruby`
- name: Setup CI database.yml
run: cp config/database.yml.github-actions config/database.yml
- name: Use Development mode env
run: cp .env.example .env
- name: Install Overmind
run: |
wget https://github.com/DarthSim/overmind/releases/download/v2.3.0/overmind-v2.3.0-linux-386.gz
gunzip -d overmind-v2.3.0-linux-386.gz
mv overmind-v2.3.0-linux-386 overmind
chmod +x overmind
- name: Install Maildev
run: yarn global add maildev
- name: Start Rails server
run: |
export PATH=$PATH:~/bin:.
bin/setup-rails
bin/run &
- name: Run tests
run: |
# To wait for asset built
# TODO: Start server in production mode
curl --connect-timeout 5 --retry 5 --retry-delay 5 --retry-max-time 60 --retry-connrefused localhost:3000 1> /dev/null
yarn run test
- name: Upload Test Results
uses: actions/upload-artifact@v2
if: failure()
with:
name: feature-test-failed-screenshot
path: features/test_reports/*.png
lint:
name: Run style checks
runs-on: ubuntu-latest
needs: [setup]
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Ruby and install gems
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Setup Node with cache
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'yarn'
- name: Install Node dependencies
run: yarn install
- run: bundle exec rubocop --parallel --config .rubocop.yml
- run: yarn prettier --check "./**/*.{scss,css,js}"