Windows サーバーで サービスから Jenkins を起動しようとしたときに起動しなかったときの対応
状況
- http://jenkins/restart とかを何回か実行した
- サービスでステータス確認したら 停止 になっている
- サービスから開始をクリックしてもステータスは一瞬 実行中 になるがすぐに 停止 になる
対応
- jenkins.err.log を確認
- エラーが出ている
警告: FAILED ServerConnector@8c1c9b{HTTP/1.1}{0.0.0.0:8090}: java.net.BindException: Address already in use: bind java.net.BindException: Address already in use: bind at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Unknown Source) at sun.nio.ch.Net.bind(Unknown Source) at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source) at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source) at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:321) at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:236) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at org.eclipse.jetty.server.Server.doStart(Server.java:366) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at winstone.Launcher.<init>(Launcher.java:152) at winstone.Launcher.main(Launcher.java:352) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at Main._main(Main.java:246) at Main.main(Main.java:91)
- Address already in use: bind なので、すでに他のプロセスがポートを使用している感じ
- https://issues.jenkins-ci.org/browse/JENKINS-15691 ここらへんにも同様の問題あり
- http://sinsengumi.net/blog/2011/01/windows%E3%81%A7%E3%81%A9%E3%81%AE%E3%83%9D%E3%83%BC%E3%83%88%E3%81%8C%E4%BD%95%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A7%E4%BD%BF%E7%94%A8%E3%81%95/ ここらへんを参考にして Windows サーバーで同一ポートを使用しているプロセスを探す
- java.exe が使用している
- この java のプロセスを終了させる
- jenkins をサービスから開始する
- サービスが 実行中 になることを確認
- Jenkins の画面がブラウザで表示されることを確認
TFS でビルド時にアプリケーションのバージョン番号に日付とビルド回数を設定する
したいこと
MSBuild でバージョン番号を付与したい
今回設定したいバージョン番号
- ApplicationVersion=1.0.20170926.1
1 0 20170926 1 - - - - | | | | | | | `-- その日にビルドした回数(翌日にリセット) | | `------------ ビルドした日付 | `--------------- とりあえず固定 `------------------ とりあえず固定
TFS で使用できる変数について
事前に定義されている変数の一覧は下記で参照できる
https://docs.microsoft.com/ja-jp/vsts/build-release/concepts/definitions/build/variables?tabs=batch
ユーザー定義の変数も設定可能
TFSにブラウザから直接設定することも可能
- これだと動的に設定が出来ない?
Batch, PowerShell, Shell を作成して、ビルドステップにて実行して動的に変数を設定
- 例えば、日付を変数に設定する PowerShell の例
$date=$(Get-Date -Format 'yyyy-MM-dd'); Write-Host "##vso[task.setvariable variable=date]$date"
- この PowerShell をタスクの一つにして、起動すれば、
$(date)
でビルド時に使用可能
その日のビルドした回数はどうやって取得するか
- 下記のページを参考にして、回数を取得できそうな PowerShell が記載されている https://intovsts.net/2015/08/24/tfs-build-2015-and-versioning/ https://gist.github.com/pietergheysens/14d7d98547fe35470d0e
$buildNumber = $env:BUILD_BUILDNUMBER if ($buildNumber -eq $null) { $buildIncrementalNumber = 0 } else { $splitted = $buildNumber.Split('.') $buildIncrementalNumber = $splitted[$splitted.Length - 1] }
$(Build.BuildNumber)
の.
で分割した2つ目から取得できそうじゃ
$(Build.BuildNumber)
の1つ目が何か出力して確認してみる
20170926.1
- 自分が欲しい値そのままではないか。。。
まとめ
というわけで、今はこの設定でビルドしてる
/p:ApplicationVersion=1.0.$(Build.BuildNumber)
SourceTree で rebase してコンフリクト解決してすぐコミットしてしまったとき
上記の記事を参考にして、rebase -> コンフリクトの解決をしてたんですが、
特に手順5の後にコミットメッセージを入力してコミットしてしまうというミスを犯しやすいので注意が必要です。
これをやってしまいました。
SoureceTree からの解決方法が分からなかったので、コマンドから rebase を無かったことにしました。
1.コマンドで確認
$ git status On branch fix-branch You are currently rebasing branch 'fix-branch' on 'e114a18'. (all conflicts fixed: run "git rebase --continue") nothing to commit, working tree clean
2.rebase中でコンフリクト解消したから、git rebase --continue
を実行してみる。
$ git rebase --continue Applying: コメント No changes - did you forget to use 'git add'? If there is nothing left to stage, chances are that something else already introduced the same changes; you might want to skip this patch. When you have resolved this problem, run "git rebase --continue". If you prefer to skip this patch, run "git rebase --skip" instead. To check out the original branch and stop rebasing, run "git rebase --abort".
3.対応方法がよく分からなかったので、rebase を無かったことにしようと git rebase --abort
を実行。
rebase 中止して最初からやり直しました。
GitHub勉強会 in Kanazawa に行ってきた
メモ
- GitHub はコラボレーションのあり方を変えた
- ソースコードをクラウドにアップすることを嫌がることは世界中であるらしい
- GitHub Enterprise を導入することで解決出来る
- 最初は Web 系の企業の導入が多かったが、最近はバージョン管理?Git?みたいな会社からの相談や導入も増えてきている
- そういう企業に対して説明しに行くこともソリューションエンジニアの仕事のひとつ
- 外国では企業だけでなく学校への導入も増えてきている、それによって学生のときに使用していた GitHub を就職後も使用し続けることが出来る
YouTube にトレーニング動画も公開している(日本語字幕付き)
子供へのプログラミング教育も広まっている
感想
- GitHub を中心に開発を行うってことが世界中でスタンダードになってきていると感じた
- ただし、それはまだごく一部であって、どうやって今後 今も残るバージョン管理?なにそれ?みたいな企業が、自分で気づいて普及していけるかが大事
- それをサボった企業とかに魅力はなくなってくよ(GitHub にかぎらず)
@wtnabe 氏のツイートを肝に銘じてく
これからの未来を担う子にロストテクノロジーを口頭伝承して守らせることが未来に繋がるんか? 文化財守ってんじゃねーのよ。何倍も非効率でも守るべきてものはあるよ。そらー分かる。けど、おれたちのやるべきことは、お前のやるべきことは、それか?
— wtnabe (@wtnabe) 2017年9月16日
Windows10 に Go インストール
環境
- Windows10 64bit
- Go 1.9
インストール
Downloads - The Go Programming Language
go1.9.windows-amd64.msi
をダウンロード
インストールフォルダーも C:\Go\
のまま続行
インストールが完了すると GOROOT(C:\Go\)
, PATH(C:\Go\bin)
共に設定されているので、
コマンドプロンプトを起動して go コマンドを入力すると、help が表示される。
GOROOT とか PATH を自分で設定して、OS再起動必要みたいなブログもあったけど現在バージョンでは不要みたい。
あと、GOPATH っていう変数の設定が必要みたいだけど、Helpで確認すると設定されていない場合はホームディレクトリになるみたい。
>go help gopath If the environment variable is unset, GOPATH defaults to a subdirectory named "go" in the user's home directory ($HOME/go on Unix, %USERPROFILE%\go on Windows), unless that directory holds a Go distribution. Run "go env GOPATH" to see the current GOPATH.
とりあえず最初はこのまま。
初めて家族でキャンプに行ってきたのでメモ
家族
- 自分、妻、男の子(2歳11ヶ月)
- キャンプ初めて
行った日
8/26, 27 の1泊2日
行ったキャンプ場
選んだ基準
- オートキャンプ場
- 車を近くに止めて移動を楽にしたかった
- 子供の遊び場がある
- 魚釣りや遊具もあって、子供はすごく楽しんでいた。
- 釣った魚を焼いて食べれるのもいい
- 自宅から二時間以内
- ある程度施設が整っている
- 初心者なのでサバイバル的な要素はなし
- レンタルが可能
- とりあえず一回やってみて、色々揃えたかった(テントなど)
事前に準備したもの
コンロ
- 出版社/メーカー: 岩谷産業
- メディア:
- この商品を含むブログを見る
Weber
ウェーバー 蓋付き 小型バーベキューコンロ チャコール スモーキージョープレミアム 1121008 直径37cm 高さ43cm (4-6人用)【日本正規品 10年保証】
- 出版社/メーカー: ウェーバー(Weber)
- メディア: スポーツ用品
- この商品を含むブログを見る
寝袋
コールマン(Coleman) 寝袋 ファミリー2in1 C10 使用可能温度10度 封筒型 2000027256
- 出版社/メーカー: コールマン(Coleman)
- メディア: スポーツ用品
- この商品を含むブログ (1件) を見る
ランタン
- 雑貨屋で見つけた 2,000 円の
- これ使う前に壊れて、無駄だった。。
レンタルしたもの
- テント
- テーブル 2つ
- 椅子 2つ
- ランタン 1つ
ほしいもの
- まくら
- 硬くて寝心地が悪かったのもあるが、腕に頭おいて寝たせいで首が痛かった
- 厚手のマット
- 今回、銀マット+ 寝袋で寝たけど硬いし、寝心地が悪い(夜中に何回か起きた)
- エアベッドが必要かは要検討
- ランタン
- 今回自分たちのキャンプしている場所だけ暗かった
- 白色系のランタンをレンタルしたけど、暖色系の方が雰囲気も出て圧倒的に良い
- 明るさもある程度必要
- コンロ
- 1つでは調理待ちが発生してしまって同時に調理が出来ない
- 2つは必要
テーブル、椅子
- ある程度快適に過ごせる大きさのものが必要
テント
- レンタルじゃなくて自分のでキャンプしたい
- どんなのがいいかはまだよく分からない
- 快適に過ごすためには3人で寝ても余裕のある大きさは必要
Visual Studio Team Services のリモートブランチが Visual Studio に表示されないとき
環境
- Visual Studio 2015
- Visual Studio Team Services
現象
Visual Studio Team Services にリモートブランチを作成したけど、Visual Studio の チームエクスプローラーに表示されなくて、 リモートブランチを clone 出来ない
対応
チームエクスプローラーの同期メニューで上部のフェッチをクリックすると表示される。
入力方向のコミットの下のフェッチではない。