ROSE Compiler Framework/System Administration

Manual restart process

edit

In case the @reboot cron jobs were not properly saved on [hudson-rose-30], please

  • Start Jenkins
$ ssh hudson-rose@hudson-rose-30
$ cd ~/JENKINS
$ ./start.sh
  • Start Redmine
$ ssh hudson-rose@hudson-rose-30
$ cd ~/opt/redmine
$ ./redmine.sh start

Both scripts should start a screen for each service.

  • Check status
$ screen –ls
  • Github

Please also ensure that Github is started on [rose-git]. I'd imagine you may have to start the VM again.

Apache Tomcat

edit

The Apache Tomcat servlet is run locally on hudson-rose-30.

Startup

edit

startup.sh calls catalina.sh start which sources our custom jenkins-env.sh.

hudson-rose-30 $ /export/tmp.hudson-rose/applications/apache/tomcat/bin/startup.sh

On @reboot

edit
  hudson-rose-30 $ crontab -e
  @reboot /export/tmp.hudson-rose/applications/apache/tomcat/bin/startup.sh

Shutdown

edit
hudson-rose-30 $ /export/tmp.hudson-rose/applications/apache/tomcat/bin/shutdown.sh

Backup

edit

The local installation is synced by Jenkins to the NFS at /home/hudson-rose/Applications/apache/tomcat/.

Ruby

edit

RVM (Ruby Version Manager)

edit

Ruby Version Manager (RVM), https://rvm.io/.

1. Download rvm-installer:

  # Download
  $ wget --no-check-certificate https://get.rvm.io
  ...
  Saving to: `rvm-installer'

  100%[====================================================================>] 9,439       --.-K/s   in 0s      

  2012-07-05 17:09:08 (20.5 MB/s) - `rvm-installer' saved [9439/9439]

  # Change permissions to make it executable
  $ chmod +x ./rvm-installer

2. Install RVM to a local user location (i.e. not to a root/sudo location like /usr or /bin):

First, disable the SSL certificate check for cURL, used in the rvm-installer, since it could be a problem when behind a firewall. You can do this step manually (recommended), or using this ad-hoc script:

  $ sed -i 's/curl -/curl --insecure -/g' rvm-installer

Second, set the rvm_path environment variable to specify your installation location (similar to --prefix for Autoconf projects):

  $ export rvm_path=$(pwd)/rvm

Finally, install RVM:

  $ ./rvm-installer
  Downloading RVM from wayneeseguin branch master
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  100 1047k  100 1047k    0     0   322k      0  0:00:03  0:00:03 --:--:--  740k

  Installing RVM to /export/tmp.hudson-rose/opt/ruby/rvm/
      RVM PATH line found in /home/hudson-rose/.zshrc.
      RVM sourcing line found in /home/hudson-rose/.bash_profile /home/hudson-rose/.zlogin.

  # RVM:  Shell scripts enabling management of multiple ruby environments.
  # RTFM: https://rvm.io/
  # HELP: http://webchat.freenode.net/?channels=rvm (#rvm on irc.freenode.net)
  # Cheatsheet: http://cheat.errtheblog.com/s/rvm/
  # Screencast: http://screencasts.org/episodes/how-to-use-rvm

  # In case of any issues read output of 'rvm requirements' and/or 'rvm notes'

  Installation of RVM in /export/tmp.hudson-rose/opt/ruby/rvm/ is almost complete:

    * To start using RVM you need to run `source /export/tmp.hudson-rose/opt/ruby/rvm/scripts/rvm`
      in all your open shell windows, in rare cases you need to reopen all shell windows.

  # hudson-rose,
  #
  #   Thank you for using RVM!
  #   I sincerely hope that RVM helps to make your life easier and more enjoyable!!!
  #
  # ~Wayne


  rvm 1.14.5 () by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

3. Use RVM: Now, we can use RVM (as instructed by the above RVM installation message):

  $ source /export/tmp.hudson-rose/opt/ruby/rvm/scripts/rvm

For example,

  [hudson-rose@hudson-rose-31]which rvm
  /export/tmp.hudson-rose/opt/ruby/rvm/bin/rvm

Install Ruby:

# Nothing is installed yet...
[hudson-rose@hudson-rose-31]rvm list

rvm rubies

# No rvm rubies installed yet. Try 'rvm help install'.
# Check what's available...
[hudson-rose@hudson-rose-31]rvm list known | grep "\[ruby-"
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-p370]
[ruby-]1.9.1[-p431]
[ruby-]1.9.2-p180
[ruby-]1.9.2-p290
[ruby-]1.9.2-p318
[ruby-]1.9.2[-p320]
[ruby-]1.9.2-head
[ruby-]1.9.3-preview1
[ruby-]1.9.3-rc1
[ruby-]1.9.3-p0
[ruby-]1.9.3-p125
[ruby-]1.9.3[-p194]
[ruby-]1.9.3-head
# Install Ruby version 1.9.2-p320
[hudson-rose@hudson-rose-31]rvm install ruby-1.9.2-p320
...
ruby-1.9.2-p320 - adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
ruby-1.9.2-p320 - #importing default gemsets (/export/tmp.hudson-rose/opt/ruby/rvm/gemsets/)
Install of ruby-1.9.2-p320 - #complete
[hudson-rose@hudson-rose-31]rvm list

rvm rubies

=* ruby-1.9.2-p320 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

Boost

edit
GCC 4.2.4
=========
  $ source /nfs/apps/gcc/4.2.4/setup.sh
  $ source /nfs/apps/gmp/4.2.4/setup.sh 
  $ source /nfs/apps/mpfr/2.3.2/setup.sh

Python 2.6.5
============
  $ source /nfs/apps/python/latest/setup.sh
  $ python --version
  Python 2.6.5

  $ ./bootstrap.sh --prefix=/export/tmp.hudson-rose/opt/boost_64bit_install/boost_X_XX_X-inst
  $ ./b2 install --prefix=/export/tmp.hudson-rose/opt/boost_64bit_install/boost_X_XX_X-inst -j24

Gitolite

edit

Sitaramc's Gitolite software (https://github.com/sitaramc/gitolite/) "allows you to setup git hosting on a central server, with fine-grained access control and many more powerful features." See the documentation for more details.

Here are some benefits of Gitolite-hosted Git repositories compared to filesystem-hosted repositories:

  • Authorized access only: SSH key-pairs for authentication purposes
  • Only Git operations permitted: nobody is allowed to modify the Git repositories on the server (e.g. change permissions, manually manipulate the bare repository's index, etc.). This is achieved by restricting remote commands over SSH using the command keyword in the ${HOME}/.ssh/authorized_keys file of the Gitolite user account on the Gitolite server. See this brief guide for more details.

Note: Gitolite is purely a software tool to host Git repositories. It does not provide code review, issue tracking, a web interface, or repository wikis, etc.