CI/CD環境 - DaggerによるCI/CD -

目次

関連

用語

Github

Githubは、Github社 (親会社は、Windowsなどを開発・販売するMicrosoft社)が提供するソフトウェア開発のためのサービスで、ソースコードをホスティングします。Gitを用いてソースコードのバージョン管理やWikiによる情報共有、issue機能によるチケット管理などを行うWebサービスです。Webサービスの認証に使用することがあります。

ジョブ

コマンドなど自動で実施する作業のことを「ジョブ」と言います。

工数

ある作業を完了させるために必要となる時間のこと。

CI/CD

ソフトウェア開発におけるビルドやテスト・デリバリー・デプロイメントを自動化し、継続的に行うアプローチを指す名称です。自動化することで、開発時の工数を減らし、少ない人数での開発効率の向上やヒューマンエラーの防止に役立ちます。

Daggerについて

Dockerを前提としたCI/CDツール。Daggerの開発者は、Dockerの開発者。Dockerを前提としているため、手元のパソコンから、パブリッククラウドや企業内のプライベートクラウドまで、どこでも動かし、CI/CD環境を維持することが可能。

Webサイト https://dagger.io/

DaggerによるCI/CDのための下準備

仮想マシンの構築

仮想マシンを使って作業を行います。次の作業を行い、環境を整えます。既に準備済みの場合はとばしてください。不足しているものがある場合は、不足分は実施しましょう。仮想マシンを用意していない場合は、Ubuntu 20.04の仮想マシンを用意します。お使いの環境に合わせて用意してください。既に作成済みの場合は、飛ばしてください。

仮想マシンの作成

Docker(Docker Engine) のインストール

Dagger Python SDK を用いたCI体験

Daggerの利用には、コンテナ(Docker)とPython仮想環境(venv)が必要になります。日本語で公式ドキュメントのチュートリアルを説明します。

Python SDK のインストール

Python パッケージ管理ツールのインストール

sudo apt install python3-pip

Python 仮想環境作成用ライブラリのインストール

sudo apt install python3-venv

Python 仮想環境の作成と有効化(activate)

python3 -m venv dagger_venv && source ./dagger_venv/bin/activate

dagger_venv は、Python 仮想環境の名称です。

実行結果

仮想マシンユーザーの前に、(Python 仮想環境名)と表示されれば成功です。

Dagger Python SDK のインストール

実行結果 ( 2023年7月現在)

サンプルプログラムの実行

作業用ディレクトリを作成します。

DaggerのPython Clientが動作する確認するために、「test.py」を作成します。

中身は、公式ドキュメント通りに記述します。

保存後、作成した「test.py」を動かしてみましょう。「test.py」は、「python:3.11-slim-buster」というコンテナを取得し、コンテナ内にインストールされているPythonのバージョンを取得し、Hello from Dagger and …. という形でメッセージを表示する処理を行います。

実行結果

また、「docker images」コマンドを実行することで、dagger用のコンテナが取得されていることがわかります。

Webアプリの単体テストをDaggerで自動化

サンプルアプリを取得します。

取得したサンプルアプリのディレクトリに移動します。

Pythonにおける単体テストフレームワークのpytestを用いたテスト実行用のファイル「test.py」を、サンプルアプリのディレクトリ下に作成します。既に取得したサンプルアプリのディレクトリに移動済みのため、「test.py」を作成します。

中身は、公式ドキュメント通りに記述します。

保存後、作成した「test.py」を動かしてみましょう。

実行結果

 

旧バージョン

Netlify(ネトリファイ)

静的コンテンツをホスティングしてくれるWebサービスです。ここでは、DaggerでビルドしたReactアプリケーションのデプロイ先として使用します。

ReactなどJavaScriptベースのアプリケーション、HTMLによるWebページなどを運用することができます。JavaScriptとJavaは名称が似た別物なので、Javaは動かせません。JavaScriptとJavaは、メロンとメロンパンくらい違うと言われます。体験するには、メロン農家に、メロンパンを売ってくださいと言ってみましょう。

Netlifyの登録

https://www.netlify.com/pricing/ にアクセスし、無料の「Starter」で「Start for free」をクリックします。

「Sign up to deploy your project」が表示されます。表示されているサービスでログインします。「チーム開発」のときにGithubアカウントを使っていますので、「Github」をクリックします。

「Authorize Netlify」をクリックします。

