CircleCIには,すばやく起动して実行できるように设计された宝珠と呼ばれる制品があり,CircleCIのテクノロジーパートナーが提供する信頼性の高い宝珠とDevOps的ツールを简単に统合できます。

この记事では,AWS ECR Orbをデモおよび说明し,CircleCIのコンフィグファイルでこの球を使用する方法を说明します。ここでは,CircleCI工作流を活用し,泊坞枢纽および指定されたAWS ECRにイメージをプッシュします。

CircleCI宝珠とは?

宝珠は,プロジェクト间で共有できるCircleCIコンフィグのパッケージです.Orbsを使用すると,ジョブ,コマンド,および执行人から构成される単一のバンドルを作成して,相互に参照したり,CircleCIビルドコンフィグにインポートして独自のネームスペースで呼び出したりすることができます.OrbsはCircleCIで登录され,リビジョンはsemverパターンを使用して表されます.CircleCI圆球は,CircleCI圆球の中央リポジトリであるCircleCI圆球オーブレジストリでホスティングおよび管理されます。

前提条件

orbの使用を始める前に,次のものが必要です。

すべての前提条件を完了したら,次のセクションに进みましょう。

CircleCIプロジェクトの環境変数の構成

プロジェクトのCI / CDパイプラインは,多克尔イメージを复数のコンテナリポジトリにデプロイするため,CircleCIプロジェクト设定でいくつかの环境変数を设定する必要があり

  • 左側のメニューのCircleCIダッシュボードで添加项目をクリックします。
  • プロジェクトリストで必要なプロジェクト名を见つけてクリックし,右侧で建立项目をクリックします。
  • 右上の領域にあるCircleCIダッシュボードの项目COGボタンをクリックします。
  • 建立设置セクションで,环境变量をクリックします。
  • 添加变量をクリックします。

添加环境变量,ダイアログボックスで,このビルドに必要ないくつかの環境変数を定義します。定義する必要がある環境変数のリストを以下に示します。

  • 名前:AWS_ECR_ACCOUNT_URL値:AWS ECRレジストリのURL
  • 名前:AWS_ACCESS_KEY_ID値:AWS我アカウントのアクセスキーID
  • 名前:AWS_SECRET_ACCESS_KEY値:AWS IAMアカウントのシークレットをアクセスキー
  • 名前:DOCKER_LOGIN値:码头工人中心のユーザー名
  • 名前:Docker_PWD値:码头工人中心のユーザー名

ビルドを正常に完了するためには,これらの环境変数を正しく设定することが重要です。次のセクションに进む前に,これらの変数とその値が适切に设定されていることを确认してください。

CircleCI AWS ECR宝珠の使用

以下は,このプロジェクトのパイプラインを定義するconfig.ymlファイルです。次のセクションでは,このconfig.ymlファイルのさまざまな要素について说明します。

2.1球体aws-ecrcircleci / aws-ecr@0.0.4工作流程build_test_deploy工作-build_test-docker_hub_build_push_image要求-build_test-AWS-ECR / build_and_push_image地区美国 - 东 -  1帐户url$ {AWS_ECR_ACCOUNT_URL}回购$ {CIRCLE_PROJECT_REPONAME}标签$ {} CIRCLE_BUILD_NUM要求-build_test工作build_test码头工人-图像circleci /蟒蛇:2.7.14步骤-结帐-名称设置VirtualEnv命令|的HelloWorld的virtualenv。helloworld / bin /激活PIP安装--no-缓存目录-r requirements.txt-名称运行测试命令|。helloworld / bin /激活python test_hello_world.pydocker_hub_build_push_image码头工人-图像circleci /蟒蛇:2.7.14步骤-结帐-setup_remote_dockerdocker_layer_caching-名称构建Docker镜像并将其推送到Docker Hub命令|回声出口TAG = 0.1。$ {CIRCLE_BUILD_NUM}'>> $ {} BASH_ENVecho 'export IMAGE_NAME=${CIRCLE_PROJECT_REPONAME}' >> ${BASH_ENV}那么它将扩展BASH_ENV}源$ {搬运工构建-t $ {DOCKER_LOGIN} / $ {} IMAGE_NAME -t $ {DOCKER_LOGIN} / $ {} IMAGE_NAME:$ {标签}。echo ${DOCKER_PWD} | docker login -u ${DOCKER_LOGIN}——password-stdin搬运工推$ {DOCKER_LOGIN} / $ {} IMAGE_NAME

工作流とorbの指定

球体aws-ecrcircleci / aws-ecr@0.0.4

魔法球:キーは,このパイプラインで球が使用されることを指定します。aws-ecr:キーは,コンフィグで使用される内部名を定義します。circleci / aws-ecr@0.0.4の値は,aws-ecr:キーによって使用および参照される実際のOrbを指定して関連付けます。これらのOrbステートメントは,他の言語およびフレームワークのインポートステートメントのようなものですす。

工作流程build_test_deploy工作-build_test-docker_hub_build_push_image要求-build_test-AWS-ECR / build_and_push_image地区美国 - 东 -  1帐户url$ {AWS_ECR_ACCOUNT_URL}回购$ {CIRCLE_PROJECT_REPONAME}标签$ {} CIRCLE_BUILD_NUM要求-build_test

