はじめに
記載情報は CI/CD に関連します。
実務上関わった環境・機能を身近な情報としてお届けしたく、投稿をはじめました。
各学習上、お金のかからない方法を選択していきます。
以下の手順を実施することで、パイプラインを作成・実行できるようにします。
対象者と関連環境・機能
この記事は下記のような人を対象にしています。
- CI/CD 初学者
- プログラミング初学者
- 駆け出しエンジニア
記載している環境・機能は以下です。
- Azure Devops
- Azure Pipelines
準備
今回は github 上のパイプラインを Azure Pipelines から実行します。
下記が準備となりますが、振り返りが不要な場合にはお読み飛ばしください。
- Azure Devops (Artifacts) を無償、無料で使う
- Spring Tool Suite 4 インストール、Spring Initializr 、gradlew の利用
- Spring Boot Web アプリケーションを作る
- Jar の Library を作り、Azure Artifacts を利用して成果物を配布する
- ライブラリ開発者より指定されたバージョンを利用してアプリを作る
- アプリを Docker 、Docker Compose でコンテナを動かしてみる
ソース
本作業で利用するパイプラインとなります。
azure-Pipelines
trigger: ※パイプラインを起動するトリガーの設定。本サンプルでは手動での実行のみを想定。
- none
pool:
vmImage: 'ubuntu-latest' ※MS提供のVMでパイプライン実行を行う。
resources:
repositories:
- repository: 'application-springboot' ※githubからとってくる対象リポジトリ
type: github ※githubからとってくる
ref: main ※githubからとってくるブランチ
endpoint: '20220501' ※作成したサービスコネクション名
name: 'oad3/application-springboot' ※githubからとってくる対象リポジトリ
stages:
- stage: stage_test
jobs:
- job: MyJob
displayName: MyJob_1
workspace:
clean: outputs
steps:
- script: ls -la ※初期状態を出力
- checkout: self ※パイプライン配置している己「oad3/azure-Pipelines」を取得
- checkout: 'application-springboot' ※githubからとってくる対象リポジトリ(ビルド対象想定)
- script: ls -la ※取得後状態を出力
github 上のパイプラインを実行出来るようにサービスコネクション(Service connections)を作成する
- github への接続認証のため、事前に個人アクセストークンを取得します。
- github の個人アクセストークン取得後、サービスコネクションを作成作成します。
個人アクセストークンを設定
作成したサービスコネクション(Service connections)を利用して、パイプライン実行準備をする
★★★ 要注意 ★★★
以下は一日では終わらない可能性がありますが、少々腰を据えて準備ください。
パイプラインを実行する VM を MS 提供のものを使う想定となり、MS への申請が必要でした。(2, 3 営業日で利用許可通知が送られてきたような気はします。)
申請なしに MS Hosted の VM でパイプライン実行を行おうとしても、異常終了となりますためご認識ください。
自前のサーバでも可能ではありますものの「どちらのほうがハードルが低いか」ですと、ほんの少し自前のサーバへのエージェント設定のほうが面倒な印象があります。。
性能や可用性観点だと MS Hosted のみの運用はありえないとも思いますが、この場では活用させて頂きます。
Azure Pipelines を無料枠で使おうとして躓いた話
Azure Pipelines エージェント
GitHub 上のソースを読み込んでパイプライン実行をするためこちらを選択
パイプライン配置リポジトリとは異なる、アプリ配置リポジトリからソース取得して、階層表示している
関連作業
- CI/CD とは?
- Azure Devops (Artifacts) を無償、無料で使う
- Spring Tool Suite 4 インストール、Spring Initializr 、gradlew の利用
- Spring Boot Web アプリケーションを作る
- Jar の Library を作り、Azure Artifacts を利用して成果物を配布する
- ライブラリ開発者より指定されたバージョンを利用してアプリを作る
- アプリを Docker 、Docker Compose でコンテナを動かしてみる
- Azure Devops (PileLines) を無償、無料で使う
- Azure Devops (PileLines) でテスト、ビルド、イメージプッシュをする
- minikube(kubernetes) でコンテナを動かしてみる
- nginx のコンテナを Docker や minikube(kubernetes) で動かし、静的コンテンツ公開工程を模倣