15
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

30分で試すAzure App ServiceのCI/CD

Last updated at Posted at 2020-01-09

この記事は リンク情報システム の「2020新春アドベントカレンダー TechConnect!」のリレー記事です。
TechConnect! は勝手に始めるアドベントカレンダーとして、engineer.hanzomon という勝手に作ったグループによってリレーされます。
(リンク情報システムのFacebookはこちらから)

はじめに

今さらながらCI/CDをやってみたのでまとめておきます。

Azure DevOpsを使用してApp Service(Dockerコンテナ)のCI/CD環境をつくりました。
AzureもCI/CDも初心者です。間違っているところは教えて下さい。

必要なもの

  • git
  • Azureアカウント

ソースコードを準備

App Serviceのクイックスタートサンプルを使う

# クローン
git clone https://github.com/yiliaomsft/python-hello-world.git
cd python-hello-world
# リモートリポジトリの削除
git remote remove origin

Azure DevOps

すべてのサービスへ移動。
000.png
「Azure DevOps」を選択。
001.png
赤枠のリンクをクリック。
002.png

organization作成

003.png
「Continue」
004.png
ユニークなorganization名を付けて「Continue」
005.png

project作成

適当な名前を付けて「Create project」
006.png

Reposにソースコードをpush

コピペ推奨。
007.png

コマンドはこんな感じ。

git remote add origin YOUR_REPOSITORY_URL
git push -u origin --all

pushされていることを確認。
008.png

コンテナーレジストリ作成

「コンテナーレジストリ」を選択。
009.png
「追加」
010.png
リソースグループを作成、管理者ユーザーを「有効」にして「作成」
011.png

Docker Registry service connection作成

012.png
「Docker Registry」を選択して「Next」
013.png
先程つくったコンテナーレジストリを指定。名前はお好みで。
014.png

ビルドパイプライン作成

015.png
「Azure Repos Git」を選択。
016.png
「Starter pipeline」を選択。
017.png
13行目以降を消して「Show assistant」をクリック。
018.png
「Docker」を選択。
019.png
Container registryには先程つくったservice connection、
Container repositoryは何でもOK、
Commandは「buildAndPush」を選択して「Add」
020.png
yamlに反映されていることを確認して「Save」
021.png
022.png

動かす

023.png
024.png
問題なく動いた。
025.png

コンテナーレジストリを確認

「myapp」イメージがpushされていることを確認。
026.png

App Service作成

「App Service」を選択。
027.png
「追加」
028.png
ユニークな名前を付け、Dockerコンテナー、Linuxを選択して次へ。
029.png
先程pushしたイメージを選択して「確認および作成」
030.png
「作成」
031.png

確認

概要のURLから確認。
032.png
問題なく表示された。
033.png

リリースパイプライン作成

034.png
「Azure App Service deployment」を選択して「Apply」
035.png
赤枠のリンクをクリック。
036.png
サブスクリプション選択して「Authorize」
037.png
これまでに作成したものをそれぞれ選択もしくは設定。
※Registryには「.azurecr.io」を付けるのを忘れずに
038.png
Artifactsは使用しないためチェックを入れて「Save」
039.png
「OK」
040.png
「Add an artifact」をクリック。
041.png
先程つくったビルドパイプラインを選択して「Add」
042.png

043.png
masterブランチを選択して「Save」
044.png
「OK」
045.png

自動ビルド・リリースを動かしてみる

「Hello World!」を「hello world!」に修正して「Commit」
046.png
「Commit」
047.png

ビルド

masterブランチに変更が入ったためビルドが始まる。
048.png
ビルド完了。
049.png

リリース

ビルドが終わり次第、リリースが始まる。
050.png
リリース完了。
051.png

App Serviceを確認

「Hello World!」が「hello world!」に変わっていることを確認。
052.png

(おまけ)自動テスト

自動テストにはTest Plansを使うものかと思っていたところ、公式に以下の記載を発見。

CI/CD ワークフローに自動テストは必要ありませんか?Azure Pipelines の使用

Azure PipelinesにContainer Structure Test用のTaskがあったので、ビルドパイプラインに組み込んでみる。

テスト用のファイルを作成

「hello-world.py」が存在するかチェックするだけ。
053.png

cst.yml
schemaVersion: '2.0.0'

fileExistenceTests:
- name: 'app'
  path: '/code/hello-world.py'
  shouldExist: true

ビルドパイプラインを修正

これでイメージがpushされた後にContainer Structure Testが実行される。
054.png
055.png
056.png

おわりに

おつかれさまでした。

参考

15
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?