From: "NARUSE, Yui" Date: 2012-03-01T19:54:50+09:00 Subject: [ruby-core:43032] Re: English instructions for setting up chkbuild? (2012/03/01 3:04), Luis Lavena wrote: > I've looked into RubyCI: http://rubyci.org/ > > And thought would be great to contribute other type of box for > building on a different architecture and platform, perhaps even have > this running on Windows. > > It links back to chkbuild repository: > > http://cvs.m17n.org/viewcvs/ruby/chkbuild/ > > Which it's only documentation is in Japanese. > > Questions: > > 1) Is there any other documentation available to getting started with chkbuild? Translation by google translate and my fix is below. > 2) Is there a alternate Subversion or Git repository for chkbuild > source? CVS is not on my toolbelt and completely ignorant on how to > set it up on Windows Doesn't mingw include cvs.exe? = Chkbuild chkbuild is to build the software on a regular basis, and generate HTML page as a record of the build. == Author Akira Tanaka == Feature * You can set the timeout After the timeout, kill the process. Therefore, it will finish at the specified time even if it may stack. * Automatically takes backtrace Once the core has been generated build results, start the gdb automatically, and record the backtrace. * Records of the past are automatically compressed gzip * Compare with the previous record For example the time of day you run the command, something different every time is replaced by preprocessor before comparison. It is also possible to set a target to replace individual-specific configuration of the build. * If you get the source form cvs or svn, generate a link to the diff of ViewVC. * Even if they occur failures in a single build, you can continue with the rest part that does not depend on the failure. == How to install and build the latest version of ruby ������and to try for the impatient user % cd $HOME % cvs -d :pserver:anonymous@cvs.m17n.org:/cvs/ruby ������co chkbuild % cd chkbuild % ruby start-build % w3m tmp/public_html/ruby-trunk/summary.html % w3m tmp/public_html/ruby-1.8/summary.html % w3m tmp/public_html/ruby-1.8-pth/summary.html % rm -rf tmp This way is for trial, Don't use this with cron. == Installation Assumption: * your user name is foo, * Install chkbuild to /home/foo/chkbuild. Replace $U with foo or something. (1) Download chkbuild and extract % export U=foo % cd /home/$U % cvs -d: pserver: anonymous@cvs.m17n.org :/ cvs / ruby ������co chkbuild (2) Setting of chkbuild There are various examples in sample directory. You can edit appropriate one. start-build is a script that calls the sample. % cd chkbuild % vi sample/build-ruby % vi start-build More detailed settings will be discussed in the next section. Note that you must set ChkBuild.top_uri = "..." as the URL to publish the results if you use RSS. There are comments about this in sample/build-ruby. (If you do not edit this, inappropriate URL will be embedded into the HTML.) In the case running ruby ������start-build without configuration. it build ruby's trunk and some branches in /home/$U/chkbuild/tmp. If you are building as a $U user, you have to remove the build results because it will disturb the build of the chkbuild user. % rm -rf tmp (3) Create chkbuild user Create a dedicated user group for the chkbuild user. For security, please make sure it is only for the chkbuild user. In addition, add $U to the chkbuild group, create a directory with the owner group mode as written below, and chkbuild can write only under build and public_html directory. /home/chkbuild user=$U group=chkbuild mode=2755 /home/chkbuild/build user=$U group=chkbuild mode=2775 /home/chkbuild/public_html user=$U group=chkbuild mode=2775 % su # adduser --disabled-login --no-create-home chkbuild # usermod -G ...,chkbuild $U # cd /home # mkdir chkbuild # chown $U:chkbuild chkbuild # chmod 2755 chkbuild # mkdir chkbuild/build # mkdir chkbuild/public_html # chown $U:chkbuild chkbuild/build chkbuild/public_html # chmod 2775 chkbuild/build chkbuild/public_html # exit (4) Generated Directory setting % ln -s /home/chkbuild /home/$U/chkbuild/tmp If you want to build under /home/chkbuild with the default settings, it is easy to make a symbolic link. (5) File upload by rsync If the host which chkbuild runs differs from the HTTP server to publish generated files, you can copy them with rsync over ssh. To do this, you generated (no pass phrase) is first used to communicate key pair ssh. % Ssh-keygen-N''-t rsa-f chkbuild-upload-C chkbuild-upload In the HTTP server will create a directory to store uploaded files Here we will use the / home / $ U / public_html / chkbuild. % Mkdir-p / home / $ U / public_html / chkbuild Create a set of rsync daemon for receiving an upload with HTTP server. (. Does not mean to say that you always move daemon) Here is to make and / home / $ U / .ssh / chkbuild-rsyncd.conf. Rsync daemon to use this setting is under / home / $ U / public_html / chkbuild Will be write-only. / Home / $ U / .ssh / chkbuild-rsyncd.conf: [Upload] path = / home / $ U / public_html / chkbuild use chroot = no read only = no write only = yes - The user receives a HTTP server upload / .ssh / authorized_keys Add the following. This is what you want to use the key here is to be dedicated to start the rsync daemon on the above settings. command = "/ usr / bin / rsync - server - daemon -. config = / home / $ U / .ssh / chkbuild-rsyncd.conf", no-port-forwarding, no-X11-forwarding, no- The contents of the generated public key chkbuild-upload.pub agent-forwarding, no-pty above on the host operating the chkbuild, to record the ssh fingerprint of the HTTP server. The http-server and the host name of the HTTP server. % Mkdir / home / chkbuild / .ssh % Ssh-keyscan-t rsa http-server> / home / chkbuild / .ssh / known_hosts Of the host to operate the private key chkbuild the generated key pair on the Copy the / home / chkbuild / .ssh / The group permissions, such as the secret key and a user-readable chkbild Sets. % Cp chkbuild-upload chkbuild-upload.pub / home / chkbuild / .ssh / % Su # Chgrp chkbuild / home / chkbuild / .ssh / chkbuild-upload # Chmod g + r / home / chkbuild / .ssh / chkbuild-upload And, enable the following line in the start-build. ChkBuild.rsync_ssh_upload_target ("remoteuser @ http-server :: upload / dir", "/ home / chkbuild / .ssh / chkbuild-upload") Copy of the HTTP server to be / home / $ U / public_html / chkbuild / dir This Will look like. (6) Setting of HTTP server chkbuild in order to save bandwidth and disk, and then gzip the file compression. Compressed files and file names will be html.gz. * That *. Txt.gz. In order to view these files from the browser headers, such as: Must be sent to the browser from the HTTP server. Content-Type: text / html Content-Encoding: gzip In addition, because it gives you a file named rss RSS, give the following header. Content-Type: application / rss + xml How do these settings is dependent on the HTTP server, For Apache, you can control the module header mod_mime. http://httpd.apache.org/docs/2.2/mod/mod_mime.html Concrete way, but depend on the status of the global setting, By putting them in / home / $ U / public_html / .htaccess settings such as: May be able to accomplish the above. # Suppress the AddType for. Gz in the configuration of the entire server, # Content-Encoding in file gz:. To gzip # Content-Type for html:. It to text / html is a server-wide settings # Here we do not do as what is done RemoveType. Gz AddEncoding gzip. Gz # File named rss is Content-Type: and application / rss + xml ForceType application / rss + xml (7) Settings to run on a recurring basis # Vi / etc / crontab For example, to run 33 minutes every day at 3 am like the following in root's crontab Sets. 33 3 *** root cd / home / $ U / chkbuild; su chkbuild-c / home / $ U / chkbuild / start-build by su chkbuild, to launch the start-build in chkbuild user. (8) announcement If you want to see a developer Ruby, you might want to register Ruby hotlinks. http://www.rubyist.net/~kazu/samidare/latest == Configuration Settings of chkbuild are written in Ruby. In fact, the body of the chkbuild is a library of Ruby named chkbuild.rb, so the setting is to write a script which uses chkbuild.rb. == Security by chkbuild, to compile the latest version can be downloaded from the cvs / svn / git server, You will want to trust the code that comes with the developer and the server can be written to the server. To trust the developers usually not a problem. If you do not trust the developer, then you will not use the program in the first place. However, to trust the code that comes with server is fraught with subtle problem. The server might be cracked, a malicious person to insert malicious code. For example, if you are running with the privileges of, it does not they may have been removed in your home directory, May be put away your private key has been stolen. For this reason, chkbuild will run in at least a dedicated user, There should not make any changes to your home directory. So that they will not be rewritten the script itself chkbuild, you should chkbuild and its dedicated user and also owned by another user. In addition, the need to provide a user dedicated to the term "another user" is not. It is also good for your permission, can be a root. In addition, if you want to have more carefully, Please also consider limiting the environment xen, chroot, jail, user mode linux, VMware, in and so on. == TODO * To generate index.html == LICENSE Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and / or other materials provided with the distribution. 3. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR `` AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (The modified BSD license) -- NARUSE, Yui