• Stars
    star
    12
  • Rank 1,597,372 (Top 32 %)
  • Language
  • License
    Apache License 2.0
  • Created about 3 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The GitLab CI templates for Ruby project

Ruby GitLab CI

This is GitLab CI templates for Ruby and Rails project.

Requirements

GitLab 15.0+

The cobertura is not supported by GitLab 15.0 to continue work with 14.3+ override artifacts to let it worked.

Usage

Include YAML in your .gitlab-ci.yml and apply variables and rules to control it.

include:
  remote: https://github.com/elct9620/ruby-gitlab-ci/raw/main/rails.yml

variables:
  RUBY_VERSION: 2.7.4
  ASSETS_PRECOMPILE: 'yes'

brakeman:
  rules:
    - if: $CI_MERGE_REQUEST_ID

Webdrivers

To support E2E testing, the default WD_INSTALL_DIR will be configured to tmp/webdrivers with the cache. You can use webdrivers gem without extra download cost with Capybara or others which depend on webdrivers.

The Capybara should register customize driver with --no-sandbox options

Capybara.register_driver :gitlab_ci do |app|
  version = Capybara::Selenium::Driver.load_selenium
  options_key = Capybara::Selenium::Driver::CAPS_VERSION.satisfied_by?(version) ? :capabilities : :options
  browser_options = ::Selenium::WebDriver::Chrome::Options.new.tap do |opts|
    opts.add_argument('--headless')
    opts.add_argument('--disable-gpu') if Gem.win_platform?
    # Workaround https://bugs.chromium.org/p/chromedriver/issues/detail?id=2650&q=load&sort=-id&colspec=ID%20Status%20Pri%20Owner%20Summary
    opts.add_argument('--disable-site-isolation-trials')
    opts.add_argument('--no-sandbox')
  end

  Capybara::Selenium::Driver.new(app, **{ :browser => :chrome, options_key => browser_options })
end

Capybara.default_driver = if ENV.fetch('CI', false)
                            :gitlab_ci
                          else
                            :selenium_chrome_headless
                          end

Options

The options are usually based on the rules keyword to enable the task. If you overwrite the rules the variables are not necessary to configure.

Type Environment Name Default Description
Ruby RUBY_VERSION 3.2.2 The ruby image version
Ruby SORBET_ENABLED Unset Enable Sorbet gem to type check
Ruby RSPEC_JUNIT_REPORT Unset Export JUnit report for GitLab CI with RSpec JUnit Formatter gem
JavaScript NODE_PACKAGE_REQUIRED yes If not use Webpack the node packages are not required for Rails that can be disabled
Node NODE_VERSION 18.16.0 The node image version
Rails ASSETS_PRECOMPILE Unset Run Rails Assets Precompile and save into artifacts
Rails RAILS_PRODUCTION_KEY Unset When assets precompile we may need to replace RAILS_MASTER_KEY to production version
Docker DOCKER_VERSION 24.0 The docker version used to build docker image
Docker DOCKER_ENABLED Unset Run docker build .
Docker TRIVY_ENABLED Unset Use trivy to scan container
E2E BROWSER_REQUIRED no Install Browser for E2E testing
E2E INSTALL_CHROME yes Install Chrome for Cucumber E2E testing

S3

Upload to AWS S3 or Minio to provide CDN for your applicatoin.

Environment Name Default Description
UPLOAD_TO_S3 Unset When set to yes and ASSETS_PRECOMPILE is yes will run assets:s3 job
S3_ENDPOINT Unset If use Minio, set to your Minio endpoint
S3_ACCESS_KEY_ID Unset If you have another AWS_ACCESS_KEY_ID in your tasks, use S3_ version to overwrite it.
S3_SECRET_ACCESS_KEY Unset If you have another AWS_SECRET_ACCESS_KEY in your tasks, use S3_ version to overwrite it.
S3_BUCKET Unset The bucket name to upload your static assets
S3_SYNC_DELETE no Delete remote bucket files if local source not present

Deployment

The GitLab allows to create Review Apps when you create a merge request, we can use it for better QA flow.

Docker Swarm

Based on Docker Swarm Rocks example, we can use Traefik and GitLab Runner runs on Docker Swarm to support Review Apps.

P.S. You have to run a GitLab CI runner in the same host with the Swarm manager and use it to deploy to the Swarm cluster.

Please reference to the examples/review.yml as example to configure your GitLab CI and examples/review/docker-compose.yml for you stack file.

Options

