
safe-chain v1.5.15
Aikido Safe Chain を使用して、npm、yarn、pnpm、npx、pnpx、pip、uv、poetry を介してインストールされた悪意のあるコードから保護します。無料で使用でき、トークンは不要です。
Aikido Safe Chain
- ✅ 開発者のラップトップとCI/CDでマルウェアをブロック
- ✅ npmとPyPIをサポート 他のパッケージマネージャーも近日対応予定
- ✅ ビルドを壊さずに48時間以内に公開されたパッケージをブロック
- ✅ トークン不要、無料、ビルドデータの共有なし
npmとPyPI以外の保護が必要ですか?
Aikido Device Protection はSafe Chainを基盤に、パッケージおよび拡張機能のセキュリティをより多くのエコシステムへ拡張します: npm、PyPI、VS Code、Open VSX - (Cursor、Windsurf、Kiro、Vs Codium、...)、Maven、NuGet、Chrome拡張機能、Go、Skills.sh AIスキル、Ruby、Rustなど。
一元管理されたポリシー管理、承認申請ワークフロー、組織内のすべての開発者ワークステーションにわたる可視性を実現します。同じAikido Intelフィードを搭載。手動で展開するか、MDMツール(Jamf、Fleet、Iru)で管理できます。
Aikido Safe Chainは以下のパッケージマネージャーをサポートしています:
- 📦 npm
- 📦 npx
- 📦 yarn
- 📦 pnpm
- 📦 pnpx
- 📦 rush
- 📦 rushx
- 📦 bun
- 📦 bunx
- 📦 pip
- 📦 pip3
- 📦 uv
- 📦 poetry
- 📦 uvx
- 📦 pipx
- 📦 pdm
使用方法

