JenkinsでCygwinを使う
仕事で Windows にインストールした Jenkins を使う機会があったのでまとめ
Jenkins x Cygwin に関する記事があまりなかったので備忘のために書きます
※Windows を使いなれていない人向け
環境
Windows10
64bit
インストール
インストールについてはいろいろ記事があるので簡単に
Windows にJenkinsをインストール
https://qiita.com/4_mio_11/items/de90df3682323c30319a
とかわかりやすいです
Cygwinのインストール
https://cygwin.com/install.html
setup-x86_64.exe をダウンロードして実行
言われるがままにOKを押してインストールします(自己責任で)
C:\cygwin64\bin\sh.exe
が作られたことを確認します
※64bitマシンの場合、ディレクトリ名に 64
がついてますね
Jenkins設定
Jenkinsを開き、 Jenkins
-> Manage Jenkins
-> Configure System
と選択
Shell
-> Shell executable
の欄に、先ほど確認した Cygwin の実行ファイル(C:\cygwin64\bin\sh.exe
)を指定
ジョブ作成
通常の手順でジョブを作ります
Build 項目でビルドステップを追加します。このとき Execute shell
を追加。
これにより、先ほど設定した C:\cygwin64\bin\sh.exe
をシェルとしてコマンドが実行できるようになります。
(Execute Windows batch command
は選択するな!絶対にだ! Windows batch なんて書きたくない)
サンプルコード
実行環境を確認するために、試しに以下のように書いて動かしてみましょう
大まか、以下のようなログがでます
Started by user <yourname>
Running as SYSTEM
Building in workspace C:\Program Files (x86)\Jenkins\workspace\<job_name>
[cygwin] $ C:\cygwin64\bin\sh.exe -xe C:\windows\TEMP\jenkins5658594975380388795.sh
+ PATH='/cygdrive/c/cygwin64/bin:hogehoge...'
+ echo /cygdrive/c/cygwin64/bin:hogehoge...
+ /cygdrive/c/cygwin64/bin:hogehoge...
+ pwd
/cygdrive/c/Program Files (x86)/Jenkins/workspace/<job_name>
+ ls
+ whoami
SYSTEM
Finished: SUCCESS
解説
PATH=/cygdrive/c/cygwin64/bin:$PATH
これを先頭に書いておきます
Cygwin にパスを通しておくことで、Cygwin のあらゆるコマンドが使えるようになります
echo $PATH
でパスが正しく入っているか確認します。確認できたらこの行は消しておきましょう
pwd
自分のいる位置は、jenkinsのworkspace の中ですね
ls
ファイルはまだ空っぽ
Cygwin のコマンドが使えていることがわかりますね(Windows batch だと dir
です)
whoami
SYSTEM
さんになっています
権限の問題もあるので、できればちゃんと自分のユーザになりたいところですが、Cygwin には su
コマンドがないのです
調べたのですが、ちゃんとした解決方法がないようです(情報知りたいです)
(ポートを開けて ssh コマンドで localhost にログインするという手段などが取られているようです)
OK
これにて Cygwin が使えることが確認できました
bash とか zsh で使ってたコマンドがwindowsでも使えるようになって一安心ですね
(windows batch マジめんどい)
注意点
パスの指定方法に注意がいります
「windows から Cygwin は認識できない」ということです(表現が正確じゃないですが)
windows のパス指定は C:\...
Cygwin のパス指定は /cygdrive/c/...
という感じですよね
Cygwin コマンド(ls
, pwd
, find
...)を使うんであれば cygdrive
方式のパス指定をすれば問題ないのですが
Windows のプログラム (Program Files (x86)
の中の物とか)に引数としてパスを渡す場合は、 C:\...
形式にしておかないと、認識してくれない場合があります
ここ、気をつけて使い分けないと、「パスが存在しません」的なエラーが出て頭を悩ますことになります
Cygwin用のディストリビューションが用意されているソフトウェアの場合は、そちらを使った方がいろいろと楽になると思います
Program Files (x86)
のディレクトリ名にスペースが含まれているのが悪い
Author And Source
この問題について(JenkinsでCygwinを使う), 我々は、より多くの情報をここで見つけました https://qiita.com/_natsu_no_yuki_/items/498eebec6a6196e46ff8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .