GCEは、DebianとCentOS6が選べるのですが、私はCentOS6を選びました。
まず、GCEのファイアウォールの設定を行います。これは、iptablesではなく、GCEのインスタンスに対するファイアウォールの設定です。Cloud Consoleからでもできますが、以下のコマンドを実行しました。ポートを8888を許可する設定にしていますが、Jenkinsのデフォルトポートをそのまま使えると思うので、デフォルトのポートを使う場合は、tcp:8080にしてください。
GCEのインスタンスを起動するには、Google Cloud Consoleからインスタンスを起動するのですが、まず、前提として、「課金設定をする」必要があります。(課金設定をしないと、GCEの初期化が成功しない。)インスタンスを生成して、起動するところまでのメモは以前投稿しているのでそちらをごらんください。Google Cloud SDKもダウンロード済みだということにします。(私は忘れていたけど…)
ファイアウォールの設定
まず、GCEのファイアウォールの設定を行います。これは、iptablesではなく、GCEのインスタンスに対するファイアウォールの設定です。Cloud Consoleからでもできますが、以下のコマンドを実行しました。ポートを8888を許可する設定にしていますが、Jenkinsのデフォルトポートをそのまま使えると思うので、デフォルトのポートを使う場合は、tcp:8080にしてください。
$ gcutil addfirewall [インスタンス名] --description="Jenkins用のポート" --allowed="tcp:8888"
そして、sshでログインして、iptablesを切る。(GCEのファイアウォールに委ねるので。これに気がつくのに時間がかかってしまいました…。二重にブロックされるので結構うっとうしい…。)
$ sudo service iptables save $ sudo service iptables stop $ sudo chkconfig iptables off
次回の起動でiptablesが動いてくれると困るので、chkconfigでoffにしておきます。
Javaもyumで入れましたが、公式のものが入れられなかった(多分、ブラウザでアクセスして、利用規約に同意のチェックがいる?)のでopenjdkを入れました。Jenkinsが動けば問題は無いので、細かいことは無視しました。
Javaのインストール
Javaもyumで入れましたが、公式のものが入れられなかった(多分、ブラウザでアクセスして、利用規約に同意のチェックがいる?)のでopenjdkを入れました。Jenkinsが動けば問題は無いので、細かいことは無視しました。
$ sudo yum search jdk java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle ldapjdk-javadoc.x86_64 : Javadoc for ldapjdk icedtea-web.x86_64 : Additional Java components for OpenJDK - Java browser plug-in : and Web Start implementation ldapjdk.x86_64 : The Mozilla LDAP Java SDK $ sudo yum install java-1.7.0-openjdk-devel.x86_64
Jenkinsのインストール
Jenkinsをインストールします。Jenkinsのrpm版が提供されていたのでもしかしたら?と思ったら、yumでインストールも可能だったので、yumにKeyを登録してインストールしています。$ sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo $ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key $ sudo yum install jenkins
Jenkinsの設定とサービスの登録
PORTを8888に変更する。(デフォルトが8080なので、そのままでもいいと思いますが)$ sudo vi /etc/sysconfig/jenkins JENKINS_PORT="8888"
$ sudo chkconfig jenkins on
Jenkinsを起動させる。(初回だけ)
$ sudo service jenkins start
Jenkinsの起動確認
ブラウザで、http://[VM InstanceのEXTERNAL ADDRSSのipアドレス]:8888/
にアクセスしてJenkinsが表示されれば、成功です。
Gitも忘れずにインストールしておきましょう
Gitのインストール
$ sudo yum install git
Goをソースからインストールする。
私はこれしかしたことがないので(?)、今回もソースからGoをインストールしました。Goをコンパイルするために、gccとmakeを、ソースコードをダウンロードするためにmercurialをインストールしました。
$ sudo yum install mercurial-hgk.x86_64 $ sudo yum install gcc $ sudo yum install make $ hg clone -u release https://code.google.com/p/go $ cd go/src $ ./all.bash
GCE上でGoのコンパイルをしてみたのですが、意外と早くて、1分30秒程度で終わったような気がします。そこからtestが始まりましたが、testはもう少しかかったかも?
で、喜んでいたら、一般ユーザのディレクトリでビルドしてしまったので、Jenkinsからコマンドを実行しようと思うと、Permissionで弾かれてしまいますから、これも良くないのですが、/home/ユーザのディレクトリにchmod o+rxしてしまいました。
次回以降は気をつけようと思います。基本は/usr/local以下ですかね。
Jenkinsのプロジェクト設定
Jenkinsにgitプラグインを入れたのですが、よく考えると、Goの場合は、go getでダウンロードしてからgo testですので、gitプラグインは無くても大丈夫です。したがって、ビルドの設定の「シェルの実行」のところに、コマンドをいくつか書きました。
export GOPATH=${WORKSPACE} /home/yokoyama/go/bin/go get github.com/taknb2nch/go-pop3 cd ${WORKSPACE}/ /home/yokoyama/go/bin/go test
ポイントは、GOPATH変数を都度exportしているところでしょうか。go get/go testコマンドを実行しようと思うと、GOPATHに入れておかないといけませんからこのような形になります。
リポジトリは、+Takanobu Haginoさんが作られた、POP3のライブラリを対象にしてみました。(私のリポジトリにしようかと思いましたが、私のはどれもレガシーコードですので…w)
結果
ちゃんと、PASSの文字が輝いております。
Started by user anonymous Building in workspace /var/lib/jenkins/jobs/Sample/workspace [workspace] $ /bin/sh -xe /tmp/hudson5366985436882835859.sh + export GOPATH=/var/lib/jenkins/jobs/Sample/workspace + GOPATH=/var/lib/jenkins/jobs/Sample/workspace + /home/yokoyama/go/bin/go get github.com/taknb2nch/go-pop3 + cd /var/lib/jenkins/jobs/Sample/workspace/ + /home/yokoyama/go/bin/go test PASS ok _/var/lib/jenkins/jobs/Sample/workspace 0.003s Finished: SUCCESS
今回は、「手動実行」まででとどめました。常時起動するほどテストをすることがないということと、課金の問題があるので、無駄に起動しておくのはまずい。ということが大きな理由です。これで、GCEについてのノウハウが少しずつ貯めていけそうです。
参考サイト
https://developers.google.com/compute/docs/quickstart#centoshttp://d.hatena.ne.jp/katsuren/20121030/1351569655
http://d.hatena.ne.jp/okinaka/20120404/1333524730
0 件のコメント:
コメントを投稿