工作流の定义

工作流程:キーは,ビルドジョブとorbで構成される工作流のリストを指定します。このセグメントは,build_test_deploy:いう工作流を指定します。

工作-build_test-docker_hub_build_push_image要求-build_test

このセグメントでは,职位:キーが指定され,このパイプライン内で実行されるすべてのジョブと圆球が记述します。このリストの最初のジョブはbuild_testであり,ジョブの依存关系はありません。

Orbの定義

工作流リストの次のジョブであるdocker_hub_build_push_image:は,後で説明するジョブを指していまが,docker_hub_build_push_image:ジョブがbuild_testジョブの成功に依存することを指定する要求:キーに注目してください。そうしないと,ビルド全体が失败し,工作流の残りのジョブは実行されなくなります。

-AWS-ECR / build_and_push_image地区美国 - 东 -  1帐户url$ {AWS_ECR_ACCOUNT_URL}回购$ {CIRCLE_PROJECT_REPONAME}标签$ {} CIRCLE_BUILD_NUM要求-build_test

上記のセグメントは,AWS ECR Orbの実行を指定するAWS-ECR / build_and_push_image:キーを示しています.AWS ECR球には,この例の组み込み环境変数に割り当てられる値を必要とするパラメーターが设定されます。この球の详细については,AWS ECR球のドキュメントを参照してください。この特定のAWS ERC球は,このの宝珠build_and_push_imageメソッドを実行する前に,build_test:ジョブが正常に完了することに依存します。

工作の定义

このコンフィグのプライマリ职位:要素で定义されるジョブで参照される,コンフィグの工作流程:および魔法球:要素について说明してきました。次のコードのセグメントは,このコンフィグ构文で定义されるすべてのジョブを示しています。

工作build_test码头工人-图像circleci /蟒蛇:2.7.14步骤-结帐-名称设置VirtualEnv命令|的HelloWorld的virtualenv。helloworld / bin /激活PIP安装--no-缓存目录-r requirements.txt-名称运行测试命令|。helloworld / bin /激活python test_hello_world.pydocker_hub_build_push_image码头工人-图像circleci /蟒蛇:2.7.14步骤-结帐-setup_remote_dockerdocker_layer_caching-名称构建Docker镜像并将其推送到Docker Hub命令|回声出口TAG = 0.1。$ {CIRCLE_BUILD_NUM}'>> $ {} BASH_ENVecho 'export IMAGE_NAME=${CIRCLE_PROJECT_REPONAME}' >> ${BASH_ENV}那么它将扩展BASH_ENV}源$ {搬运工构建-t $ {DOCKER_LOGIN} / $ {} IMAGE_NAME -t $ {DOCKER_LOGIN} / $ {} IMAGE_NAME:$ {标签}。echo ${DOCKER_PWD} | docker login -u ${DOCKER_LOGIN}——password-stdin搬运工推$ {DOCKER_LOGIN} / $ {} IMAGE_NAME

上记のセグメントでは,build_test:docker_hub_build_push图像:の2つのジョブが定義されています。これは,元のコンフィグ構文を示しています。build_test:ジョブはPythonコンテナをインスタンス化し,アプリの依存関係をインストールし,アプリの単体テストを実行します。

docker_hub_build_push_image:ジョブは,イメージの命名とタグ付けに使用される環境変数を設定し,Dockerfileに基づいて码头工人イメージをビルドし,ビルドされたイメージを码头工人中心にプッシュします。

このコンフィグ全体は,コンフィグ構文で堅牢で強力な機能を提供する工作流,球体,およびジョブを定義および実装する方法を示しています。このパイプラインを正常に実行できたら,码头工人中心とAWS ECRリポジトリで码头工人イメージのテストを完了できます。

まとめ

見ていただいたように,职位:セグメントはAWS ECR球の定义に比べて少し冗长になっています.Orbsは,机能をカプセル化し,一贯性を确保し,パイプラインコンフィグで缲り返し実行されるコードを减らすように设计されており,简洁なコンフィグ构文にすることが可能になります。

宝珠を使用すると,チームやプロジェクト间で优先して使用するCI / CD设定を共有でき,わずか数行でツールとサードパーティのソリューションを简単に统合できます。开発コミュニティのメンバーは,宝珠を记述して,一般的な问题を解决し,コンフィグを容易に管理できます。一般的なユースケースで圆球を共有して再利用できるようになると,チームの时间が解放され,ビジネスを差别化するための重要な课题を解决するために多くの时间を费やすことが可能になります。また,コミュニティの他のユーザーには,CI / CDのワークフローを加速するソリューションを提供できます。

宝珠の开発がさらに推进され,宝珠がCI / CDパイプラインを合理化する优れた机能をもたらすことを期待しています.Orbレジストリを参照しても,必要とする机能を提供する球が见つからない场合は,独自のカスタム球を作成することをお勧めします。现在,CircleCI球レジストリでホストされているすべての球は公开されており,一般に利用することが可能です。现在,プライベート圆球はこのレジストリでサポートされていませんが,この机能は球のロードマップにあり,今后利用可能になる予定です。

参考

要了解更多关于球体,工作流程和CircleCI使用下面列出的参考文献: