Inferred DevSecOps 構成でパイプラインを作成する

独自のアプリケーションやマイクロサービスを DevSecOps の継続的インテグレーション(CI)ツールチェーンに追加したら、「Inferred」の DevSecOps パイプライン構成機能を利用して、すぐに作業を開始できます。 この特集:

  • .pipeline-config.yaml DevSecOpsパイプライン設定ファイルの内容を推測します
  • コードのビルド、テスト、デプロイに必要なスクリプトを特定する
  • これらのスクリプトのコードを提供するので、アプリケーションに集中することができます

この機能を利用することで、マイクロサービスやアプリケーションをパイプライン DevSecOps に簡単に組み込み、導入 DevSecOps を効率化できます。

推論 DevSecOps パイプライン構成の設定には追加の手順は不要です。これは既に.NET Frameworkに統合 DevSecOps されているためです。

DevSecOps 継続的デプロイ(CD)ツールチェーンにも、デフォルトのパイプライン構成が用意されています。 これにより、CI側でInferredの DevSecOps 構成を利用している導入企業は、同じアプローチをCDパイプラインにも安全に拡張できるようになります。 展開アクションは、インベントリエントリの app_artifacts メタデータに基づいて決定されます。

DevSecOps 継続的コンプライアンス(CC)ツールチェーンも、推論による DevSecOps 構成の恩恵を受けることができます。 パイプラインの構成は、インベントリエントリに含まれるリポジトリの内容に基づいて推測されます。

前提条件

  1. DevSecOps ツールチェーンをセットアップし、 アプリケーションのソースコード・リポジトリを 統合する。

    デフォルトのサンプルアプリリポジトリは使用しないでください。 その代わりに、自分のアプリケーションのリポジトリをオンボードにする。

  2. DevSecOpsパイプラインのカスタマイズの基本 を確認し、利用可能なさまざまなテンプレート、サポートオプション、およびDevSecOpsを始めるためのその他の重要な情報について詳しく知る。

始めに

はじめに、自分のソースコード・リポジトリを使うようにツールチェインを設定する。 そして、最初の DevSecOpsCIパイプライン実行する。 この機能はデフォルトで有効になっているので、追加の設定は必要ない。 アプリケーションやサービスのビルド、テスト、デプロイに必要なDevSecOpsパイプライン構成とスクリプトを動的に推論します。

この機能を無効にするには、リポジトリの既存のファイルと一致する 'pipeline-config 値を設定します。

推測されたDevSecOpsパイプライン構成によるスポット

InferredDevSecOpsPipeline Configuration機能は、ソース・イントロスペクションと言語定義を使用して、ソース・リポジトリ内の'spots 特定します。 spot」は、コードの中で特定のアクションを実行する必要のある場所である。

各スポットには以下の特性がある:

スポット物件
プロパティー (Property) 説明
ソース スポットのコンテキストとして、ソースコード・リポジトリ内の場所を特定する。
プロセス 実行される操作の種類を示す1つ以上のプロセス。
ツール プロセスに関連付けられた配列で、アクションを実行するために起動するツールを列挙する。 それぞれのツールは独自のプロパティを持つことができる。
環境セットアップ プロセス操作(ツール呼び出し)を実行するための環境をセットアップするために開始されるスクリプトファイル(またはスクリプトコマンド)を参照する。

特定スポット

InferredDevSecOpsPipeline Configuration機能は現在、以下のタイプの'spots を識別している: code スポット、「deployment スポット、「acceptance-test スポット、「dynamic-scan スポット、「release スポット。

コード・スポット

コード・スポットは、サポートされているソース・コード言語に関連している:

code スポットは以下の処理を行う:

  • building: 与えられたソースコードのビルドを実行するツールを定義する。
  • unit-testing: ビルド結果のユニットテストを実行するツールを探す。

配備スポット

deployment スポットは、配備リソースと配備ツールを含む配備ビークルを見つける。 deployment スポットには、配備ツールを列挙する配備プロセスがある。 現在サポートされている配備車両は以下の通り:

アクセプタンス・テスト・スポット

