⚠️ 注意
本記事で紹介する手順や構成は、学習・検証用の例です。
実際の本番環境や企業ポリシーに依存せず、一般的な小〜中規模Webサービスでの参考としてまとめています。
SSH鍵やsudo権限設定も簡略化しているため、本番運用ではより厳格な設定が必要です。
はじめに
Boa tarde🤟 tacosです!
ちょっと時間が空いてしまいました😅
ここ最近は特に色々なことに触れる機会が多く、学習の連続です!
自分が勤めているウラカンでは、スポーツ選手向けのファンサイトを作成しており、 インフラ周りを上司の big-A と一緒に担当しています❤️🔥
ファンサイトではインフラがメイン担当ですが、アプリ更新のデプロイも任されており、これまでは毎回サーバーにログイン → シェル叩く → 手動デプロイ という流れでした。
(これにはbig-Aの仕掛けが込められていたのですが・・・💦)
そんな時big-Aから一言
「自動化できるけど、まぁまだ良いですかね。時期がきたらということで。CodeDeployとかJenkinsとかあるんですけどね」
こんなことをボソッと言われ、
「ふーん、そういうものがあるのか…」と思いながら数週間。
ある日 Slack に big-A からDMが届きました。
「いつまでぬるま湯につかっとーとね?あんたはシェルば実行するマシーンやなかろーもん?そげんやったら、Jenkins小僧になりゃよかろーが!Dockerの上に建ててもよかし、まずは勉強しときーよ!」
……いや、そもそも Jenkins って nani? 🤔 状態。
でも、以前に名前を聞いたことがあったので「自動デプロイ的なやつだよな〜?」くらいの理解でした! ←こういう小さな気づきの時に個人的に成長を感じます!
Jenkinsを学ぶ決意とこの記事のゴール
「今の fun-site のデプロイ、自動で出来るんじゃない!?!?」と思ったのが始まりでした。
正直、App サーバーに入って root でシェルを叩けば終わるので、そこまで面倒ではないです😅
でも、「学習も兼ねて Jenkins を詳しく知りたい!」と感じたのがスタートでした。
ただ、ここからが試練の始まり…。⛈️ これが試練の始まりだと知らずに…。
そんな中、Jenkinsパイプラインを作成する上で、とても助かったのは、
big-Aからの産物 【シェルスクリプト】
でした😭
まずはシェルの中身を確認し、「どこで」 「誰が」 「何を」 「いつ」 「なぜ」 「どのように」 行っているのかを理解するところからのスタートでした。
fun-siteのデプロイ時に実際に使用していたので「なんとなく」で中身を理解していましたが、Jenkinsfileへ落とし込むには、1つ1つ丁寧に確認して移行していかなければいけませんでした。
これが、大変…。
GPTさんの力を借りながらやったものの、嘘はつくし 勝手な前提入れてくるし
もーーー大変😂
(もちろん、シンプルに自分のプロンプトが悪い可能性も大いにあるので、GPTを責めすぎてはいけないですね🙇)
(シンプルに自分のプロンプトが悪い可能性が高いと受け止め、精進します🙇)
自分は考えが甘いので、「Jenkinsfile さえ作ってしまえば終わり」と思っていましたが、そんなことはありませんでした。
・jenkins UIでの設定 ・プラグインインストール ・各サーバー側での設定 など、
さまざまな作業が必要でした。
今まで4月から入社して積み上げてきた内容を、
総まとめ+学習している感覚でした!
この記事では、
そんな Jenkins を実際にサーバーに構築して、GitHub からアプリを自動デプロイできるようにした話をまとめていきます👍
前置きがとても長くなりましたが😅、tacos の Qiita は 「気持ちや思いも含めて書く」 ことに意味があると思ってます。 よく big-A にも言われます。
「作業者ではなく、技術者を目指しなさい」
この言葉にはたくさんの意味が込められていて、聞くたびに考えさせられます。
だからこそ私は、ただの作業をする機械ではなく、感情を持ち、自分で思考して発言できる技術者 を目指したいと思っています。
では次に行ってみましょう〜〜▶️
Jenkinsって何?⚙️
Jenkins は、ソフトウェア開発における 自動化サーバー(CI/CDツール) です。
開発者が書いたコードを GitHub などから取得し、テスト・ビルド・デプロイまでの流れを自動化してくれます。
一言でいうと
Jenkins は「開発」と「運用」をつなぐ自動化エンジン 🚀
- CI(継続的インテグレーション): コードを自動でテスト・統合
- CD(継続的デリバリー/デプロイ): 本番環境へのデプロイまで自動化
- プラグインが豊富 で、GitHub・Docker・AWS など様々なツールと連携可能
- Web UI からジョブを登録できるほか、Jenkinsfile を使ってコード管理も可能
- オープンソースであり無償提供されている
今回は、
Amazon Linux 2023 上で Jenkins を構築し、GitHub から Jenkinsfile を取得してビルド、APPサーバーへ資材を転送・更新するまでの自動化を、試行錯誤しながら進めた記録をまとめます。
デプロイの自動化に挑戦したい方、Jenkinsに触れたい方のヒントになれば嬉しいです😎
(※本記事は学習アウトプットを目的としており、実運用のための全設定までは網羅していません)
この記事でできるようになること 📌
- Amazon Linux 2023 へ Jenkinsのインストール
- Jenkins ✖︎ GitHub構成の構築
- デプロイ自動化
次の第2章から、自分が Jenkins を構築していった過程や試行錯誤の記録をご紹介します。
第2章では、Jenkins の構築や設定を進める過程での 試行錯誤や手順の記録 を、コマンドやスクリーンショット付きでわかりやすくまとめています。
興味がある方はぜひ覗いてみてください👇
https://qiita.com/tacos_02/items/7cd9db931c6b02244561
até logo!👋