Allows a GitHub application to communicate with a server and that server can trigger executions on a CI and control the creation of Check Suite and Run for each new creation and commit in a PR.
The first step before running the system is to install these programs:
- Ruby (+2.7 or +3.0)
- PostgreSQL (any version)
- Git
- Redis (https://redis.io/)
The project does not use any Ruby versioning services (RVM or Rbenv) and the gems must be available as Debian packages. We have a Gemfile to install the gems, but any gem must be available as a package.
Production / Development
- puma
- ruby-json
- ruby-jwt
- ruby-netrc
- ruby-octokit
- ruby-otr-activerecord
- ruby-pg
- ruby-sidekiq
- ruby-sidekiq-cron
- ruby-sinatra
Test
In addition to the gems listed above, we need these to run the tests locally:
- rubocop
- ruby-database-cleaner
- ruby-factory-bot
- ruby-faker
- ruby-rack-test
- ruby-rubocop-performance
- ruby-rspec
- ruby-webmock
This document provides instructions on how to configure the database for the GitHub Hook Server project.
Ensure you have the following installed on your system:
- PostgreSQL (any version)
-
Install PostgreSQL: Follow the instructions for your operating system to install PostgreSQL. You can find the installation guide on the official PostgreSQL website.
-
Create a Database: After installing PostgreSQL, create a new database for the project. You can do this using the
psql
command-line tool or any PostgreSQL client.RAKE_ENV=development psql -c "CREATE DATABASE github_hook_server_development;"
-
Configure Database Connection: Update the
config/database.yml
file with the database connection details. You can use the following configuration as a template:development: adapter: postgresql encoding: unicode database: github_hook_server_development pool: 5 username: postgres password: password host: localhost port: 5432
Replace the
username
,password
,host
, andport
values with your PostgreSQL connection details. -
Run Database Migrations: After configuring the database, run the database migrations to set up the necessary tables and schema.
bundle exec rake db:migrate
- Verify the Configuration: Start the application and verify that it can connect to the database without any errors.
RAILS_ENV=development rackup -o 0.0.0.0 -p 9292 config.ru
GitHub Hook is initialized at production mode running the following command:
RAILS_ENV=production RACK_ENV=production rackup config.ru -o 0.0.0.0 -p 4667
It is important that you have registered an application with GitHub for this tool to work correctly.
Just run the command: rackup -o 0.0.0.0 -p 9292 config.ru
Rubocop can be executed with the following command: rubocop -A
.
The '-A' parameter will automatically fix some code mistakes.
Rspec be executed with the following command: rspec ./spec --pattern '**/*_spec.rb'
This guide will walk you through the steps to install RVM (Ruby Version Manager) on your system.
Before you begin, ensure you have the following installed on your system:
curl
gpg
You can install these using your package manager. For example, on Debian-based systems, you can use:
sudo apt update
sudo apt install -y curl gpg
- Install RVM To install RVM, run the following command:
\curl -sSL https://get.rvm.io | bash -s stable
- Load RVM Scripts After the installation, you need to load the RVM scripts. Add the following line to your shell profile (~/.bashrc, ~/.zshrc, etc.):
source ~/.rvm/scripts/rvm
Then, reload your shell profile:
source ~/.bashrc # or source ~/.zshrc
- Verify the Installation To verify that RVM is installed correctly, run:
rvm --version
You should see the RVM version information.
Once RVM is installed, you can use it to install Ruby versions.
- Install a Ruby Version To install a specific version of Ruby, use the following command:
rvm autolibs disable
rvm install 3.3.1
- Use a Ruby Version To use a specific version of Ruby, run:
rvm use 3.3.1 --default
This sets the specified Ruby version as the default for your shell.
- Verify the Ruby Installation To verify that Ruby is installed correctly, run:
ruby --version
You should see the version of Ruby that you installed.
RVM allows you to manage multiple Ruby versions. You can switch between them as needed.
List Installed Ruby Versions
To list all installed Ruby versions, run:
rvm list
Switch Ruby Versions To switch to a different Ruby version, use:
rvm use <version>
Uninstalling RVM If you need to uninstall RVM, you can do so with the following command:
rvm implode
The bin/console script allows you to interact with the application in an interactive Ruby (IRB) session. This can be useful for debugging, running commands, and interacting with the application's models and database.
-
find_organization(name)
- Description: Finds an organization by its name.
- Parameters:
- name: The name of the organization to find.
-
create_organization(name, attributes = {})
- Description: Creates a new organization with the given attributes.
- Parameters:
- name: The name of the organization to create.
- attributes: A hash of attributes for the organization.
- contact_email: The contact email of the organization (string).
- contact_name: The contact name of the organization (string).
- url: The URL of the organization (string).
-
edit_organization(name, attributes = {})
- Description: Edits an existing organization with the given attributes.
- Parameters:
- name: The name of the organization to edit.
- attributes: A hash of attributes to update for the organization.
- contact_email: The contact email of the organization (string).
- contact_name: The contact name of the organization (string).
- url: The URL of the organization (string).
-
find_github_user(login)
- Description: Finds a GitHub user by their login.
- Parameters:
- login: The GitHub login of the user to find.
-
add_user_in_organization(login, organization_name)
- Description: Adds a GitHub user to an organization.
- Parameters:
- login: The GitHub login of the user to add.
- organization_name: The name of the organization to add the user to.
-
remove_user_from_organization(login)
- Description: Removes a GitHub user from their organization.
- Parameters:
- login: The GitHub login of the user to remove.
-
add_github_user_slack_user(github_login, slack_user)
- Description: Links a GitHub user to a Slack user.
- Parameters:
- github_login: The GitHub login of the user to link.
- slack_user: The Slack username to link to the GitHub user.
Examples
-
Find an organization by name:
- find_organization('NetDEF')
-
Create a new organization:
- create_organization('NetDEF', contact_name: 'Rodrigo Nardi')
-
Edit an existing organization:
- edit_organization('NetDEF', contact_name: 'Martin Winter')
-
Find a GitHub user by login:
- find_github_user('rodrigonardi')
-
Add a user to an organization:
- add_user_in_organization('rodrigonardi', 'NetDEF')
-
Remove a user from an organization:
- remove_user_from_organization('rodrigonardi')
-
Link a GitHub user to a Slack user:
- add_github_user_slack_user('rodrigonardi', 'slack_user')