acceptance-test スポットは、実行する受け入れテスト・スイートを特定する。 acceptance-test スポットには、受け入れテスト・スイートを実行するツールを特定する 'acceptance-testing プロセスがある。

ダイナミックスキャンスポット

dynamic-scan スポットは、ダイナミック・スキャンの場所を特定する。 ダイナミックスキャンスポットには、ダイナミックスキャン中に呼び出されるスキャンツールをリストアップする「scanning プロセスがある。

OWASP ZAP スキャン は、サブウェブフック・トリガーを起動する唯一のサポートされたツールです。

リリーススポット

release スポットは、リリースプロセスを示す。 リリーススポットには、リリース段階で実行するツールをリストアップした「releasing プロセスがある。 現在、リリースプロセスでサポートされているツールは以下の通り:

polyglot-spots.jsonの内容のサンプル

InferredDevSecOpsPipeline Configuration機能は、CIパイプラインステージ中に特定のアクションやツールをトリガーするために、スポットを抽出し、以下のJSONコンテンツを生成します。

{
  "code": [
    {
      "source": "Dockerfile",
      "language": "Dockerfile",
      "building": {
        "tools": [
          {
            "tool": "docker"
          }
        ]
      }
    },
    {
      "source": "package.json",
      "language": "NodeJS",
      "building": {
        "tools": [
          {
            "tool": "npm"
          }
        ]
      },
      "unit-testing": {
        "tools": [
          {
            "tool": "npm",
            "command": "test"
          }
        ]
      }
    }
  ],
  "acceptance-test": [
    {
      "source": "package.json",
      "acceptance-testing": {
        "tools": [
          {
            "tool": "npm",
            "command": "run acceptance-test"
          }
        ]
      }
    }
  ],
  "deployment": [
    {
      "source": "deployment_iks.yml",
      "deploying": {
        "tools": [
          {
            "tool": "kubectl"
          }
        ],
        "environment-setup": ".env.deploy.sh"
      }
    },
    {
      "source": "deployment_os.yml",
      "deploying": {
        "tools": [
          {
            "tool": "kubectl"
          }
        ],
        "environment-setup": ".env.deploy.sh"
      }
    }
  ],
  "dynamic-scan": [
    {
      "source": "definitions/definitions1.json",
      "scanning": {
        "tools": [
          {
            "tool": "trigger-async-zap",
            "kind": "api"
          }
        ],
        "environment-setup": "scripts/zap/zap-custom-scripts/.env.dynamic-scan.sh"
      }
    },
    {
      "source": "scripts/zap/uiscripts/run.sh",
      "scanning": {
        "tools": [
          {
            "tool": "trigger-async-zap",
            "kind": "ui"
          }
        ],
        "environment-setup": "scripts/zap/zap-custom-scripts/.env.dynamic-scan.sh"
      }
    }
  ],
  "release": []
}

拡張構成

ファイル注入

InferredDevSecOpsパイプライン・コンフィギュレーション機能は、'polyglot-spots.json と'.pipeline-config.yaml ファイルの内容を使用して、DevSecOpsパイプライン・プロセスの実行をカスタマイズする。

CIパイプラインの'finish 段階では、'polyglot-spots.json と'.pipeline-config.yaml(CIパイプライン実行の静的パイプライン構成に対応)の両方が、アプリケーションのソースコードリポジトリの'inferred-devsecops(デフォルト)という名前のブランチに追加される。

プロパティ create-inferred-pipeline-configuration-v2true に設定されている場合(デフォルトは false )は、フォーマットバージョン 2 のパイプライン構成(コンプライアンスパイプラインのブランチ v11 など)も生成できます。 .pipeline-config-v2.yaml のような追加のパイプライン構成ファイルが、アプリケーションのソースコードリポジトリ内の inferred-devsecops (デフォルト)というブランチに追加されます。

インジェクション・ブランチの設定

inferred-devsecops-branch パイプライン・プロパティを使用して、DevSecOps推論ファイルを注入するブランチの名前を設定できます。 デフォルト値はinferred-devsecopsです。

push-inferred-pipeline-configuration-files パイプラインプロパティ( push-polyglot-files プロパティは、 push-inferred-pipeline-configuration-files プロパティに置き換わるため廃止予定)を使用して、 inferred-devsecops ブランチの作成と更新を有効または無効にします