Environment Name Default Description
DEPLOY_BASE_DOMAIN 127.0.0.1.xip.io When deploy we will use it as a base domain, e.g. 100-branch.127.0.0.1.xip.io
DEPLOY_NAME $CI_PROJECT_ID-$CI-ENVIRONMENT_SLUG The name used to be Docker Swarm stack name or Kubernetes namespace
DEPLOY_DOMAIN $DEPLOY_NAME.$DEPLOY_BASE_DOMAIN Only work for Docker Swarm with Traefik will be set to environment url
DEPLOY_STACK_FILE docker-compose.yml The Docker Swarm stack file for deployment
DEPLOY_WAIT_TIME 60 Time to wait for check Docker Swarm deploy status

Roadmap

  • Ruby support
    • Rubocop
    • RSpec
    • Cucumber
    • Bundler Audit
    • Bundler Leak
  • Add GitLab CI workflow to control jobs
  • Rails support
    • Brakeman
    • Assets Precompile
    • S3 Upload for CDN
    • Database
      • PostgreSQL
      • MySQL
  • JavaScript support
    • ESLint
    • Yarn Audit
    • Jest
  • Containerize support
    • Docker
    • Trivy Scanner
      • Replace with GitLab version to generate report
    • Registry
      • GitLab Registry
      • AWS ECR
  • Deployment
    • Docker Swarm
    • Kubernetes (Not decided to add)

More Repositories

1

rails-letsencrypt

The Let's Encrypt certificate manager for rails
Ruby
126
star
2

boxing

The zero-configuration Dockerfile generator for Ruby.
Ruby
61
star
3

mwc

The tool to compile mruby on WebAssembly
Ruby
18
star
4

go-plurk-robot

็™ปๅ…ฅๅœ‹่ป Online ็‚บไบ†ๅฎ‰ๆ’ซๅฏ‚ๅฏž็š„็ถฒๅ‹๏ผˆๆ‰ๆฒ’ๆœ‰๏ผ‰ๆ‰€่ฃฝไฝœ็š„ๆฉŸๅ™จไบบ
Go
11
star
5

heroku-buildpacks-php-with-phalcon

Heroku Buikdpack PHP with PhalconPHP and Composer
Shell
11
star
6

mruby-go

The pure go mruby virtual machine implementation.
Go
11
star
7

doll

The Chatbot Framework written in Ruby
Ruby
10
star
8

mruby.wasm

mruby WebAssembly using WebIDL
HTML
9
star
9

openbox

The zero-configuration Ruby container entry-point.
Ruby
9
star
10

terraform-provider-lambdalabs

The Lambdalabs provider for Terraform
Go
8
star
11

liveness

The Rack middleware to provide health check endpoints.
Ruby
8
star
12

replicate-pastel-mix

The pastel-mix model implementation on replicate
Python
8
star
13

laravel-guestbook-example

A simple guestbook create via Laravel Framework
PHP
8
star
14

mcoin

The cryptocurrency market monitor tool
Ruby
7
star
15

FiveFood

ไบ”้ฃŸ๏ผŒๆฏๅ€‹ไธŠ็ญๆ—ๅฟ…ๅ‚™็š„ๅˆ้คๆฑบ็ญ–็ณป็ตฑใ€‚
Ruby
7
star
16

hiro

The game framework based on mruby.
C
6
star
17

middleman-webpacked

Ruby
6
star
18

magica

A tool to build C++ project
Ruby
5
star
19

tide.ex

Communicate with Ruby via Erlport
Elixir
5
star
20

terraform-proxmox-kubernetes

The terraform module for create Kuberentes cluster on ProxmoxVE
HCL
5
star
21

30minGuestBook

PHP
5
star
22

administrate-notus_theme

The Administrate Notus Theme designed by Creative Tim
CSS
5
star
23

mitake

The ruby gem for Mitake SMS
Ruby
4
star
24

blog-ai.aotoki.me

The RAG API for blog.aotoki.me
TypeScript
4
star
25

hanami-lambda

Hanami Lambda is a gem that provides a way to run hanami application on AWS Lambda.
Ruby
4
star
26

gitlab-sonar-scanner

The sonar runner for gitlab-ci
Shell
4
star
27

pagoda-wp-zh_TW

WordPress zh_TW on PagodaBox
PHP
4
star
28

ai-gacha

Generate a mobile game-like card from AI
TypeScript
4
star
29

GlobalGameJam2023

Global Game Jam 2023 @ Taipei, Taiwan
TypeScript
4
star
30

202102-tdd-refactor-budget

The budget query practice of TDD & Refactor class
Ruby
3
star
31

5compiler

The compiler example written in Ruby
Ruby
3
star
32

book-craft-your-mruby-virtual-machine

The sample code of my book - craft-your-mruby-virtual-machine
C
3
star
33

