|
[51CTO.com クイック翻訳] モダンアプリケーションの構築は、単にF5キーを押してビルドを開始するよりもはるかに複雑です。コードはプロセスの一部に過ぎません。効果的なCI/CD(継続的インテグレーション/継続的デリバリー)サービスの構築は、DevOps文化を育み、ソフトウェア開発ライフサイクルを自動化する上で不可欠な要素です。 自動化はプロセス全体において極めて重要な要素です。更新やマージのプルリクエストをチェックインするだけで、テストの実行、ビルドの実行、コードのパッケージ化、さらにはコードのデプロイまでが可能になります。MicrosoftのGitHubのようなツールは、公開コードと非公開コードの両方においてますます重要になってきており、それらを中心に構築するワークフローはソフトウェア開発の自動化の鍵となります。 GitHub Actionsの紹介 GitHubは最近、自動化ツール「GitHub Actions」の正式版をリリースしました。JenkinsやTravisといったビルド中心のCI/CDツールとは異なり、GitHub Actionsはコードに焦点を合わせます。このアプローチはGitHubにとって理にかなっているだけでなく、開発者にとっても他のツールよりも効率的です。皆さんは既に、ブランチ、プルリクエスト、コードレビュー、マージといったGitベースの開発ワークフローを用いて、開発チーム間の連携をアプリケーション開発において管理されているかもしれません。 GitHub Actionsは、GitHubの一般的なイベントを利用して、GitHubやその他の開発ツール内でアクションをトリガーするイベントベースのワークフローサービスです。GitHubでホストされているコードは、GitHubホスト環境でテスト・実行できます。また、独自のランナーを独自の環境でホストすることもできます。ワークフローステップが実行されると、結果がGitHubビューに表示され、自分のペースでステップを追うことができます。 YAMLでワークフローを記述し、一連のジョブをトリガーに関連付けることができます。ジョブは順次実行または並列実行できるため、GitHub Actionsを適切に調整することで、処理速度を大幅に向上させることができます。作成されたワークフロー記述は読みやすく、コードであるため、GitHub上に様々なActionを保存・管理できます。ワークフローライブラリを導入することで、開発プロセスの自動化に役立ちます。 Azure で GitHub Actions を使用する MicrosoftはAzureで使用できるGitHub Actionsスイートを開発しており、この度正式にリリースされました。当初のスイートは、GitHubからAzureへの成果物のデプロイに重点を置いていました。これらのアクションはGitHubリポジトリでホストされるため、ビルドされたコードとコンテナーをAzureのプラットフォームサービスに配信する一連のアクションのエンドポイントと考えるのが適切です。あるスイートはGitHub ActionsをAzure App Servicesと統合し、別のスイートはAzure Kubernetes Servicesへのデプロイを制御します。Azure CLIをランナーとして使用し、GitHub Actionsを使用してAzureリソースを管理するスクリプトをトリガーできます。その他の操作には、Azureデータベースの管理やAzure Functionsの構築とデプロイなどがあります。 まず、事前に生成されたサービスプリンシパルを使用してAzureにログインする必要があります。GitHub Actionsには独自のシークレットストアが含まれているため、Azure CLIを使用してトークンを作成し、それをActionsのストアにコピーして、今後の接続に使用できます。トークンを安全なストアに保存することでリスクを軽減しながら、ActionsによるAzureとのやり取りを自動化できます。追加のログインアクションは、AKSおよびAzure Container Registryへの接続を管理します。 GitHub Actions から Azure App Service へのデプロイでは、一般的なアーカイブ形式またはコンテナーの使用がサポートされています。ただし、コード用の .NET 環境の作成など、Microsoft のオペレーションは他の GitHub Actions に依存している点にご注意ください。 Microsoft は、Azure 向け GitHub Actions の入門セットを提供しており、開発ワークフローへの統合を支援します。サンプルコードでは、Azure 向け GitHub Actions の動作と、他のアクションとの連携方法を示しています。公開されている YAML では、リポジトリのチェックアウトの処理や、Azure 向け GitHub Actions のいずれかを使用してコードをデプロイする前にビルドとテストを行うための Node.js ランナーのインストールなど、GitHub 独自のさまざまなアクションが示されています。 実際のデプロイはシンプルです。必要なのは、保存済みのシークレットとアプリケーション名だけです。シークレットは、パブリッシングプロファイルのログイン情報でも構いません。より複雑なデプロイ(コンテナの配信など)の場合は、サービスプリンシパルのセットを使用してAzureアカウントにログインすることもできます。アクションが完了したら、必ずログアウトしてください。 CI/CD管理の自動化において特に興味深い点の一つは、単一のプラットフォームに限定されないことです。サーバーとサービスを接続するには、オープンAPIを使用しています。自動化はVisual Studioから開始し、GitHub Actions、Azure Pipelinesへと進み、最終的にビルド成果物をGitHubリポジトリに保存できます。こうした機能の組み合わせが鍵となります。私たちは単一の方法に限定されず、ワークフローに最適な方法でツールを選択し、構成することができます。開発の特定の段階でJenkinsを使用する必要がある場合は、Azure DevOpsやその他の環境内のプラットフォームと併用できます。 本質的には、これはアプリケーション開発の管理方法の全く異なるものであり、ソースコードリポジトリを基盤として運営されるようになりました。これにより、GitHubは開発エコシステムにおける役割を再考するようになりました。もはやGitHubは単なるコードの保存とレビューのためのプラットフォームではなくなったことは明らかです。 数千年にわたるコードアーカイブ GitHubは、数百万行に及ぶ公開コードを検索・インデックスできる能力を活かし、その専門知識を活用して、私たちが構築するコードのセキュリティ強化に取り組んでいます。セキュリティ問題の早期検出、セキュリティインシデントの報告、公開リポジトリにおけるセキュリティイベントの管理のための統合ツールを追加しています。現在、私たちのコードは多くのオープンソース開発チームに依存しているため、依存関係の問題を自動的に修正するために、GitHubが今年初めにDependabotから買収したツールを使用する必要があります。 GitHubはコードエコシステムの中心で重要な役割を果たしており、現在、数百年、さらには数千年にわたってコードを保存するための計画を立てています。この取り組みの一環として、GitHubは最近、スヴァールバル諸島の世界種子貯蔵庫近くの鉱山に最初のコードを保管しました。北極圏の酸素が枯渇した岩石の奥深くに設置された光学的にエンコードされたデータストレージコンテナは、少なくとも500年間保存可能です。プロジェクトの次のフェーズは2020年2月2日に開始され、すべての公開リポジトリをイメージ化し、単一の貯蔵庫に保存します。 GitHubは、Long Now Foundation、オックスフォード大学ボドリアン図書館、インターネットアーカイブといった組織と連携し、コードだけでなく、コードを中心に構築されたソーシャルネットワークや議論も保存する他のコードアーカイブ手法を検討しています。さらに、Microsoft Researchの3Dガラスベースのストレージ技術であるProject Silicaを活用し、より長期保存可能なアーカイブを作成することも検討しています。 IT業界は誕生からまだ1世紀も経っていませんが、私たちは既に数千年も使えるコードベースを構築しています。これは、ソフトウェアと開発の重要性、そしてそれらが文明にとってどれほど大きな意味を持つかを強調するものです。開発者にとって、その責任は計り知れません。 元のタイトル: GitHub Actions を使用して Azure にコードをデプロイする、著者: Simon Bisson [この記事は51CTOによって翻訳されました。提携サイトへの転載の際は、元の翻訳者と出典を51CTO.comとして明記してください。] |