Skip to content

ruby/git.ruby-lang.org

This branch is up to date with master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1cc06e7 · Apr 24, 2025
Jan 18, 2024
Apr 17, 2025
Dec 25, 2024
Mar 26, 2025
Apr 17, 2025
Apr 24, 2025
Aug 20, 2019
Apr 21, 2019
Mar 18, 2025
Oct 20, 2022
Mar 27, 2024
Feb 17, 2023
Aug 10, 2019
Sep 24, 2021
Oct 20, 2022
Jul 8, 2019

Repository files navigation

git.ruby-lang.org test

Features

On each commit of Ruby's Git repository, following git hooks are triggered:

pre-receive

  • Verify committer email from SVN_ACCOUNT_NAME associated to SSH key used for git push
  • Reject merge commits (ask @mame about why)

post-receive

  • Send notification to ruby-cvs@ruby-lang.org
  • Commit automatic styling:
    • remove trailing spaces
    • append newline at EOF
    • expand tabs
  • Update version.h if date is changed
  • Request Redmine to fetch changesets
  • Mirror cgit to GitHub
  • Notify committer's Slack

The directory structure of git.ruby-lang.org

  • /data/git/ruby.git: Bare Git repository of ruby
    • hooks/post-receive: Run /home/git/git.ruby-lang.org/hooks/post-receive.sh
  • /home/git/git.ruby-lang.org: Cloned Git repository of git.ruby-lang.org

Notes

  • There's a symlink /var/git -> /data/git.
  • User git's $HOME is NOT /home/git but /var/git.

How to deploy ruby/git.ruby-lang.org

Authentication

  • We use only admin user for git.ruby-lang.org's SSH access.
    • You should contact @hsbt, @mame or @k0kubun for accessing git.ruby-lang.org.

bin, cgi-bin, hooks

  • git push to ruby/git.ruby-lang.org's master branch automatically updates them.
    • ruby/git.ruby-lang.org push webhook triggers cgi-bin/webhook.cgi
    • It runs sudo -u git bin/update-git-ruby-lang-org.sh

recipes

# dry-run
bin/hocho apply -n git.ruby-lang.org

# apply
bin/hocho apply git.ruby-lang.org

TODO for recipes for git.ruby-lang.org

  • How to store ssh_host_key* and sshd_config safely?
  • How to write a recipe to mount data volume for bare git repository?
  • How to write a recipe for mackerel with the host key of git.ruby-lang.org?

How to set up default gem sync

  1. Add your gem repository name to DEFAULT_GEM_REPOS in cgi-bin/webhook.cgi, and push it to master.
  2. Go to https://github.com/ruby/{repo_name}/settings/hooks, and add a webhook
    • Payload URL: Set the content of ~git/config/git-ruby-lang-org-url in git.ruby-lang.org
    • Content type: application/json
    • Secret: Set the content of ~git/config/git-ruby-lang-org-secret in git.ruby-lang.org
    • Which events: Just the push event.

License

Ruby License