「Nice to meet you! Let’s get acquainted.」画面が表示されます。

「Work / Client / Personal / School」のいずれかを選びます。例では、Personal を選んでいます。どんな目的で、Netlify を使うかについての質問です。

次のどんな種類のWebサイトを作りたいのか聞かれます。例では、Web app を選んでいます。

あなたの立場を選ぶよう求められます。例では、Hobby Developer としています。

Netlifyにおける開発チーム名を入力します。

「Continue to deploy」をクリックします。

次の画面となる「Deploy your first project」で「Skip this step for now.」をクリックします。

ホスティングする静的Webコンテンツの場所ができあがりました。

Netlifyアクセストークンの取得

画面右上の自分のアイコン(アバター)をクリックします。「User settings」をクリックします。

「Applications」をクリックします。

次に「Personal access tokens」の「New access token」をクリックします。

「Create a new personal access token」の画面が表示されます。「Description of your token」に、何に使う入力します。ここでは、for dagger としました。「Generate token」をクリックします。

生成されたトークン(英数字の文字列)をコピーしておきます。後で使うので、どこかに保存しておきまます。「Done」をクリックします。

「Done」をクリックした後は、トークンは再表示できません。トークンを削除する場合は、「Options」から「Delete personal token」で削除ができます。

トークンがわからなくなった場合は、削除した後に、「New access token」で再作成します。トークンを削除すると、トークンを使って連携している他のサービスから、Netlifyにアクセスできなくなります。

Daggerのインストール

次のコマンドを実行します。

実行結果

上記の指示とおり、BASH向けのコマンドを実行します。LinuxはBASH、MacはZSH向けをそれぞれ実行します。

インストール確認

実行結果 ( Intel系CPUの場合)

daggerでは、dagger do というコマンドを実行しますので、ヘルプ情報も見ておきましょう。使い方が書いてあります。

DaggerによるCI/CD体験

公式サンプルのクローン

次のコマンドを実行します。

ホームディレクトリに移動します。例として、user1 の場合は、次の通りです。各自のユーザー名に読みかえてください。

Gitをインストールしていない場合は、Gitをインストールしてください。インストール済みの場合は、とばしてください。

GitHubから公式サンプルをクローン。

テスト&ビルド

クローンした公式サンプルで、dagger コマンドを実行し、公式サンプルをWebブラウザで利用できるようにします。

先ずは初期化

実行結果

テスト&ビルドの実行

画面を見るとわかるように、コンテナを使ってテスト(問題なく稼働するかどうかの確認)とビルドを行っています。moby/buildkit というコンテナが背後で動いています。

実行結果

これで、公式サンプルは、Webアプリケーションとして利用可能になりました。「build」というディレクトリに格納されています。

実行結果

Webブラウザで動作確認のため、次のコマンドを実行します。

仮想マシンにインストール済みのWebブラウザが起動し、ビルドすることで動かせるようなった公式のサンプルアプリが表示されます。

確認後、Webブラウザを閉じます。ターミナルに以下のメッセージが表示されている場合は、ターミナルで、Ctrl + c キーを押して終了させます。

このメッセージは、Chromeを使っていないことによるものです。もしChromeを使って「xdg-open build/index.html」を実行したい場合は、GoogleのChromeのホームページからUbuntu向けのChromeインストーラーをダウンロードしてインストールすると良いでしょう。

デプロイ (例としてNetlifyにデプロイ)

「デプロイ」を行うこで、運用環境に配置することができます。今回のような規模であれば、手動操作でやっても良いです。ここでは公式サンプルでも記述のある、Netlifyを使います。既にNetlifyに登録し、Personal access token を発行済みとします。

次のコマンドを実行します。

xxxxxxxxxxxxxxxx のところを、各自のPersonal access token に置き換えて実行してください。

実行結果

実行結果は、各自で異なります。url に表示されている、httpsで始まるURLにアクセスします。

Daggerを使うことで、ローカル(パソコン)上で、テスト(書かれたコードが動くかどうか) / ビルド (動く状態にパッケージ化) / デプロイ ( 実行環境に配置 ) を行うことができました。Docker環境でのビルドを前提としたソースコード前提になりますが、ローカルで手軽に出来るというのは便利です。

ここでは、ローカルで実行しましたが、GithubやGitlab、Jenkins、CircleCIなどで実行することも可能です。詳しくは以下の資料をご覧ください。

https://docs.dagger.io/1201/ci-environment