このセクションでは、JFrog Pipelines を使用して CI/CD パイプラインを設定します。パイプラインでは、アプリケーションを取得し、Docker イメージをビルドします。それを Docker リポジトリにプッシュします。セキュリティ脆弱性をスキャンします。次に、それをプロモートします。最後に、Docker Compose を使用して AWS ECS クラスターにデプロイします。Docker Compose を使用して Amazon ECS を作成およびデプロイする方法について詳しくはこちらをご覧ください。

次のことを行います:
- ワークショップコードを設定
- GitHub、AWS、およびArtifactoryリポジトリに接続するためのJFrog Pipelines統合を設定
- CI/CDパイプラインをJFrog Pipelinesに追加します。次にアプリをビルドしてデプロイ
- Docker Composeを使用して新しいECSクラスターを自動的に作成
このワークショップではDockerを使用しますが、JFrogプラットフォームはAlpine、Maven、Gradle、Docker、Conda、Conan、Debian、Go、Helm、Vagrant、YUM、P2、Ivy、NuGet、PHP、NPM、RubyGems、PyPI、Bower、CocoaPods、GitLFS、Opkg、SBTなど、すべての主要なパッケージ形式をサポートするユニバーサルソリューションです。
コードのダウンロード
コードは、このGitHubリポジトリにあります。ワークショップに必要なファイルとスクリプトを取得するために、このリポジトリをローカルにクローンします。
- このリンクにアクセスし、このリポジトリをあなたのGitHubアカウントにフォークします。
- Cloud9ターミナルで、次のコマンドを使用してこのリポジトリをローカルディレクトリにクローンします:
git clone https://github.com/<GitHubユーザー名>/aws-ecs-docker-compose-workshop.git

JFrog Pipelinesの統合を設定
CI/CDパイプラインでは、コードを取得するためにGitHubへのアクセス、DockerイメージをデプロイするためにJFrog Artifactoryへのアクセス、ECSにデプロイするためにAWSへのアクセスが必要です。これを可能にするために、JFrog Pipelinesの統合を設定します。