インストール
Aikido Safe Chainはインストールスクリプトで簡単にインストールできます。
Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.sh -o /tmp/install-safe-chain.sh
&& echo "7a7b6e54c2e0adbcb53bc1bf7d258cc974f8f31e77ed048b88e4d2e4ac758839 /tmp/install-safe-chain.sh" | sha256sum -c -
&& sh /tmp/install-safe-chain.sh
&& rm /tmp/install-safe-chain.sh
### Windows (PowerShell)```powershell
$installer = Join-Path $env:TEMP "install-safe-chain.ps1"
Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing
$expectedHash = "6F46B5CFA42DDF9545616E169A567E764CE179E6321E6555D2C3A81768E2635D"
if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) {
Remove-Item $installer -ErrorAction SilentlyContinue
throw "Checksum verification failed for install-safe-chain.ps1"
}
& $installer
Remove-Item $installer
上記のインストールコマンドは常に特定のリリースを参照しています。別のバージョンをインストールするには、バージョンを希望のバージョン番号に置き換えてください。利用可能なすべてのバージョンはリリースページにあります。
ダウンロードの整合性
インストールスクリプトはバージョン付きのリリースURL(releases/download/1.5.16/...)から提供されます。GitHubリリースは不変です。アーティファクトがバージョン付きURLで公開されると、それを変更したり置き換えたりすることはできないため、ダウンロードするファイルは公開されたものと正確に一致することが保証されます。
インストールの確認
-
❗ターミナルを再起動して、Aikido Safe Chainの使用を開始します。
- この手順は、npm、npx、yarn、pnpm、pnpx、rush、rushx、bun、bunx、pip、pip3、poetry、uv、uvx、pipx、pdmのシェルエイリアスが正しく読み込まれるために重要です。ターミナルを再起動しない場合、エイリアスは利用できません。
-
インストールを確認するには、以下の確認コマンドを実行します。 ```shell npm safe-chain-verify pnpm safe-chain-verify pip safe-chain-verify uv safe-chain-verify
Any other supported package manager: {packagemanager} safe-chain-verify
- 出力に「OK: Safe-chain works!」と表示され、Aikido Safe Chainが正しくインストールされ、実行されていることを確認します。
-
(任意) マルウェアブロッキングのテスト テストパッケージをインストールして確認します:
JavaScript/Node.jsの場合: ```shell npm install safe-chain-test
For Python: ```shell pip3 install safe-chain-pi-test
- 出力は、Aikido Safe Chain がこれらのテストパッケージをマルウェアとしてフラグ付けし、インストールをブロックしていることを示す必要があります。
`npm`、`npx`、`yarn`、`pnpm`、`pnpx`、`rush`、`rushx`、`bun`、`bunx`、`pip`、`pip3`、`uv`、`uvx`、`poetry`、`pipx`、`pdm` コマンドを実行すると、Aikido Safe Chain はインストールしようとしているパッケージにマルウェアがないか自動的にチェックします。また、利用可能な場合は pip の Python モジュール呼び出しもインターセプトします(例: `python -m pip install ...`、`python3 -m pip download ...`)。マルウェアが検出された場合、コマンドを終了するようプロンプトが表示されます。
インストールされているバージョンを確認するには、以下を実行します:```shell
safe-chain --version
仕組み
マルウェアブロッキング
Aikido Safe Chainは、npmレジストリとPyPIからのパッケージダウンロードをインターセプトする軽量プロキシサーバーを実行することで動作します。npm、npx、yarn、pnpm、pnpx、rush、rushx、bun、bunx、pip、pip3、uv、uvx、poetry、pipx、pdmコマンドを実行すると、すべてのパッケージダウンロードがこのローカルプロキシを経由し、Aikido Intel - Open Sources Threat Intelligence に対してパッケージをリアルタイムで検証します。いずれかのパッケージ(深い依存関係を含む)でマルウェアが検出された場合、プロキシは悪意のあるコードがマシンに到達する前にダウンロードをブロックします。
最小パッケージ年齢
Safe Chainは、サポートされているエコシステムに対して最小パッケージ年齢チェックを適用します。
現在の適用方法はエコシステムによって異なります:
- npmベースのパッケージマネージャー:
- 通常のパッケージ解決中、Safe Chainはレジストリから返されるパッケージメタデータから、設定された最小年齢より新しいバージョンを抑制します
- そのメタデータフローを迂回する直接パッケージダウンロードリクエストの場合、Safe Chainは新しくリリースされたパッケージのキャッシュリストを使用して、リクエスト自体をブロックできます
- Pythonパッケージマネージャー:
- パッケージ解決中、Safe ChainはPyPIメタデータレスポンスから若すぎるファイルとリリースを抑制します
- そのメタデータフローを迂回する直接パッケージダウンロードリクエストの場合、Safe Chainは新しくリリースされたパッケージのキャッシュリストを使用して、リクエスト自体をブロックできます
デフォルトでは、最小パッケージ年齢は48時間です。これは、新しく公開されたパッケージが未検出の脅威を含む可能性が最も高い重要な期間に、追加のセキュリティレイヤーを提供します。このしきい値を設定したり、この保護を完全にバイパスしたりできます。詳細は以下の最小パッケージ年齢設定セクションを参照してください。
シェル統合
Aikido Safe Chainはシェルと統合し、npm、npx、yarn、pnpm、pnpx、rush、rushx、bun、bunx、およびPythonパッケージマネージャー(pip、uv、uvx、poetry、pipx、pdm)を使用する際にシームレスなエクスペリエンスを提供します。これらのコマンドにエイリアスを設定し、元のコマンドを実行する前にプロキシサーバーを管理するAikido Safe Chainコマンドでラップします。現在サポートしているのは以下のとおりです:
- ✅ Bash
- ✅ Zsh
- ✅ Fish
- ✅ PowerShell
- ✅ PowerShell Core
シェル統合の詳細については、シェル統合ドキュメントを参照してください。
アンインストール
Aikido Safe Chainをアンインストールするには、ワンライナーアンインストーラーを使用します:
Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/uninstall-safe-chain.sh | sh
### Windows (PowerShell)```powershell
iex (iwr "https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/uninstall-safe-chain.ps1" -UseBasicParsing)
❗アンインストール後はターミナルを再起動して、すべてのエイリアスが削除されていることを確認してください。
設定
ロギング
--safe-chain-logging フラグまたは SAFE_CHAIN_LOGGING 環境変数を使用して、Aikido Safe Chain からの出力を制御できます。
設定オプション
ロギングレベルは、複数のソースから設定できます(優先順位順):
-
CLI 引数(最優先):
-
--safe-chain-logging=silent- マルウェアがブロックされた場合を除き、Aikido Safe Chain のすべての出力を抑制します。パッケージマネージャーの出力は通常どおり stdout に書き込まれ、Safe Chain はマルウェアをブロックしてプロセスを終了させた場合にのみ短いメッセージを書き込みます。npm install express --safe-chain-logging=silent -
--safe-chain-logging=verbose- Aikido Safe Chain からの詳細な診断出力を有効にします。問題のトラブルシューティングや、Safe Chain がバックグラウンドで何をしているかを理解するのに役立ちます。npm install express --safe-chain-logging=verbose
-
-
環境変数: ```shell export SAFE_CHAIN_LOGGING=verbose npm install express
有効な値: silent、normal、verbose
これは、ターミナルセッションやCI/CD環境内のすべてのパッケージマネージャーコマンドに対して、デフォルトのログレベルを設定するのに便利です。
ファイルログ
--safe-chain-log-file フラグまたは SAFE_CHAIN_LOG_FILE 環境変数を使用して、Aikido Safe Chainの出力をログファイルにミラーリングできます。ファイルログはデフォルトでは無効で、パスが設定されると有効になります。ファイル形式(--safe-chain-log-file-format)と詳細度(--safe-chain-log-file-verbosity)は、ターミナル出力とは独立して制御されます。
設定オプション
次のいずれかで設定します(優先順位の高い順):
- CLI引数(最優先): ```shell
npm install express
--safe-chain-log-file=~/safe-chain.log
--safe-chain-log-file-format=plain
--safe-chain-log-file-verbosity=normal - 環境変数: ```shell
export SAFE_CHAIN_LOG_FILE=~/safe-chain.log
export SAFE_CHAIN_LOG_FILE_FORMAT=plain
export SAFE_CHAIN_LOG_FILE_VERBOSITY=normal
- 設定ファイル (
~/.safe-chain/config.json): ```json { "logFile": "~/safe-chain.log", "logFileFormat": "plain", "logFileVerbosity": "normal" }
logFileFormat — json(デフォルト)または plain。
logFileVerbosity — silent、normal、または verbose(デフォルト)。--safe-chain-logging とは独立しています。
最小パッケージ年齢
Safe Chain がパッケージのインストールを許可する前に、パッケージがどのくらいの期間存在している必要があるかを設定できます。デフォルトでは、パッケージはインストール可能になる前に少なくとも 48 時間経過している必要があります。
npm ベースのパッケージマネージャーの場合、このチェックには現在 2 つの強制モードがあります:
- Safe Chain は、通常の依存関係解決中に、パッケージメタデータから新しすぎるバージョンを抑制します。
- Safe Chain は、キャッシュされた新しくリリースされたパッケージのリストと照合された場合、直接のパッケージダウンロードリクエストをブロックします。
Python パッケージマネージャーの場合、このチェックには現在 2 つの強制モードがあります:
- Safe Chain は、依存関係解決中に、PyPI メタデータから新しすぎるファイルとリリースを抑制します。
- Safe Chain は、キャッシュされた新しくリリースされたパッケージのリストと照合された場合、直接のパッケージダウンロードリクエストをブロックします。
設定オプション
最小パッケージ年齢は、複数のソースから設定できます(優先順位順):
- CLI 引数(最優先): ```shell
npm install express --safe-chain-minimum-package-age-hours=48
- 環境変数: ```shell
export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_HOURS=48
npm install express
- 設定ファイル (
~/.safe-chain/config.json): ```json { "minimumPackageAgeHours": 48 }
パッケージの除外
信頼済みパッケージを最低年齢フィルタリングから除外するには、環境変数または設定ファイルを使用します(両方はマージされます)。組織のすべてのパッケージを信頼するには、@scope/* を使用します:```shell
export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS="@aikidosec/*"
The `-h` flag displays the help menu, which includes all available options and their descriptions. This is useful for quickly understanding the tool's capabilities without needing to consult external documentation.```json
{
"npm": {
"minimumPackageAgeExclusions": ["@aikidosec/*"]
},
"pip": {
"minimumPackageAgeExclusions": ["requests"]
}
}
カスタムレジストリ
Safe Chain がカスタムまたはプライベートレジストリからパッケージをスキャンするように設定します。
対応エコシステム:
- Node.js
- Python
設定オプション
環境変数または設定ファイルを通じてカスタムレジストリを設定できます。両方のソースはマージされます。
- 環境変数(カンマ区切り): ```shell
export SAFE_CHAIN_NPM_CUSTOM_REGISTRIES="npm.company.com,registry.internal.net"
export SAFE_CHAIN_PIP_CUSTOM_REGISTRIES="pip.company.com,registry.internal.net"
- 設定ファイル (
~/.safe-chain/config.json): ```json { "npm": { "customRegistries": ["npm.company.com", "registry.internal.net"] }, "pip": { "customRegistries": ["pip.company.com", "registry.internal.net"] } }
PYPI設定ファイル
pip設定にpip.confファイルを使用している場合は、Safe Chainが設定をマージできるように、PIP_CONFIG_FILE環境変数でpipに明示的にそのファイルを指定する必要があります。
Safe ChainはMITMプロキシの背後でpipを実行し、証明書とプロキシ設定を注入するための一時的なpip設定ファイルを作成します。PIP_CONFIG_FILEが設定されている場合、Safe Chainはその設定をファイルのコピーにマージします(元のファイルは決して変更されません)。これにより、index-url、認証情報、その他のオプションが保持されます。PIP_CONFIG_FILEが設定されていない場合、pipのユーザーレベルの設定(例:~/.config/pip/pip.conf)がSafe Chainの一時ファイルによって上書きされ、設定が反映されない可能性があります。
マルウェアリストのベースURL
カスタムミラーURLからマルウェアデータベースと新しいパッケージリストを取得するようにSafe Chainを設定します。これにより、Aikidoマルウェアデータベースの独自コピーをホストできます。
設定オプション
マルウェアリストのベースURLは、複数のソースから設定できます(優先順位順):
- CLI引数(最優先): ```shell
npm install express --safe-chain-malware-list-base-url=https://your-mirror.com
- 環境変数: ```shell
export SAFE_CHAIN_MALWARE_LIST_BASE_URL=https://your-mirror.com
npm install express
- 設定ファイル (
~/.safe-chain/config.json): ```json { "malwareListBaseUrl": "https://your-mirror.com" }
ベースURLは、https://malware-list.aikido.dev/の構造をミラーリングしたサーバーを指す必要があります。これには以下のパスが含まれます:
/malware_predictions.json(JavaScriptエコシステムのマルウェアデータベース)/malware_pypi.json(Pythonエコシステムのマルウェアデータベース)/releases/npm.json(JavaScriptの新規パッケージリスト)/releases/pypi.json(Pythonの新規パッケージリスト)
プロジェクト設定ファイル
ホームディレクトリの設定ファイル(~/.safe-chain/config.json)に加えて、Safe Chainはプロジェクト設定ファイルをサポートしています。これにより、設定をリポジトリにチェックインしてチーム全体で共有でき、マシンごとに設定する必要がなくなります。
リポジトリのルートにある.aikidoファイル(他のAikidoツールが使用する同じファイル。Safe Chainは自身のsafe-chain:セクションのみを読み取り、残りは無視します)にsafe-chain:セクションを追加してください。見つかった場合、その設定はホームディレクトリの設定ファイルの上にマージされます。プロジェクト設定で設定された値が優先され、配列(customRegistriesなど)は一方が他方を置き換えるのではなく、両方のファイルから結合されます。
プロジェクト設定ファイルから設定できるのは、以下の設定のみです。```yaml safe-chain: minimumPackageAgeHours: 48 npm: customRegistries: - npm.company.com minimumPackageAgeExclusions: - "@aikidosec/*" pip: customRegistries: - pip.company.com minimumPackageAgeExclusions: - requests
`scanTimeout`、`malwareListBaseUrl`、および`logFile*`オプションなどの設定は、プロジェクト設定ファイルから設定できません。これらは、ホームディレクトリの設定、CLI引数、または環境変数からのみ指定できます。
## カスタムインストールディレクトリ
デフォルトでは、Safe Chainは`~/.safe-chain`にインストールされます。インストーラーに明示的なインストールディレクトリを渡すことで、これを変更できます。これは、システム全体へのインストール(例:Dockerイメージ内)や、他のツールとの競合を避ける必要がある場合に便利です。
設定すると、Safe Chainのすべてのデータ(バイナリ、シム、スクリプト、設定)は、`~/.safe-chain`の代わりにカスタムディレクトリの下に配置されます。
### Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
&& echo "7a7b6e54c2e0adbcb53bc1bf7d258cc974f8f31e77ed048b88e4d2e4ac758839 /tmp/install-safe-chain.sh" | sha256sum -c - \
&& sh /tmp/install-safe-chain.sh --install-dir /usr/local/.safe-chain \
&& rm /tmp/install-safe-chain.sh
Windows```powershell
$installer = Join-Path $env:TEMP "install-safe-chain.ps1" Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "6F46B5CFA42DDF9545616E169A567E764CE179E6321E6555D2C3A81768E2635D" if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) { Remove-Item $installer -ErrorAction SilentlyContinue throw "Checksum verification failed for install-safe-chain.ps1" } & $installer -InstallDir 'C:\ProgramData\safe-chain' Remove-Item $installer
# CI/CDでの使用方法
Aikido Safe Chainをビルドプロセスに統合することで、CI/CDパイプラインを悪意のあるパッケージから保護できます。これにより、自動ビルド中にインストールされるすべてのパッケージが、インストール前にマルウェアチェックされることが保証されます。
## CI/CD用のインストール
`--ci`フラグを使用すると、CI/CD環境向けにAikido Safe Chainが自動的に設定されます。これにより、シェルエイリアスではなく、PATH内に実行可能なシムが設定されます。
### Unix/Linux/macOS(GitHub Actions、Azure Pipelinesなど)```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
&& echo "7a7b6e54c2e0adbcb53bc1bf7d258cc974f8f31e77ed048b88e4d2e4ac758839 /tmp/install-safe-chain.sh" | sha256sum -c - \
&& sh /tmp/install-safe-chain.sh --ci \
&& rm /tmp/install-safe-chain.sh
Windows (Azure Pipelines など)```powershell
$installer = Join-Path $env:TEMP "install-safe-chain.ps1" Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "6F46B5CFA42DDF9545616E169A567E764CE179E6321E6555D2C3A81768E2635D" if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) { Remove-Item $installer -ErrorAction SilentlyContinue throw "Checksum verification failed for install-safe-chain.ps1" } & $installer -ci Remove-Item $installer
## 対応プラットフォーム
- ✅ **GitHub Actions**
- ✅ **Azure Pipelines**
- ✅ **CircleCI**
- ✅ **Jenkins**
- ✅ **Bitbucket Pipelines**
- ✅ **GitLab Pipelines**
## GitHub Actionsの例```yaml
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
cache: "npm"
- name: Install safe-chain
run: |
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.sh -o /tmp/install-safe-chain.sh
echo "7a7b6e54c2e0adbcb53bc1bf7d258cc974f8f31e77ed048b88e4d2e4ac758839 /tmp/install-safe-chain.sh" | sha256sum -c -
sh /tmp/install-safe-chain.sh --ci
rm /tmp/install-safe-chain.sh
- name: Install dependencies
run: npm ci
Azure DevOps の例```yaml
-
task: NodeTool@0 inputs: versionSpec: "22.x" displayName: "Install Node.js"
-
script: | curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.sh -o /tmp/install-safe-chain.sh echo "7a7b6e54c2e0adbcb53bc1bf7d258cc974f8f31e77ed048b88e4d2e4ac758839 /tmp/install-safe-chain.sh" | sha256sum -c - sh /tmp/install-safe-chain.sh --ci rm /tmp/install-safe-chain.sh displayName: "Install safe-chain"
-
script: npm ci displayName: "Install dependencies"
## CircleCI の例```yaml
version: 2.1
jobs:
build:
docker:
- image: cimg/node:lts
steps:
- checkout
- run: |
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.sh -o /tmp/install-safe-chain.sh
echo "7a7b6e54c2e0adbcb53bc1bf7d258cc974f8f31e77ed048b88e4d2e4ac758839 /tmp/install-safe-chain.sh" | sha256sum -c -
sh /tmp/install-safe-chain.sh --ci
rm /tmp/install-safe-chain.sh
- run: npm ci
workflows:
build_and_test:
jobs:
- build
Jenkins の例
注: Jenkins エージェントに Node.js と npm がインストールされていることを前提としています。```groovy pipeline { agent any
environment { // Jenkins does not automatically persist PATH updates from setup-ci, // so add the shims + binary directory explicitly for all stages. // If you installed into a custom directory, replace ~/.safe-chain with that path here. PATH = "${env.HOME}/.safe-chain/shims:${env.HOME}/.safe-chain/bin:${env.PATH}" }
stages { stage('Install safe-chain') { steps { sh ''' set -euo pipefail
# Install Safe Chain for CI
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.sh -o /tmp/install-safe-chain.sh
echo "7a7b6e54c2e0adbcb53bc1bf7d258cc974f8f31e77ed048b88e4d2e4ac758839 /tmp/install-safe-chain.sh" | sha256sum -c -
sh /tmp/install-safe-chain.sh --ci
rm /tmp/install-safe-chain.sh
'''
}
}
stage('Install project dependencies etc...') {
steps {
sh '''
set -euo pipefail
npm ci
'''
}
}
} }
## Bitbucket Pipelinesの例```yaml
image: node:22
steps:
- step:
name: Install
script:
- |
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.sh -o /tmp/install-safe-chain.sh
echo "7a7b6e54c2e0adbcb53bc1bf7d258cc974f8f31e77ed048b88e4d2e4ac758839 /tmp/install-safe-chain.sh" | sha256sum -c -
sh /tmp/install-safe-chain.sh --ci
rm /tmp/install-safe-chain.sh
- export PATH=~/.safe-chain/shims:~/.safe-chain/bin:$PATH
- npm ci
セットアップ後、CIパイプライン内の後続のすべてのパッケージマネージャーコマンドは、Aikido Safe Chainのマルウェア検出によって自動的に保護されます。
GitLabパイプラインの例
GitLabパイプラインにsafe-chainを追加するには、パイプラインを実行するイメージにインストールする必要があります。これは以下の方法で行えます:
-
ビルドを実行するためのdockerfileを定義する ```dockerfile FROM node:lts
Install safe-chain
RUN curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.16/install-safe-chain.sh -o /tmp/install-safe-chain.sh
&& echo "7a7b6e54c2e0adbcb53bc1bf7d258cc974f8f31e77ed048b88e4d2e4ac758839 /tmp/install-safe-chain.sh" | sha256sum -c -
&& sh /tmp/install-safe-chain.sh --ci
&& rm /tmp/install-safe-chain.shAdd safe-chain to PATH (update paths if you used a custom install dir)
ENV PATH="/root/.safe-chain/shims:/root/.safe-chain/bin:${PATH}"
-
CIパイプラインでDockerイメージをビルドする ```yaml build-image: stage: build-image image: docker:latest services: - docker:dind script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:latest . - docker push $CI_REGISTRY_IMAGE:latest
-
パイプラインでイメージを使用します: ```yaml npm-ci: stage: install image: $CI_REGISTRY_IMAGE:latest script: - npm ci
完全なパイプラインの例は次のようになります:```yaml stages:
- build-image
- install
build-image: stage: build-image image: docker:latest services: - docker:dind script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:latest . - docker push $CI_REGISTRY_IMAGE:latest
npm-ci: stage: install image: $CI_REGISTRY_IMAGE:latest script: - npm ci
# トラブルシューティング
問題が発生しましたか?一般的な問題の解決策については、[トラブルシューティングガイド](https://github.com/aikidosec/safe-chain/blob/main/docs/troubleshooting.md)を参照してください。
# 問題の報告
問題が発生した場合:
1. [GitHub Issues](https://github.com/AikidoSec/safe-chain/issues)にアクセスしてください
2. 以下を含めてください:
* オペレーティングシステムとバージョン
* シェルの種類とバージョン
* `safe-chain --version`の出力
* 検証コマンドの出力
* 失敗したコマンドの詳細ログ(`--safe-chain-logging=verbose`引数を追加)