DevOps

GitHub ActionsによるAzure App Serviceデプロイ入門

  • POST
はじめに Azure App ServiceへのアプリケーションデプロイにおいてCI/CD(継続的インテグレーション/継続的デリバリー)の導入は、開発の効率化と品質向上に不可欠です。 本記事では、GitHub Actionsを使用してAzure App Serviceへ自動デプロイする方法を解説します。 GitHub Actionsとは GitHub Actionsは、GitHubが提供するCI/CD(継続的インテグレーション/継続的デリバリー)プラットフォームです。 リポジトリ内で直接ビルド、テスト、デプロイのワークフローを自動化できます。 特徴: リポジトリと統合: GitHubリポジトリと密接に統合され、プッシュやプルリクエストなどのイベントに応じて自動実行 豊富なアクション: GitHub Marketplaceで公開されている数千のアクションを活用可能 無料枠: パブリックリポジトリは無料、プライベートリポジトリも一定時間まで無料 基本概念 ワークフロー(Workflow) 自動化されたプロセス全体を定義するYAMLファイル。.github/workflows/ディレクトリに配置します。 ジョブ(Job) ワークフロー内で実行される作業の単位。複数のジョブを並行または順次実行できます。 ステップ(Step) ジョブ内で実行される個別のタスク。コマンドの実行やアクションの呼び出しを行います。 アクション(Action) 再利用可能な処理単位。GitHub Marketplaceで公開されているものや、自作のものを使用できます。 ランナー(Runner) ワークフローを実行する仮想マシン。GitHubホステッドまたはセルフホステッドを選択できます。 ワークフロー構文の基礎 基本的なワークフロー構文を見てみましょう: name: 'ワークフロー名' # トリガー条件 on: push: branches: - main pull_request: branches: - main # 環境変数 env: APP_NAME: my-app PYTHON_VERSION: '3.10' # ジョブ定義 jobs: # ビルドジョブ build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: python-version: ${{ env.

GitHub Actionsのアーティファクト容量を管理する retention-days設定

  • POST
GitHub Actionsのアーティファクト容量を管理する retention-days設定 はじめに GitHub Actionsでビルド成果物やデプロイ用のファイルをアーティファクトとしてアップロードする際、適切な保持期間を設定しないと、リポジトリの容量を圧迫してしまう問題が発生します。 特にデプロイ時に一時的に使用するだけのファイルは、長期間保存する必要がないため、retention-daysオプションを使用して自動削除の設定を行うことが推奨されます。 本記事では、GitHub Actionsのアーティファクト管理における retention-days の設定方法と、そのベストプラクティスについて解説します。 アーティファクトの容量問題 GitHub Actionsでアップロードされたアーティファクトは、デフォルトで90日間保持されます。 ビルドやデプロイを頻繁に実行するプロジェクトでは、この90日間で大量のアーティファクトが蓄積され、以下のような問題が発生する可能性があります。 ストレージ容量の圧迫: リポジトリのストレージ制限に達する コスト増加: GitHub Proや組織アカウントでは、ストレージ容量に応じて課金される 管理の煩雑化: 不要なアーティファクトの手動削除が必要になる retention-daysの設定方法 actions/upload-artifact@v4 アクションでは、retention-days パラメータを使用して、アーティファクトの保持期間を日数で指定できます。 基本的な設定例 デプロイ時に一時的に使用するビルド成果物の場合、5日程度の保持期間で十分です。 - name: 'Upload Artifact' uses: actions/upload-artifact@v4 with: name: build-artifact path: build.zip retention-days: 5 パラメータの詳細 name: アーティファクトの識別名 path: アップロードするファイルまたはディレクトリのパス retention-days: 保持期間(日数)。 まとめ GitHub Actionsのアーティファクトは、適切な retention-days 設定を行わないと、容量を圧迫してしまう可能性があります。 特にデプロイ用の一時ファイルは、5〜7日程度の短期間で自動削除されるように設定することで、ストレージ容量とコストの最適化が可能です。 本記事で紹介した設定例を参考に、プロジェクトの用途に応じた適切な保持期間を設定してください。 a8adscript('body').showAd({"req": {"mat":"3HREPM+6UHH82+279M+HUSFL","alt":"商品リンク","id":"3IzcOOW-g7-u2A1CfX"},"goods": {"ejp":"h"+"ttps://ebookjapan.yahoo.co.jp/books/789749/","imu":"h"+"ttps://cache2-ebookjapan.akamaized.net/contents/thumb/m/J6100281917861.jpg?1696410860000"}});