inferred-devsecops ブランチの有効化または無効化
説明
true (デフォルト) 設定ファイルが追加され、アプリケーションのソースコードリポジトリの「inferred-devsecops ブランチにプッシュされる。
false 設定ファイルは inferred-devsecops ブランチには追加されない。

スポット抽出の設定

以下のパイプライン環境プロパティを使用して、スポットの抽出を設定します:

シミを無視する

正規表現を使用することで、抽出時に特定のスポットを無視することができます。 以下の構成オプションを使用できます。

  • ignore-code-spot-pattern: 指定された正規表現にマッチするコードスポットを無視する。
  • ignore-deployment-spot-pattern: 指定された正規表現にマッチする配置スポットを無視します。
  • ignore-dynamic-scan-spot-pattern: 指定された正規表現にマッチするダイナミックスキャンスポットを無視する。
  • ignore-acceptance-test-spot-pattern: 指定された正規表現にマッチする受け入れテストスポットを無視する。
  • ignore-release-spot-pattern: 指定された正規表現にマッチするリリーススポットを無視する。

Code Engineの構成

デプロイに IBM Cloud Code Engine を使用している場合は、 Code Engine プロジェクトを指定し、以下のパイプライン環境プロパティを使用してビルドプロセスを構成します:

  • code-engine-project:Code Engineのプロジェクトを指定します。
  • code-engine-build-use-native-docker: (デフォルト: 'false) 'ibmcloud code-engine buildrun コマンドの代わりにDockerCLIを使用するかどうかを示します。
  • code-engine-disable-buildpacks-strategy: (デフ ォル ト false ) ビルドプロセスが buildpacks 戦略を用いない こ と を示す ( code-engine-project が設定 さ れてい る 場合のみ有効)
  • root-as-build-context: (デフォルト: false ) Dockerfile 関連のビルドツール( dockercode-engine など)のビルドコンテキストは、Dockerfile を含むフォルダではなく、リポジトリのルートを使用すべきであることを示します。

コンテナイメージ構築構成

  • container-image-builder: (デフォルトは docker) Dockerfile 関連のビルドでは、コンテナイメージをビルドするために使用するツール (docker または podman) を指定します。
  • root-as-build-context(デフォルト: false) は、関連するビルドツール(例: docker, podman``Dockerfile または code-engine)のビルドコンテキストとして、Dockerfileを含むフォルダではなくリポジトリのルートを使用すべきであることを示します。

Golang 構成

Golang のスポット抽出プロセスを設定するには、以下のパイプライン環境プロパティを設定します:

  • go-ignore-main: (デフォルト: 'false) メイン・ソース引数のメイン・パッケージおよびメイン関数の検出に焦点を当てないようにコード・スポット抽出を行うかどうかを示します。
  • go-output: go buildコマンドの実行可能出力ファイルを指定する。

Gradleの設定

セットアップ、単体テスト、ビルド成果物、受け入れテストの Gradle タスクを設定するには、次のパイプライン環境プロパティを使用します:

  • gradle-setup-tasks: (デフォルト: 'assemble) セットアップ段階のGradleタスクのカンマ区切りリスト。
  • gradle-unit-testing-tasks: (デフォルト: 'test) ユニットテスト段階のGradleタスクのカンマ区切りリスト。
  • gradle-build-artifact-tasks: (デフォルト: 'build) ビルドアーティファクトステージのGradleタスクのカンマ区切りリスト。
  • gradle-acceptance-testing-tasks: 受け入れテスト段階のGradleタスクのカンマ区切りリスト。

NPMの設定

NPM のユニットテストと受け入れテストのスクリプト検出を設定できます。

  • hint-npm-unit-testing-script: (デフォルト: 'test) NPM ユニットテストスクリプト検出用のヒント。
  • hint-npm-acceptance-testing-script: (デフォルト: 'acceptance-test) NPM 受け入れテストスクリプト検出のためのヒント。

Pythonの設定

Python Poetryバージョンを設定するには、以下のパイプライン環境プロパティを使用します:

  • hint-python-poetry-version: (デフォルト: '1.8.2)PythonPoetry バージョンのヒント。
  • discover-python-unittest-from-ancestor: (デフォルト: false) は、python unittest の探索の開始点として祖先ディレクトリを使用することを示します (例えば、python の unittest ファイルに最も近い requirements.txt (もしあれば) ではなく、リポジトリのルートにある requirements.txt を含むディレクトリからユニットテストを探索するため)。

Terraform 構成

Terraformのデプロイプロセスを設定するには、以下のパイプライン環境プロパティを使用します:

  • terraform-deployment: (デフォルト: 'false) デプロイメント手段としてのSchematicsを無効にし、TerraformとCloud Object Storageを状態保存に使用します。

Helm 構成

Helm リリースプロセスを設定するには、以下のパイプライン環境プロパティを使用します:

  • helm-oci-registry-support: (デフォルトは false) リリースステップでヘルムチャートをOCIレジストリにプッシュできるようにする。
  • configuration-file-pattern-<config_file_type>: 指定された種類の設定ファイルを特定するためのパターンを定義します。 たとえば、 configuration-file-pattern-dev-config=chart/dev-values.yaml を実行すると、 chart/dev-values.yaml にあるファイルが、 dev-config 型のアーティファクトとして選択されます。

アーティファクトのアップロード

アーティファクトのアップロード処理を設定するには、以下のパイプライン環境プロパティを使用します:

  • artifact-upload-to-devsecops-cos: (デフォルト: 'false) イメージ以外の保存されたアーティファクトに対して、DevSecOpsCLI のアーティファクトアップロードを使用してCloud Object Storageバケットへのアーティファクトアップロードを有効にします。

環境設定ファイル

各ソース・コード・リポジトリは、特定のステージのために特定のセットアップやカスタマイズを必要とする。 推論された DevSecOps パイプライン構成機能では、 bash スクリプトとして定義できる環境設定プロパティを指定する方法を提供します。 このスクリプトは、プロセスに対応するアクションを実行する前にソースされる。

スポット抽出中、この推論されたDevSecOps構成機能は、ファイル名に基づくヒントを使用して、環境設定ファイルを決定します。 例えば、 .env.npm-test.sh という名前のファイルが、npmのユニットテストを実行する前に呼び出す環境設定スクリプトとして選択されます。

環境設定ファイルの標準化されたフォーマットは、 .env.<process>.sh.env.<tool>-<process>.sh のような形式です。

<process> の値は、 buildtestacceptance-testdeploydynamic-scan 、または release のいずれかです。

build の処理では、 <tool> の値は code-enginedockerdocker-maven-plugingogradlehelmmavennpmpippipenvpoetryterraform 、または yarn のいずれかになります。

test および acceptance-test プロセスでは、 <tool> の値は gogradlehelmmavennpmpytestpython 、または terratest のいずれかになります。

deploy の処理では、 <tool> の値は code-enginehelmkubectl-liberty-appkubectlschematics 、または terraform のいずれかになります。

dynamic-scan のプロセスでは、 <tool> の値は trigger-async-zap とすることができます。

release プロセスの場合、 <tool> の値は mavenpoetrysemantic-release のいずれかとなる。

以下に例をいくつか挙げます

  • .env.build.sh ファイルは、コードスポットのビルド処理用の環境設定として関連付けられています。 .env.docker-build.sh.env.maven-build.sh などのスコープ付きツール(docker、mavenなど)用の環境設定ファイルで上書きすることができます。
  • .env.test.sh ファイルは、コードスポットにおけるプロセス単位テスト用の環境設定として関連付けられています。 これは、スコープ付きツール(go、npmなど)用の環境設定ファイルで上書きすることができます。 .env.go-test.sh.env.npm-test.sh などです。
  • .env.deploy.sh ファイルは、展開場所でのプロセス用に環境設定として関連付けられています。 .env.code-engine-deploy.sh.env.helm-deploy.sh などのスコープ付きツール(code-engine、helm、kubectlなど)用の環境設定ファイルで上書きすることができます。
  • .env.acceptance-test.sh ファイルは、受入テストスポットでのプロセス用に環境設定として関連付けられています。 .env.maven-acceptance-test.sh.env.python-acceptance-test.sh などのスコープ付きツール(go、maven、npmなど)用の環境設定ファイルで上書きすることができます。
  • .env.dynamic-scan.sh ファイルは、動的スキャン対象のプロセスにおける環境設定として関連付けられています。
  • .env.release.sh ファイルは、リリーススポットでのプロセス用に環境設定として関連付けられています。 .env.maven-acceptance-test.sh.env.semantic-release-acceptance-test.sh などのスコープ付きツール(maven、semantic-releaseなど)用の環境設定ファイルで上書きすることができます。

このスクリプトの使用例については、IBM Cloud の Hello Compliance App リポジトリーを参照してください。

環境コンテキスト・インジェクション

InferredDevSecOpsPipeline Configuration機能は、パイプラインとトリガーのプロパティから環境変数を様々なプロジェクトコンテキストに組み込みます。 プロジェクトの背景は以下の通りである:

  • パイプラインの実行段階
  • Helm デプロイメント
  • Code Engineのデプロイ

この機能により、正規化されたプロパティ名に基づいて、パイプラインやトリガプロパティから環境変数などのコンテキストを注入または設定することができます。

ツールによっては、特定のコンテキストに注入される正規化された名前のプロパティを扱うものもある:

  • docker build 引数および/または docker build シークレット
  • Helmデプロイ用の補完的な'values.yaml ファイル
  • Code Engineのデプロイメントには configmap または 'secret 使用します

正規化されたプロパティ名を使用することで、環境変数やその他のコンテキストをパイプラインやデプロイメントに注入できる。

パイプライン実行段階における環境変数のインジェクション

InferredDevSecOpsPipeline Configuration機能は、ステージ実行中にパイプラインとトリガーのプロパティを環境変数としてエクスポートする'export-properties ユーティリティを提供します。 このユーティリティは、カスタマイズされたすべての段階で呼び出される:

export-properties "GLOBAL" && export-properties "${STAGE^^}"
グローバル環境変数

コマンド'export-properties "GLOBAL" は、'ENV_GLOBAL_<XXX> で正規化された名前を持つパイプラインとトリガのプロパティを、全てのパイプラインステージの実行コンテキストで'XXX ような環境変数としてエクスポートします。

グローバル環境変数の例
グローバル環境変数の例
プロパティー名 不動産鑑定士 環境変数
ENV_GLOBAL_my_var my_value my_var=my_value
ステージ固有の環境変数

コマンド'export-properties "${STAGE^^}" は、現在実行されているステージに関連するパイプラインまたはトリガーのプロパティを、指定された実行ステージの環境変数として、正規化された名前'ENV_<stage in upper case>_<XXX> でエクスポートします。

ステージ固有の環境変数の例
グローバル環境変数の例
プロパティー名 不動産鑑定士 環境変数
ENV_SETUP_CGO_ENABLED true CGO_ENABLED=true

CIパイプラインでは、'code-setup - run-stage ステップには'CGO_ENABLED 環境変数が適切な値に設定されている。

ステージのリストとその説明については、ステージの説明 を参照のこと。

この機能の典型的な使用例は、ユニットテストを実行する前に環境変数を注入し、設定を提供することである。 この場合、プロパティの正規化された名前は「ENV_TEST_<a_var>」となり、「<a_var>」はtest`ステージの実行で利用できるようにエクスポートされた環境変数の名前となる。

ステージ固有の環境変数の例
プロパティー名 不動産鑑定士 環境変数
ENV_TEST_MY_VAR my_value MY_VAR=my_value

この機能を使用して、パイプラインの設定を簡素化し、デプロイメント全体の一貫性を向上させます。

ツールの実行と設定

InferredDevSecOpsPipeline Configuration 機能のいくつかのツールは、補完的なコンフィギュレーションを推論するために、パイプラインとトリガーのプロパティを使用します。

Docker
  • ビルド引数:docker のビルドコマンドは、パイプラインとトリガーのプロパティに基づく--build-argパラメータで、'DOCKER_BUILD_ARG_ ような正規化された名前で完了します。
    • DOCKER_BUILD_ARG_my_arg 名前のプロパティを追加すると、パラメータ '--build-arg="my_arg=" が docker build コマンドに注入される。
  • ビルドの秘密docker のビルドコマンドは、パイプラインとトリガーのプロパティに基づいた--secretパラメータで、'DOCKER_BUILD_SECRET_ ような正規化された名前で完了します。
    • 例えば、DOCKER_BUILD_SECRET_my_secretという名前のプロパティを追加すると、--secretid=my_secret,env=というパラメータがdocker buildコマンドに注入される。

詳しくは docker build argumentsdocker build secret を参照

Helm
  • デプロイ処理:正規化されたパイプラインとトリガーのプロパティに基づいて、追加の値をHelmのデプロイ処理に注入できます。
    • プロパティが'HELM_VALUE_, ような名前を持っている場合、Helm処理ツールによって管理される補完値ファイルは、パイプラインまたはトリガプロパティの値を持つエントリ'a_value_property を追加します。
    • 補完値ファイルは、helmコマンドの最後の「-f | --values パラメータの引数として使用される。

詳しくは、補完的価値観のコンテンツ を参照。

Terraform
Schematics
Code Engine
  • デプロイプロセス:アプリケーションの追加コンフィギュレーションは、アプリケーションに関連するコンフィギュレーションマップやシークレットを定義することで作成できます。
    • CE_ENV_<XXXX> ような正規化された名前を持つパイプラインとトリガープロパティに対して、補完的なコンフィグマップまたはシークレット(Code Engineアプリケーションまたはジョブに関連付けられている)のエントリは、キー'<XXXX> で作成され、その値は対応するパイプラインまたはトリガープロパティの値に基づいて設定されます。

詳しくは、code-engine configmap(s)to configure applications or jobscode-engine secret to configure applications or jobs を参照してください

DevSecOps共通スクリプト・ライブラリ

InferredDevSecOpsパイプラインコンフィギュレーションは、共通ライブラリのスクリプトから特定の段階でスクリプト/関数を使用します。

スクリプト、ツール、使用方法、パラメータなど、共通スクリプト・ライブラリの詳細については、共通スクリプト・ ライブラリを参照してください。

FAQ

ブランチ・プロテクション

デフォルトでブランチプロテクションを有効にする

DevSecOpsPRとCIパイプラインは、デフォルトでソースコードリポジトリのブランチ保護を有効にする。 この検証はコード設定段階で行われる。

ブランチプロテクションを無効にする

分岐保護を無効にするには、「setup-branch-protection プロパティを「false」に設定する。

ブランチ・プロテクション・ステータス・チェックのカスタマイズ

分岐保護状態チェックの接頭辞 をカスタマイズするには、「branch-protection-status-check-prefix プロパティを設定する。 デフォルトのプレフィックスは tekton です。

コミット前のフックの設定と実行

デフォルトでは、推論された DevSecOps 構成を持つPRおよびCIパイプラインは、ソースコードリポジトリにプリコミット構成ファイルが存在する場合、セットアップステージで プリコミットフック を実行します(デフォルトは .pre-commit-config.yaml )。 プリコミット構成ファイルの名前は、pipeline/triggerプロパティ pre-commit-config-file を構成ファイルの名前に設定することで指定できます。

一部のプリコミットフックはスキップされる場合があります(例えば、 detect-secrets のような特定のフックがPRまたはCIパイプラインの特定のステージで実行される場合など)。 スキップするフックを指定するには、pipeline/trigger プロパティ pre-commit-skip-hooks に、スキップするフック ID をカンマ区切りのリストで設定します。

自己署名証明書付きSonarqubeサーバー

sonarqube-configcustom に設定して 既存の sonarqube サーバー を使用し、そのサーバーに自己署名証明書が設定されている場合、ソナー・スキャナーが sonarqube サーバーに正常に接続するには、自己署名証明書 を信頼された CA 証明書に追加する必要があります

パイプライン/トリガープロパティ sonarqube-root-certificate の値として PEM フォーマットで証明書を提供することで、Inferred DevSecOps パイプライン構成の静的スキャン実装は、maven 用 SonarScanner, gradle sonar 用 SonarScanner または Docker で呼び出された SonarScanner の使用に応じて証明書を追加します。

詩と個人リポジトリ

プライベート・リポジトリ用にPoetryを設定する

ポエトリー(pyproject.toml がコードスポットとして識別される)を使用し、依存関係をフェッチするための代替ソースやリポジトリが定義されている場合、次のようになる:

[[tool.poetry.source]]
name = "local"
url = "<artifactory-url>"
secondary = true

あるいは、 ポエトリーが関係する場合(すなわち、 build-backendpoetry.core.masonry.api に等しい build-system セクションを含む pyproject.toml が、特定されたリリーススポットである)、プライベートレジス トリを認証するためにクレデンシャルを提供する必要があるかもしれな い。

IBM Cloudのプライベート・リポジトリで認証する

この'local ソースリポジトリの認証情報を提供する必要がある。 認証情報の設定に関する詩のドキュメント によると、httpユーザーとパスワードを提供する環境変数は'POETRY_HTTP_BASIC_LOCAL_USERNAME と'POETRY_HTTP_BASIC_LOCAL_PASSWORD でなければならない。

環境変数注入 機能を使用し、以下のパイプライン環境プロパティを追加する:

  • ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_USERNAME(テキスト)に適切な値を指定する
  • ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_PASSWORD(セキュア)を適切なセキュア値に変更する

プライベート・リポジトリに公開するための認証

ポエトリーが関係する場合(すなわち、 pyproject.tomlbuild-system セクションを含み、 build-backendpoetry.core.masonry.api と等しい場合)、トークンまたはユーザー名の設定は、( local という名前のリポジトリの場合)のように、パイプラインの環境プロパティを使用して定義できます:

  • ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_USERNAME(テキスト)に適切な値を指定する
  • ENV_GLOBAL_POETRY_HTTP_BASIC_LOCAL_PASSWORD(セキュア)を適切なセキュア値に変更する

または

  • ENV_GLOBAL_POETRY_PYPI_TOKEN_LOCAL (トークンに対応する適切なセキュア値を持つ

Maven、pom.xml、settings.xml、環境解決

IBM Cloudのカスタム設定ファイル用にMavenを構成する

Mavenプロジェクトが'ci-settings.xml などのカスタムファイル名で特定の設定ファイルを定義している場合、PR、CIパイプライン、またはトリガーレベルのプロパティで、'ci_settings.xml に値を設定したパイプライン環境プロパティ maven-user-settings-file-path を定義する。

さらに、解決すべき'env.<VARIABLE> がある場合:

    <server>
      <username>${env.MAVEN_USERNAME}</username>
      <password>${env.MAVEN_PASSWORD}</password>
      <id>central</id>
    </server>

環境変数インジェクション 機能を使って、2つのパイプライン・プロパティ(PRパイプラインとCIパイプライン)を追加することで、これらの変数を提供する:

  • ENV_GLOBAL_MAVEN_USERNAME(テキスト)には、mavenユーザー名に使用する値を指定します
  • ENV_GLOBAL_MAVEN_PASSWORD(セキュリティで保護された)mavenパスワードに使用する値を指定します

Goビルドのスタティックリンクの強制

Goビルドのスタティックリンクを有効にする

デフォルトでは、'go build は動的にリンクされたバイナリを生成する。 Dockerコンテナで使用するには、ビルド時に「CGO_ENABLED=0 設定して静的リンクを有効にする。

Goビルドのための環境変数の設定

静的リンクを有効にするには、環境変数インジェクション 機能を使って、CIパイプラインに以下のパイプライン環境プロパティを追加する:

  • ENV_SETUP_CGO_ENABLED 値を'0 に設定する。

サポートの利用

IBM Cloud IBM の を搭載した のAIアシスタントは、 での作業や、利用可能なカタログのサービスを使ったソリューションの構築について学ぶのに役立つように設計されています。 watsonx IBM Cloud AIアシスタントのヘルプを参照してください

それでも問題を解決できない場合は、サポート Case をオープンできます。 詳しくは、サポート Case の作成を参照してください。 また、フィードバックを提供したい場合は 、「フィードバックの送信」 をご覧ください。