CI/CD初学者が「自分でCIを構築できる状態」になること
- CI/CDの基本概念を理解している
- GitHub Actions / GitLab CIでCIを動かせる
- TerraformをCIに組み込み、検証からデプロイまで自動化できる
- Git操作経験あり(git-practice)
- YAMLの基本理解あり
- Linuxコマンド操作が可能
- Terraform理解(terraform-ractice)
本コンテンツは以下の3部構成とする
- CI/CD基礎理解(CI/CDとは何か)
- GitHub Actions編
- GitLab CI編
- 目的
- CI/CDの全体像を理解する
- 内容
- CI/CDとは何か
- なぜ必要か
- 基本的な流れ
- 実現するツール
- ゴール
- CI/CDの役割を説明できる
- GitHub Actionsを用いてワークフローを構築できるようになる
- CI/CDの基本的な考え方(イベント起点・実行制御・環境分離)を理解する
- Terraformを題材に、CI(検証)とCD(デプロイ)の役割の違いを理解する
- Step 1:環境準備
- アカウント作成
- GitHubアカウント作成
- AWSアカウント作成
- 作業環境準備
- Gitクライアント
- Terraform
- シェル環境
- 動作確認
- GitHub に push できる
- AWS 認証情報を設定できる
- Terraform から AWS に接続できる
- アカウント作成
- Step 2:基礎編
- runs-on を用いた実行環境の指定
- 基本構造の理解
- on
- jobs
- steps
- workflow作成
- jobの実行順制御
- needs
- Step 3:応用編
- 条件分岐
- if
- イベント条件
- ブランチ条件
- Actions secrets / variables の利用
- artifacts の利用
- 条件分岐
- Step 4:実践編(CI)
- Terraformとの連携
- terraform init
- terraform plan
- Terraformとの連携
- Step 5:実践編(CD)
- Terraformによるデプロイ
- terraform apply
- manual実行
- workflow_dispatch
- branch制御(mainブランチのみ)
- Terraformによるデプロイ
- Step 6:実行基盤(Runner)
- Runnerの種類
- GitHub-hosted runner
- Self-hosted runner
- Runnerの導入
- Runnerの種類
- Pull Request時にTerraformのinit / planが実行されるworkflowを構築できる
- mainブランチにおいて、Terraform applyを手動実行できるworkflowを構築できる
- 条件分岐や変数を用いて、workflowの実行条件を制御できる
- GitLab CIを用いてパイプラインを構築できるようになる
- CI/CDの基本的な考え方(処理の流れ・実行制御・環境分離)を理解する
- Terraformを題材に、CI(検証)とCD(デプロイ)の役割の違いを理解する
- Step 1:環境準備
- アカウント作成
- GitLabアカウント作成
- AWSアカウント作成
- 作業環境準備
- Gitクライアント
- Terraform
- シェル環境
- 動作確認
- GitHub に push できる
- AWS 認証情報を設定できる
- Terraform から AWS に接続できる
- アカウント作成
- Step 2:基礎編
- imageを用いた実行環境の指定
- 基本構造の理解
- stages
- jobs
- script
- pipeline作成
- stage制御
- Step 3:応用編
- rulesによる条件分岐
- CI/CD変数の利用
- artifactsの利用
- Step 4:実践編(CI)
- Terraformとの連携
- terraform init
- terraform plan
- Terraformとの連携
- Step 5:実践編(CD)
- Terraformによるデプロイ
- terraform apply
- manual実行
- branch制御(mainブランチのみ)
- Terraformによるデプロイ
- Step 6:実行基盤(Runner)
- Runnerの種類
- Runnerの導入
- Merge Request時にTerraformのinit / planが実行されるpipelineを構築できる
- mainブランチにおいて、Terraform applyを手動実行できるpipelineを構築できる
- rulesや変数を用いて、pipelineの実行条件を制御できる
cicd-practice/
├── README.md
├── docs/
│ ├── 00-overview.md # 基礎編:CI/CDとは
│ ├── 01-setup.md # 共通:環境準備
│ ├── github-actions/
│ │ ├── 01-setup/
│ │ │ └── README.md # Step 1: 環境準備(GitHub Actions個別)
│ │ ├── 02-basic/
│ │ │ └── README.md # Step 2: 基礎編
│ │ ├── 03-advanced/
│ │ │ └── README.md # Step 3: 応用編
│ │ ├── 04-ci/
│ │ │ └── README.md # Step 4: 実践編(CI)
│ │ ├── 05-cd/
│ │ │ └── README.md # Step 5: 実践編(CD)
│ │ └── 06-runner/
│ │ └── README.md # Step 6: 実行基盤(Runner)
│ ├── gitlab-ci/
│ │ ├── 01-setup.md # Step 1: 環境準備(GitLab CI個別)
│ │ ├── 02-intro.md # Step 2: 基礎編
│ │ ├── 03-advanced.md # Step 3: 応用編
│ │ ├── 04-ci.md # Step 4: 実践編(CI)
│ │ ├── 05-cd.md # Step 5: 実践編(CD)
│ │ └── 06-runner.md # Step 6: 実行基盤(Runner)
│ └── terraform/
│ ├── sample/ # Terraformサンプルコード
│ └── exercises/ # Terraform演習課題
└── answers/
├── github-actions/ # GitHub Actions 解答例
│ ├── 02-basic/
│ ├── 03-advanced/
│ ├── 04-ci/
│ ├── 05-cd/
│ └── 06-runner/
└── gitlab-ci/ # GitLab CI 解答例
├── 02-intro/
├── 03-advanced/
├── 04-ci/
├── 05-cd/
└── 06-runner/