warden-line

The warden strategies for LINE ID Token
Ruby
3
star
34

mask-map

2020 ๅนดๆœ€ๆต่กŒ็š„ๅฃ็ฝฉๅœฐๅœ–
Vue
3
star
35

lita-gitlab-ci

Lita Gitlab handler for send message about build status.
Ruby
3
star
36

packer-rails

Using Packer.io to builds Ruby on Rails image.
Shell
3
star
37

flowhook

Convert flowdock straming into webhook
Ruby
3
star
38

nginx-pagespeed

A docker image include nginx with pagespeed.
Shell
2
star
39

elct9620.github.com

My personal website.
HTML
2
star
40

MRubyShader

Using OpenFrameworks and mruby to build a simple shader playground.
C++
2
star
41

iv-plurk

The Plurk API client
Ruby
2
star
42

newebpay-ruby

The offsite payments implement for Newebpay
Ruby
2
star
43

MCUCourseAPI

A Ming Chuan University Course API service, using phalcon on heroku.
PHP
2
star
44

mcu-course-query-demo

A simple mcu course query demo.
JavaScript
2
star
45

plurk-salary

JavaScript
2
star
46

wvs

The "Walrus vs Slime" rewritten in DDD style
Go
2
star
47

Aotoki-Backbone.js

My Backbone.js Practice
2
star
48

mruby-shader-generator

The Ruby DSL GLSL shader code
Ruby
2
star
49

.cat

The loading cat generator
Ruby
2
star
50

cybersource

The ruby gem for Visa CyberSource API
Ruby
2
star
51

dcha

An blockchain test live in LAN using Multicast
Ruby
1
star
52

hahamut

The Bahamut Forum's chatbot ruby client implement
Ruby
1
star
53

hubot-plurk

HuBot ็š„ Plurk Adapter
1
star
54

ddd-in-unity3d-demo

A toy project to verify DDD can works in Unity3D
ShaderLab
1
star
55

try_git

1
star
56

coscup-2020-cdktf

Demo project for COSCUP 2020 LT
TypeScript
1
star
57

ar-bottle-royale

The Global Game Jam 2021
Ruby
1
star
58

turn-based-game-model-prototype

The turn-based game model prototype for @BasalticStudio NewEra
Ruby
1
star
59

RichBike

The web game prototype built in 5xRuby's Vue x uBike workshop
Ruby
1
star
60

do-kubernetes-challenge-2021

The DigitalOcean Kubernetes Challenge at 2021
Ruby
1
star
61

go-steam

Steam Web API implements in Go
Go
1
star
62

elct9620

My Profile README
1
star
63

open-story

The experimental open world story bot
Ruby
1
star
64

FlashSocketIO

FlashSocketIO implement, via AS3Websocket
ActionScript
1
star
65

gh-category

Firefox OS App Days @ Taiwan Project - Github Category
JavaScript
1
star
66

coscup-chat

A simple socket.io/express chat create at COSCUP 2012.
JavaScript
1
star
67

ac-nh-turnip-prices

Ruby
1
star
68

go-chatter

A practice using golang write a simple chatroom.
CSS
1
star
69

build-game-with-react-prototype

Inspired by https://steina.vercel.app
JavaScript
1
star
70

granblue.api

The API Endpoint for Granblue Fantasy Database
Go
1
star
71

fireplurk

A simple plurk public timeline webapp.
JavaScript
1
star
72

cucumber-playwright-example

Use cucumber and playwright together for E2E testing
TypeScript
1
star
73

elct9620-vim

My personal vimrc version.
Vim Script
1
star
74

phpconf2014-sample

My PHPConf 2014 (Taiwan) talk's sample code.
PHP
1
star
75

elixir-mud

Elixir TCP Server practice
Elixir
1
star
76

MCUCourseCLI

Ming Chuan University Course command line tools for developer.
PHP
1
star
77

pio-mrubyc

Provide mruby/c support for PlatformIO
Python
1
star
78

concourse-example-rails

T ๅฎข้‚ฆ 2017 ๅนด้ตไบบ่ณฝ - Concourse ็š„ Deploy ็ฏ„ไพ‹ๅฐˆๆกˆ
Ruby
1
star
79

reactive-pixi-poc

Domain-Driven Design with React + RxJS + PIXI.js (PoC)
TypeScript
1
star
80

setup-mruby

An action to compile mruby
TypeScript
1
star
81

nix-aura

The nix-based universal development environment
Nix
1
star
82

snake-online

A simple snake game online version
JavaScript
1
star
83

mini-cinema-bot

The LINE bot for query cinema information
Ruby
1
star