jenkins スライド
結論から言うと
- cronの置き換えは向いてない
-
- 冗長化できないから
-
- 死んでもいい事に使う
- マウスクリックで発動したいジョブに使う
-
- うちの運用だとあまりない
パラメータ=変数、パイプライン内で使える。
Pipeline script from SCM で git管理下のjenkinsfileを実行。
ifとかloopも書きまくり
sh 'docker run...' もしちゃう
docker imageでCI
実行フォルダがimageないじゃなくて?ホスト側になる?不思議仕様に注意とのこと
image名にパラメータを使ってますな。
pipelineの中で docker run
してから作業する、というのはアリかも。
docker on jenkins on docker で使う。 docker.sock使って。
java コマンド叩けば閉鎖空間でもnodeになれる
slaveからmasterに行くのでポートいらず、ワン・コマンド、サービス化可能、接続コマンドはjenkinsインストールし直さない限り変わらない
ノードの管理 > コマンド発行 > agent.jar を落とす → java runコマンド叩く
serverからkickするシーンでも、slaveから取りに来て蹴り始めるのでmaster->agentのpush通信は一切いらない
agent imageこれかな?
jenkinsのパイプラインの言語はDSLと呼ばれるタイプのやーつ
DSL(Domain Specific Language)は,ドメイン固有言語と訳されてます。DSLは,Java,C#などの汎用言語とは違い,ある特定の種類の問題に特化したコンピュータ言語です。
http://gihyo.jp/admin/feature/01/dsl/0001
javaのgroovyとかだって
docker コンテナからdocker psする方法
2つの合わせ技
これと
https://stackoverflow.com/questions/45121945/jenkins-in-docker-container-run-docker-pipeline
&& apt-get install -y sudo libltdl-dev
これで
-v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker
できる!
cronの代替rundeck
冗長化は複数ソフトの組み合わせ+お手製でかなりつらそう
Corosync と Pacemaker をセットアップしていきたいと思います。
- 他ツールとの比較
- Jenkins -> 多機能すぎてシンプルじゃない
- digdag -> GUIの機能(認証や設定変更)が不足
- Concourse CI -> GUIから編集ができない
- Rundeck自体の冗長化はどうやるの?
- オンプレだとpacemaker & corosyncでやってる
- AWSなら、DBをRDSにして、ファイルだけをlsyncdとかで同期すれば簡単にできると思われる
- https://wiki.infra-workshop.tech/%E5%8B%89%E5%BC%B7%E4%BC%9A%E3%83%AD%E3%82%B0/2018/02/10/%E3%82%B8%E3%83%A7%E3%83%96%E7%AE%A1%E7%90%86%E3%81%A7cron%E3%81%AF%E9%99%90%E7%95%8C%E3%81%8C%E3%81%82%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%A7Rundeck%E4%BD%BF%E3%81%A3%E3%81%A6%E3%83%8F%E3%83%83%E3%83%94%E3%83%BC%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F
https://dev.classmethod.jp/server-side/server/try-rundeck-job/
エージェントレス
SSH接続できればジョブを実行できます。
CIスクショ
# selenium_test.py を実行する
docker exec selenium_test python3 selenium_test.py https://www.google.co.jp/ screenshot.png
# スクリーンショットファイルをホスト側にコピーする
docker cp selenium_test:/screenshot.png .
docker-selenium 使って見た