Skip to content

Commit

Permalink
Adding ruby CI
Browse files Browse the repository at this point in the history
  • Loading branch information
kigster committed Feb 17, 2024
1 parent c2f4f9d commit 224eb95
Show file tree
Hide file tree
Showing 4 changed files with 174 additions and 16 deletions.
84 changes: 84 additions & 0 deletions .github/workflows/rspec.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# .github/workflows/main.yaml
name: "TicketBooth CI: rspec"

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
main:
name: CI
runs-on: ubuntu-latest

# If you need DB like MySQL then define service below.
# Example for PostgreSQL and Redis can be found here:
# https://github.com/actions/example-services/tree/master/.github/workflows
services:
postgresql:
image: postgres
env:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: ""
POSTGRES_HOST_AUTH_METHOD: "trust"
ports:
- 5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
redis:
image: redis
ports:
- 6379/tcp
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: niden/actions-memcached@v7

- run: sudo apt-get update -yqq
- run: sudo apt-get install -yqq netcat libpg-dev

- name: "Verify Memcached is running"
run: echo -e "stats\nquit" | nc localhost 11211 | grep -e "accepting_conns 1" -q

- uses: actions/checkout@v4

- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.2.3'
bundler-cache: true

- name: "Create and migrate the DB"
run: |
bin/rails db:create
bin/rails db:migrate
bin/rails db:test:prepare
- name: "Run Rspec"
run: bundle exec rspec --format documentation

- name: "Run Rubocop"
run: bundle exec rubocop


lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.2.3'
bundler-cache: true

- name: RuboCop
run: bin/rubocop --parallel
59 changes: 59 additions & 0 deletions .github/workflows/ruby.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: "TicketBooth CI: Ruby"
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
# Label of the container job
container-job:
# Containers must run in Linux based operating systems
runs-on: ubuntu-latest
# Docker Hub image that `container-job` executes in
container: ruby:3.2

# Service containers to run with `container-job`
services:
postgres:
# Docker Hub image
image: postgres:16
# Provide the password for postgres
env:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: ""
POSTGRES_HOST_AUTH_METHOD: "trust"

# Set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
redis:
# Docker Hub image
image: redis
# Set health checks to wait until redis has started
options: >-
--health-cmd "redis-cli ping"
--health-interval 10sa
--health-timeout 5s
--health-retries 5
steps:
- uses: niden/actions-memcached@v7
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@ec02537da5712d66d4d50a0f33b7eb52773b5ed1
with:
ruby-version: '3.2.3' # Not needed with a .ruby-version file
bundler-cache: true

- run: bundle install -j 12
- run: |
bin/rails db:create
bin/rails db:migrate
bin/rails db:test:prepare
- run: bundle exec rspec --format documentation
- run: bundle exec rubocop

45 changes: 30 additions & 15 deletions .github/workflows/rubyonrails.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#
# This workflow will install a prebuilt Ruby version, install dependencies, and
# run tests and linters.
name: "Ruby on Rails CI"
name: "TicketBooth CI: Ruby on Rails"
on:
push:
branches: [ "main" ]
Expand All @@ -15,39 +15,54 @@ jobs:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:15-alpine
image: postgres
ports:
- "5432:5432"
env:
POSTGRES_DB: tickets_test
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: ""
POSTGRES_HOST_AUTH_METHOD: "trust"

redis:
# Docker Hub image
image: redis
# Set health checks to wait until redis has started
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
RAILS_ENV: test
DATABASE_URL: "postgres://postgres:password@localhost:5432/tickets_test"
steps:
- run: sudo apt-get -yqq install libpq-dev
- uses: niden/actions-memcached@v7

- name: Checkout code
uses: actions/checkout@v3
# Add or replace dependency steps here
- name: Install Ruby and gems
uses: ruby/setup-ruby@55283cc23133118229fd3f97f9336ee23a179fcf # v1.146.0
uses: actions/checkout@v4

- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.2.3'
bundler-cache: true
# Add or replace database setup steps here

- name: Set up database schema
run: bin/rails db:schema:load
# Add or replace test runners here

- name: Run tests
run: bundle exec rspec

lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install Ruby and gems
uses: ruby/setup-ruby@55283cc23133118229fd3f97f9336ee23a179fcf # v1.146.0
uses: actions/checkout@v4

- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.2.3'
bundler-cache: true
- name: Lint Ruby files

- name: RuboCop
run: bin/rubocop --parallel
2 changes: 1 addition & 1 deletion .ruby-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.2.2
3.2.3

0 comments on commit 224eb95

Please sign in to comment.