Azure DevOpsのパイプラインからAppServiceのデプロイ

  • POST
Azure DevOpsのパイプラインからAppServiceへのデプロイ はじめに 本記事では、マイクロソフトから提供されているサンプルWebアプリケーションを使って,Azure DevOpsでのリポジトリの作成~パイプラインの作成からAppServiceの デプロイを行うまでの一連の操作を記載する。 AppServiceにWebアプリケーションを作成 以下の手順で、Webアプリケーションを作成。 DebOpsで組織を作成 DevOps用のプロジェクトの作成 リポジトリの作成 サービスコネクションを作成 サンプルプログラムを取得。 以下のサイトから、サンプルプログラムを取得してZIPダウンロードする。 先程クローンしたローカルリポジトリに展開する。 https://github.com/MicrosoftDocs/pipelines-java コミットを行い、その後リモートリポジトリにPushする。 $ git add . $ git commit -m "Sample WebAppを追加" $ git push パイプラインYAML作成 以下のパイプラインを作成する。 trigger: - master variables: # Azure Resource Manager connection created during pipeline creation azureSubscription: '作成したサービスコネクション名を指定' # Web app Type webAppType : 'webAppLinux' # Web app name webAppName: 'sample-web-application' # Environment name environmentName: 'sample-enviroment' # Agent VM image name vmImageName: 'ubuntu-latest' stages: - stage: Build displayName: 'Build stage' jobs: - job: Debug displayName: 'Show debug message' steps: - script: | echo "Subscription : $(azureSubscription)" echo "Web App Name : $(webAppName)" echo "Environment Name : $(environmentName)" echo "Vm Image Name : $(vmImageName)" echo "Pipeline Workspace Name : $(Pipeline.

Azure DevOpsのまとめ

  • POST
DevOpsとは 開発~公開までの作業(ビルド、テスト、デプロイ)を迅速に行うことができるAzureのサービスです。 手動でのリリースの場合、 作業時間がかかる テスト漏れ リリースミス というデメリットがありますが、DevOpsを使用することで迅速に、頻繁に、確実に行える仕組みを構築することができます。 Azure DevOpsの特色 リリース作業に必要なサービスが揃っている ビルド、テスト、資産管理、チケット管理まで一括して行える。 GUIでの操作性に優れている GUIリリース作業フローを作成できる。 AWSのサービスと比べ構築しやすい。 利用コストが安い 5人までのプロジェクトであれば無料。 他サービスと連携できる GitHubなどの他のサービスと連携できる Azure DevOpsの主な機能 Overview プロジェクトの概要を表示します。 Aure Boards JIRAやTrelloのようなタスク管理が行え、バグトラッキングとして修正資産と紐づけることができます。 Azure Repos Gitホスティング ソース管理が行えます。 Azure Pipelines 継続的インテグレーション(CI)/継続的デリバリー(CD)処理をGUIを利用して、YAML形式で設定が可能。 連携次第で、GitHubやその他のリポジトリサービスも利用可能。 ビルドツール Ant .Net Gradle Mavenも利用可能です。 Azure Test Plans 手動の探索的テストの管理ができるサービスです。 https://news.mynavi.jp/article/zeroazure-30/ Azure Artifacts パッケージ リポジトリ 成果物を格納することができるサービスです。 例えば、リリース作業時のテスト結果のエビデンスを格納することもできる。 a8adscript('body').showAd({"req": {"mat":"3HREPM+6UHH82+279M+HUSFL","alt":"商品リンク","id":"3IzcOOW-g7-u2A1CfX"},"goods": {"ejp":"h"+"ttps://ebookjapan.yahoo.co.jp/books/789749/","imu":"h"+"ttps://cache2-ebookjapan.akamaized.net/contents/thumb/m/J6100281917861.jpg?1696410860000"}});