Line 1: |
Line 1: |
| + | Deprecated. Unavailable from 31st July 2022. --[[User:Quozl|Quozl]] ([[User talk:Quozl|talk]]) 19:21, 4 February 2023 (EST) |
| + | |
| == Hostnames == | | == Hostnames == |
| | | |
− | * http://git.sugarlabs.org | + | * [http://git.sugarlabs.org git.sugarlabs.org], Gitorious main site. |
| + | * [http://src.sugarlabs.org/ src.sugarlabs.org], Git repositories capable for HTTP cloning. |
| + | * Gitorious diagnostic page (only for admins) [http://git.sugarlabs.org/admin/diagnostics]. |
| + | * Gitorious diagnostic summary page [http://git.sugarlabs.org/admin/diagnostics/summary]. |
| | | |
| == Hardware == | | == Hardware == |
| | | |
− | [[Machine/housetree/jita]] | + | [[Machine/jita]] |
| | | |
| == Administrative contact == | | == Administrative contact == |
Line 16: |
Line 21: |
| | | |
| * [[User:alsroot|Aleksey Lim]] | | * [[User:alsroot|Aleksey Lim]] |
− | * ''puppet related stuff is still in progress of settling down''
| |
| | | |
| == Notes == | | == Notes == |
Line 26: |
Line 30: |
| !scope="row" | Home | | !scope="row" | Home |
| |{{Code|/srv/gitorious}} | | |{{Code|/srv/gitorious}} |
| + | |- |
| + | !scope="row" | Daemon |
| + | |{{Code|/etc/init.d/gitorious}} |
| |- | | |- |
| !scope="row" | Logs | | !scope="row" | Logs |
| |{{Code|/srv/gitorious/app/log}} | | |{{Code|/srv/gitorious/app/log}} |
| |- | | |- |
− | !scope="row" | Main service | + | !scope="row" | Config |
− | |{{Code|gitorious-all}} | + | | |
| + | {{Code|/srv/gitorious/app/config/database.yml}}<br> |
| + | {{Code|/srv/gitorious/app/config/gitorious.yml}}<br> |
| + | {{Code|/etc/cron.daily/gitorious}}<br> |
| + | {{Code|/etc/logrotate.d/gitorious}}<br> |
| + | {{Code|/etc/httpd/conf.d/git.sugarlabs.org.conf}} |
| + | |- |
| + | !scope="row" | SSL certificates |
| + | | |
| + | {{Code|/etc/ssl/private/git.sugarlabs.org.key}}<br> |
| + | {{Code|/etc/ssl/certs/git.sugarlabs.org.pem}} |
| + | |- |
| + | !scope="row" | Ports |
| + | | |
| + | {{Code|9418}} git server |
| + | |- |
| + | !scope="row" | Sources |
| + | | http://gitorious.org/~alsroot/sugarlabs-org |
| |- | | |- |
| |} | | |} |
| | | |
− | Looks like Gitorious Web UI leaks, it might grow from 200M to 1.2G during a week. Had to restart {{Code|gitorious-webui}} from daily cron.
| + | === Plugins === |
| + | |
| + | Sugar Labs Gitorious instance uses downstream several plugins. All of them are enabled from {{Code|app/processors/push_event_processor.rb}} file and placed to {{code|lib/}} directory. |
| + | |
| + | ==== CIA ==== |
| + | |
| + | Notify http://cia.vc about all commits. |
| + | |
| + | Plugin file: |
| + | |
| + | lib/cia.rb |
| + | |
| + | {{Code|gitorious.yml}} configuration: |
| + | |
| + | cia: true |
| + | |
| + | ==== Patchwork ==== |
| + | |
| + | [http://patchwork.sugarlabs.org/ Patchwork] integration. |
| + | |
| + | Plugin file: |
| | | |
− | === Database tweaks === | + | lib/patchwork.rb |
| + | |
| + | {{Code|gitorious.yml}} configuration: |
| + | |
| + | patchwork: |
| + | sugar: |
| + | url: "https://git.sugarlabs.org:0000000000000000000000000@patchwork.sugarlabs.org/xmlrpc/" |
| + | linkname: sugar |
| + | repositories: |
| + | - mainline |
| + | set_state: Accepted |
| + | find_states: |
| + | - New |
| + | - Under Review |
| + | |
| + | ==== Pootle commits ==== |
| + | |
| + | Send notification emails on every pootle commit. |
| + | |
| + | Plugin file: |
| + | |
| + | lib/emailer.rb |
| + | |
| + | {{Code|gitorious.yml}} configuration: |
| + | |
| + | emailer: true |
| + | |
| + | === Database tips === |
| | | |
| To make runtime changes in Gitorious database, follow regular Rails workflow - run {{Code|scripts/console}}: | | To make runtime changes in Gitorious database, follow regular Rails workflow - run {{Code|scripts/console}}: |
Line 44: |
Line 115: |
| sudo -u gitorious RAILS_ENV=production script/console | | sudo -u gitorious RAILS_ENV=production script/console |
| | | |
− | It is regular Ruby console and all feature like {{Code|TAB}} completion work. To tweak Gitorious data, just use its [http://gitorious.org/gitorious/mainline/trees/master/app/models model classes], e.g.: | + | It is regular Ruby console and all features, like {{Code|TAB}} completion, work. To tweak Gitorious data, just use its [http://gitorious.org/gitorious/mainline/trees/master/app/models model classes], e.g.: |
| | | |
| # search of particular object by its attributes | | # search of particular object by its attributes |
Line 59: |
Line 130: |
| # destroy object and all its dependencies | | # destroy object and all its dependencies |
| user.destroy | | user.destroy |
− | | + | |
− | === Tips ===
| |
− | | |
| # reset user password | | # reset user password |
| user = User.find_by_email("user") | | user = User.find_by_email("user") |
Line 92: |
Line 161: |
| repo.name = "sat-solver" | | repo.name = "sat-solver" |
| repo.save! | | repo.save! |
| + | |
| + | # check users permissions for particular repository |
| + | repo = Repository::find_by_path("pukllanapac/mainline") |
| + | repo.committerships.each {|i| puts "#{User.find(i.committer_id).login} review=#{i.permissions & Committership::CAN_REVIEW > 0}"} |
| + | repo.committerships.each {|i| puts "#{User.find(i.committer_id).login} commit=#{i.permissions & Committership::CAN_COMMIT > 0}"} |
| + | repo.committerships.each {|i| puts "#{User.find(i.committer_id).login} admin=#{i.permissions & Committership::CAN_ADMIN > 0}"} |
| | | |
− | === Sources === | + | === TODO === |
| | | |
− | * http://gitorious.org/~alsroot/sugarlabs-org
| + | Current gitorious patch doesn't handle renaming repositories properly and doesn't update symliks in {{Code|/srv/gitorious/repos-by-name}}. For now, run code to recreate symlinks: |
| + | |
| + | Repository::find_each {|i| s='/srv/gitorious/repos/' + i.real_gitdir; d='/srv/gitorious/repos-by-name/' + i.gitdir; FileUtils.makedirs(File.dirname(d)) if !File.exist?(File.dirname(d)); File.symlink(s, d) if !File.exists? d} |
| | | |
| == Upgrade notes == | | == Upgrade notes == |
| | | |
− | Upgrade will be triggered on every puppet session (if there is such need), vcs repository will be rebased to the HEAD commit with all related changes like database migration.
| + | {| class="wikitable" |
| + | !scope="row" | git |
| + | | |
| + | {{Code|/srv/gitorious/app}} |
| + | |- |
| + | |} |
| + | |
| + | After pulling new sources, migrate database: |
| + | |
| + | cd /srv/gitorious/app/ |
| + | sudo -u gitorious RAILS_ENV=production rake db:migrate |
| + | |
| + | To restart only Web application, instead of restarting the daemon, call: |
| + | |
| + | touch /srv/gitorious/app/tmp/restart.txt |
| + | |
| + | === Hardware migration === |
| + | |
| + | '''Disable servers of both hosts.''' |
| + | |
| + | mv /srv/gitorious/ssh/.ssh/authorized_keys{,.bak} |
| + | |
| + | a2dissite git.sugarlabs.org |
| + | a2dissite cgit.sugarlabs.org |
| + | /etc/init.d/apache2 reload |
| + | |
| + | /etc/init.d/gitorious-git stop |
| + | /etc/init.d/gitorious-poller stop |
| + | /etc/init.d/gitorious-sphinx stop |
| + | /etc/init.d/gitorious-stomp stop |
| + | |
| + | '''On old server.''' |
| + | |
| + | * Dump MySQL database: |
| + | |
| + | mysqldump -u root -h localhost -p gitorious | xz > dump.slq.xz |
| + | |
| + | '''On new server.''' |
| + | |
| + | * Create MySQL user and database for Gitorious: |
| + | |
| + | GRANT ALL PRIVILEGES ON *.* TO 'gitorious'@'localhost' IDENTIFIED BY '<insert password>' WITH GRANT OPTION; |
| + | FLUSH PRIVILEGES; |
| + | CREATE DATABASE gitorious; |
| + | |
| + | * Make preparations from root user: |
| + | |
| + | useradd gitorious -d /srv/gitorious/ssh -m |
| + | cat >> /srv/gitorious/ssh/.profile <<EOF |
| + | export RAILS_ENV=production |
| + | cd /srv/gitorious/app |
| + | EOF |
| + | xzcat dump.slq.xz | mysql -u root -p -D gitorious |
| + | |
| + | * Make preparations from gitorious user: |
| + | |
| + | su - gitorious |
| + | |
| + | mkdir /srv/gitorious/repositories-mirror |
| + | mkdir /srv/gitorious/repositories-mirror |
| + | mkdir /srv/gitorious/tmp |
| + | |
| + | git clone git://git.sugarlabs.org/sl-tweaks/gitorious.git /srv/gitorious/app |
| + | |
| + | rsync --delete-after -PHAXhaxv $OLD_HOST:/srv/gitorious/repositories/ /srv/gitorious/repositories/ |
| + | rsync --delete-after -PHAXhaxv $OLD_HOST:/srv/gitorious/app/public/system/ /srv/gitorious/app/public/system/ |
| + | rsync --delete-after -PHAXhaxv $OLD_HOST:/srv/gitorious/ssh/.ssh/authorized_keys.bak /srv/gitorious/ssh/.ssh/authorized_keys |
| + | |
| + | cd /srv/gitorious/app |
| + | rake db:migrate |
| + | rake ts:rebuild |
| + | rake mirror:symlinkedrepos |
| + | rake assets:clear |
| + | |
| + | * Start up Gitorious. |
| + | |
| + | a2ensite git.sugarlabs.org |
| + | a2ensite cgit.sugarlabs.org |
| + | /etc/init.d/apache2 reload |
| + | |
| + | /etc/init.d/gitorious-git start |
| + | /etc/init.d/gitorious-poller start |
| + | /etc/init.d/gitorious-sphinx start |
| + | /etc/init.d/gitorious-stomp start |
| + | |
| + | == Sources == |
| + | |
| + | * [https://gitorious.org/~alsroot/gitorious/sugarlabs-org Downstream repository]. |
| + | * [https://gitorious.org/gitorious/mainline Upstream repository]. |