初心者向けCI/CD実践 - Part1 - 環境構築編

# CI/CD環境を構築
本連載は、「CI/CDを実践してみたい」という超初心者向けの内容となっています
enterpriseレベルやproductionレベルの導入に際して、「CI/CDとは？」という感覚をつかむものとなれば幸いです。
利用するツール等はこちらで選定していますので、別のツールを利用する場合は、適宜お調べください。
大まかな内容としては、以下のようなフローとなります

>1. **環境構築<-今回はここ**
2. CI/CDツールの構築
3. 開発プロジェクトの準備
    - GitHubにプロジェクトデータを登録
    - Jenkins Pluginのインストール
    - 手動ビルド
4. CI/CDツールとその他ツールの併用例
    1. VCSとの協調
    2. テストツールとの協調
    3. インスペクションツールとの協調
5. pipelineの実現

## 環境構築
環境構築編では、CI/CDを実践するに必要な環境を整えます

## <font color="Red">概要</font>
>- Windows 10に仮想化ソフトウェア```VirtualBox```を用意
- ```VirtualBox```で仮想マシン```Ubuntu```を作成
- ```Ubuntu```上でDockerコンテナの実行環境を構築

### 既存環境
>OS : Windows 10 Enterprise
プロセッサ : Intel Core i7
RAM : 16GB
システムの種類 : 64bit OS

### 仮想化ソフトウェアの用意
今回CI/CDを実践するにあたって、仮想環境を用意する
仮想環境には、「ホスト型」と「ハイパーバイザ型」があり。今回は前者を構築
ホスト型の仮想環境を構築する「仮想化ソフトウェア」には以下のようなものがある
>- VirtualBox
>- VMware Workstation Player
>- KVM

今回は「VirtualBox」を利用

インストールは既に済ませていたので、[こちら](https://qiita.com/HirMtsd/items/be1c8afe708e901e1100)を参考に進めてください

VirtualBoxのバージョンは6.1.14で実施

### 仮想マシンimageのダウンロード
仮想マシンのOSとしてUbuntuを利用する
imageのダウンロードは[こちら](http://www.releases.ubuntu.com/focal/)
Ubuntuのバージョン情報等はこちらの通り
>- Ubuntu Focal 20.04 (LTS)
- 64-bit PC (AMD64) desktop image

**注意**
その他のバージョンやimageを利用する場合は[こちら](https://docs.docker.com/engine/install/)または、[こちら](https://docs.docker.com/engine/install/ubuntu/)を参考にしてください
今回の検証では、仮想マシン上にコンテナとしてCI/CDツールを用意します
適切なOSを利用しないとdocker コンテナを利用できません

### 仮想マシンの作成
[こちら](https://qiita.com/pyon_kiti_jp/items/0be8ac17439abf418e48)を参考に仮想マシン作成

設定値は基本的にdefaultを採用し、以下の値のみ変更

![図4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758476/b1fcbe02-dc54-c558-f80d-6e7364874b04.png)

### 仮想マシンの初期設定
仮想マシンの設定は指示に迷うところは特にないかと思いますので、省略

その他、事前に設定しておくこととして以下のような内容があります。それぞれの設定はリンク先を確認
>- [Virtual box のウィンドウリサイズに応じて自動的に仮想マシンをリサイズする](https://qiita.com/lion0506/items/36b9ce19724a32fbd1ac)
- [teratermでvirtualbox上に存在するubuntuにssh接続](http://kuro-rera.hatenablog.com/entry/2018/01/12/215955)
- [Ubuntu 画面ロックの時間調整](https://sicklylife.jp/ubuntu/1804/help/session-screenlocks.html)
- [ホストとゲスト間でのcopy&paste](https://qiita.com/LemonLeaf/items/ac12404e277ff9bb3a65)

### docker 
最後に行う環境構築として、Docker Engineのインストールを行う
公式の[こちら](https://docs.docker.com/engine/install/ubuntu/)を参考に進めていく

手順だけ抜き出したものが以下になります
1. Dockerレポジトリの準備
    - ```$ sudo apt-get update```
    - ```$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common```
    - ```$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -```
    - ```$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"```
2. Docker Engineのインストール
    -``` $ sudo apt-get update```
    - ```$ sudo apt-get install docker-ce docker-ce-cli containerd.io```
    - ```$ sudo docker run hello-world```
3. [一般ユーザでDockerを利用できるよう設定](https://qiita.com/iganari/items/fe4889943f22fd63692a)
    - ```$ cat /etc/group | grep docker```
    - ```sudo gpasswd -a $(whoami) docker```
    - ```$ cat /etc/group | grep docker```
    - ```sudo chmod 666 /var/run/docker.sock```
4. [Docker Composeのインストール](https://docs.docker.com/compose/install/)
    - ```sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose```
    - ```sudo chmod +x /usr/local/bin/docker-compose```
    - ```docker-compose --version```