1. ホーム
  2. jenkins

AnsibleはHudson/JenkinsのようなCIツールの代替になるか?

2023-10-11 06:57:40

質問

最近、私たちの会社で Ansible を使用することにしました。しかし、私がAnsibleを使い始めたとき、MavenでJavaプロジェクトを構築するためのモジュールや、JUnitテストやJMeterテストを実行するためのモジュールは見つかりませんでした。

ということで、もしかしたらAnsibleの使い方が間違っているのかもしれない、という疑心暗鬼に陥っている状態です。

Jenkinsを見ると、ビルド、テスト実行、デプロイといったことができる。Hudsonに足りないのは、AWSのようなクラウド環境でのインスタンスの作成・削除です。

では、一般的に、どのような目的でAnsible/Jenkinsを使う必要があるのでしょうか?CIではAnsibleとJenkinsを組み合わせて使う必要があるのでしょうか?

Ansibleの正しい使い方を教えてください。

どのように解決するのですか?

まず、JenkinsとHudsonは基本的に同じプロジェクトです。以下、Jenkinsと表記します。参照 HudsonとJenkinsのどちらを選べばいいのか? , 2012年のハドソン対ジェンキンス そして ユーザーから見て、JenkinsとHudsonの最も顕著な違いは何ですか? をご覧ください。

第二に、Ansibleは継続的統合エンジンであることを意図していません。それは (一般的に) git リポジトリをポーリングしませんし、正気の方法で失敗したビルドを実行しません。

Jenkins を単純に使用できるのはいつですか?

もし、あなたのマシン環境やデプロイメントプロセスが 非常に (Herokuやチーム外で設定されたironなど)であれば、Jenkinsで十分かもしれません。最後のビルドステップ (または連鎖したステップ) としてデプロイを行うカスタムスクリプトを書くことができます。

Ansible を単純に使用できるのはどのような場合ですか?

ビルドやテストが必要なく、デプロイするだけであれば、Ansible で十分かもしれません。たとえば、コマンドラインから、または Ansible Tower を使用してデプロイを実行することができます。これは、小さなプロジェクトや静的なサイトなどには最適です。

どのように連携するのですか?

良い組み合わせは、Jenkins を使ってビルド、テスト、アーティファクトの保存を行うことです。実際のデプロイメント プロセスを処理するために、Ansible または Ansible Tower を呼び出すステップを追加します。これによって、Ansible は マシン の設定を Ansible が処理し、CI プロセスを Jenkins が処理するようにします。

Jenkinsの代替となるものは何ですか?

私が強くお勧めするのは Thoughtworks Go (言語のGoと混同しないでください)を強くお勧めします。その他、CruiseControl、TravisCI、Integrityなどがあります。