統合は、Pipelinesを外部サービスやツールに接続します。各統合タイプは、エンドポイント、認証情報、およびサービスと情報を交換するために必要なその他の設定詳細を定義します。すべての認証情報は暗号化され、安全なストレージに保存されます。
これらの統合を以前のステップで既に作成している場合は、それらを再利用できるため、再作成する必要はありません。JFrog Pipelinesは、統合とリソースをパイプライン間で共有することを許可します。
- JFrog Platformのインスタンスで、管理 > パイプライン > 統合に移動します。
- 統合を追加をクリックします。
- 名前には「artifactory_integration」と入力します。
- 統合タイプには「Artifactory」を選択します。
- APIキーの取得をクリックしてAPIキーを生成します。
- 接続をテストをクリックして確認します。
- 作成をクリックして統合を作成します。
- 次に、再び統合を追加をクリックします。
- 名前には「github_integration」と入力します。
- 統合タイプには「GitHub」を選択します。
- GitHubの個人アクセストークンをコピーして貼り付けます。以下の最低限のGitHub権限を持っていることを確認してください:
- repo(すべて)
- admin:repo_hook(読み取り、書き込み)
- admin:public_key(読み取り、書き込み)
- 接続をテストをクリックして確認します。
- 作成をクリックして統合を作成します。
- 次に、Cloud9のターミナルで以下のコマンドを実行し、AWSユーザーとアクセスキーIDおよびシークレットアクセスキーを作成します。
aws iam create-user --user-name workshopuser aws iam attach-user-policy --user-name workshopuser --policy-arn arn:aws:iam::aws:policy/AdministratorAccess aws iam create-access-key --user-name workshopuser
- これらのコマンドの出力をコピーします。
- JFrog Platformのインスタンスに戻り、管理 > パイプライン > 統合に移動します。
- 次に、再び統合を追加をクリックします。
- 名前には「aws_integration」と入力します。
- 統合タイプには「AWS」を選択します。
- 上記のアクセスキーIDとシークレットアクセスキーの値を入力します。
- 作成をクリックして統合を作成します。
おめでとうございます!これで、CI/CDパイプラインに必要な統合が作成されました。
パイプラインの更新
JFrog Platformのインスタンスを使用するためにCI/CDパイプラインを更新する必要があります。CI/CDパイプラインはpipelines.yml
で定義されています。このパイプラインファイルはvalues.yml
ファイルでパラメータ化されています。このファイルを更新する必要があります。
- Cloud9ターミナルでエディタを使用して
pipelines.yml
ファイルを表示し、ステップを確認します。パラメータ化された値に注意してください。 - 最後のステップである
ecs_deploy
では、特別なECSコンテキストを使用して、Docker Composeを使用してECSクラスターにアプリケーションをデプロイします。これはdeploy.sh
スクリプトで実現されます。このファイルをエディタで表示してください。 - エディタで
values.yml
ファイルを選択し、パラメータ化された値をJFrog Platformインスタンスとフォークしたリポジトリを指すように更新します。変更を保存します。 - Cloud9のターミナルで、次のコマンドを実行してこれらの変更をコミットします。
git add . git commit -m 'Updated values.yml.'
- 次に、これらの更新をプッシュします。ユーザー名とパスワードを求められた場合は、GitHubのユーザー名と個人アクセストークン/パスワードを使用してください。
git push origin master
これで、CI/CDパイプラインを追加して実行する準備が整いました。
ビルド、公開、およびECSへのデプロイ
- JFrog Platformインスタンスで、アプリケーション > パイプライン > パイプラインソースに移動します。
- パイプラインソースを追加をクリックします。
- 右上のパイプラインソースを追加をクリックし、YAMLからを選択します。
- SCMプロバイダーの統合には、以前に作成した
github_integration
を選択します。 - リポジトリのフルネームにはフォークした
/aws-ecs-docker-compose-workshop
を選択します。 - ブランチには
master
を選択します。 - パイプライン設定ファイルフィルターは
pipelines.yml
のままにします。 - ソースを作成をクリックします。JFrog PipelinesがCI/CDパイプラインを処理します。ステータスは「同期されていない」、「同期中」、そして「成功」と表示されます。
- アプリケーション > パイプライン > 私のパイプラインに移動します。パイプラインのステータスが「ビルドされていない」と表示されていることに気づきます。
- パイプライン
aws_ecs_docker_compose_workshop_app_build
をクリックします。 - app_docker_buildステップをクリックし、このステップを実行してパイプラインをトリガーします。JFrog Pipelinesはビルドノードを割り当て、パイプラインを実行します。
- 実行には数分かかります。各ステップのステータスを監視するには、「実行」をクリックします。
- プルダウンを使用して各ステップを選択し、ログを表示します。
- パイプラインの実行が完了したら(約5〜10分)、
ecs_deploy
ステップのログを表示します。 - このパイプラインが実行中の間に、CloudFormationコンソールに移動して、新しいECSクラスターの作成を確認します。また、ECSコンソールに移動して新しいクラスターを観察できます。
- 下にスクロールしてポート値を取得します。ブラウザにその値を入力して、アプリケーションを表示します!
JFrogで結果を表示
Dockerイメージをビルドして公開しました。これらの結果をJFrogプラットフォームで確認しましょう。
- JFrogプラットフォームインスタンスにアクセスし、Artifactoryのパッケージビューに切り替えます。Artifactory ► パッケージに移動します。
- ワークショップでビルドされたDockerイメージの名前を検索します。ECSビルドの場合は
ecs-docker-compose-workshop-app
を、EKSビルドの場合はeks-workshop-app
を検索します。 - Dockerイメージのリストをクリックします。
- バージョンのリストが表示されます。ビルドされた最新バージョンをクリックします。
- Xrayデータタブでセキュリティ違反を確認します。ライセンス違反はJFrogプラットフォームのProおよびEnterpriseティアで利用可能です。
- 任意の違反をクリックして、問題の詳細タブで詳細と影響を確認します。
- 下にスクロールして参照セクションにアクセスし、問題を修正するためのドキュメントへのリンクを確認します。
多くの場合、コンポーネントを更新するだけでXrayがこれを示します。
Xrayはすべての主要なパッケージタイプをサポートし、パッケージを展開する方法を理解し、再帰的なスキャンを使用してコンポーネントのすべての基礎的な層と依存関係を確認します。包括的な脆弱性インテリジェンスデータベースは常に更新され、バイナリのセキュリティとコンプライアンスの最新の理解を提供します。
- 問題の詳細タブを閉じます。
- DockerレイヤータブでイメージのDocker構成を表示します。
- ビルドタブで、リストから
npm_build
をクリックします。 - 最新のビルドをクリックします。
- 公開されたモジュールタブで、ビルドのアーティファクトと依存関係のセットを確認します。
JFrog CI/CD「パイプライン」は、JFrog Pipelines、Artifactory、およびXrayを使用して、通常のビルド、Dockerビルドとプッシュ、セキュリティスキャンおよびプロモーションプロセスの概要を提供しました。JFrogプラットフォームを使用すると、バージョンから脆弱性まで、ソフトウェアビルドの結果を確認できます。
コメント