
safe-chain v1.5.16
Proteggiti dal codice malevolo installato tramite npm, yarn, pnpm, npx, pnpx, pip, uv e poetry con Aikido Safe Chain. Gratuito, nessun token richiesto.
Aikido Safe Chain
- ✅ Blocca malware sui laptop degli sviluppatori e nelle pipeline CI/CD
- ✅ Supporta npm e PyPI, altri package manager in arrivo
- ✅ Blocca i pacchetti più recenti di 48 ore senza rompere la tua build
- ✅ Senza token, gratuito, nessun dato di build condiviso
Hai bisogno di protezione oltre npm e PyPI?
Aikido Device Protection si basa su Safe Chain, estendendo la sicurezza di pacchetti ed estensioni a più ecosistemi: npm, PyPI, VS Code, Open VSX - (Cursor, Windsurf, Kiro, Vs Codium, ...), Maven, NuGet, estensioni Chrome, Go, Skills.sh AI skills, Ruby, Rust e altri.
Ottieni una gestione centralizzata delle policy, flussi di lavoro di richiesta e approvazione, e visibilità su ogni workstation degli sviluppatori nella tua organizzazione. Basato sullo stesso feed Aikido Intel. Distribuiscilo manualmente o gestiscilo tramite il tuo strumento MDM (Jamf, Fleet o Iru).
Aikido Safe Chain supporta i seguenti package manager:
- 📦 npm
- 📦 npx
- 📦 yarn
- 📦 pnpm
- 📦 pnpx
- 📦 rush
- 📦 rushx
- 📦 bun
- 📦 bunx
- 📦 pip
- 📦 pip3
- 📦 uv
- 📦 poetry
- 📦 uvx
- 📦 pipx
- 📦 pdm
Utilizzo

Installazione
Installare Aikido Safe Chain è semplice con lo script di installazione.
Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh
&& echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /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.20/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing
$expectedHash = "468C342C5AABB71200B0BD19950984EDD5C4B39811B653B13A5AD15E0FBA4DFA"
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
I comandi di installazione sopra fanno sempre riferimento a una release specifica. Per installare una versione diversa, sostituisci la versione con il numero di versione desiderato. Tutte le versioni disponibili sono nella pagina delle release.
Integrità del download
Gli script di installazione vengono serviti da un URL di release versionato (releases/download/1.5.20/...). Le release di GitHub sono immutabili — una volta che un artefatto è pubblicato a un URL versionato non può essere modificato o sostituito, quindi il file che scarichi è garantito essere esattamente quello che è stato rilasciato.
Verifica l'installazione
-
❗Riavvia il tuo terminale per iniziare a usare Aikido Safe Chain.
- Questo passaggio è cruciale poiché garantisce che gli alias della shell per npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, pip, pip3, poetry, uv, uvx, pipx e pdm vengano caricati correttamente. Se non riavvii il terminale, gli alias non saranno disponibili.
-
Verifica l'installazione eseguendo il comando di verifica: ```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
- L'output dovrebbe mostrare "OK: Safe-chain works!" confermando che Aikido Safe Chain è installato e funzionante correttamente.
-
(Opzionale) Testare il blocco del malware tentando di installare un pacchetto di test:
Per JavaScript/Node.js: ```shell npm install safe-chain-test
Per Python: ```shell pip3 install safe-chain-pi-test
- L'output dovrebbe mostrare che Aikido Safe Chain sta bloccando l'installazione di questi pacchetti di test poiché sono contrassegnati come malware.
Quando si eseguono i comandi `npm`, `npx`, `yarn`, `pnpm`, `pnpx`, `rush`, `rushx`, `bun`, `bunx`, `pip`, `pip3`, `uv`, `uvx`, `poetry`, `pipx` e `pdm`, Aikido Safe Chain controllerà automaticamente la presenza di malware nei pacchetti che stai tentando di installare. Intercetta anche le invocazioni dei moduli Python per pip quando disponibile (ad esempio, `python -m pip install ...`, `python3 -m pip download ...`). Se viene rilevato malware, ti verrà chiesto di uscire dal comando.
Puoi verificare la versione installata eseguendo:```shell
safe-chain --version
Come funziona
Blocco dei malware
Aikido Safe Chain funziona eseguendo un server proxy leggero che intercetta i download dei pacchetti dal registry npm e da PyPI. Quando esegui i comandi npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, pip, pip3, uv, uvx, poetry, pipx o pdm, tutti i download dei pacchetti vengono instradati attraverso questo proxy locale, che verifica i pacchetti in tempo reale rispetto a Aikido Intel - Open Sources Threat Intelligence. Se viene rilevato malware in qualsiasi pacchetto (incluse le dipendenze profonde), il proxy blocca il download prima che il codice malevolo raggiunga la tua macchina.
Età minima del pacchetto
Safe Chain applica controlli sull'età minima dei pacchetti agli ecosistemi supportati.
L'applicazione attuale varia a seconda dell'ecosistema:
- package manager basati su npm:
- durante la normale risoluzione dei pacchetti, Safe Chain sopprime le versioni più recenti dell'età minima configurata dai metadati del pacchetto restituiti dal registry
- per le richieste dirette di download di pacchetti che bypassano quel flusso di metadati, Safe Chain può bloccare la richiesta stessa utilizzando una lista in cache dei pacchetti appena rilasciati
- package manager Python:
- durante la risoluzione dei pacchetti, Safe Chain sopprime file e release troppo recenti dalle risposte dei metadati di PyPI
- per le richieste dirette di download di pacchetti che bypassano quel flusso di metadati, Safe Chain può bloccare la richiesta stessa utilizzando una lista in cache dei pacchetti appena rilasciati
Per impostazione predefinita, l'età minima del pacchetto è di 48 ore. Questo fornisce un ulteriore livello di sicurezza durante il periodo critico in cui i pacchetti appena pubblicati sono più vulnerabili a contenere minacce non rilevate. Puoi configurare questa soglia o bypassare completamente questa protezione - vedi la sezione Minimum Package Age Configuration di seguito.
Integrazione con la shell
Aikido Safe Chain si integra con la tua shell per offrire un'esperienza fluida quando usi npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx e i package manager Python (pip, uv, uvx, poetry, pipx, pdm). Configura degli alias per questi comandi in modo che siano wrappati dai comandi di Aikido Safe Chain, che gestiscono il server proxy prima di eseguire i comandi originali. Attualmente supportiamo:
- ✅ Bash
- ✅ Zsh
- ✅ Fish
- ✅ PowerShell
- ✅ PowerShell Core
Maggiori informazioni sull'integrazione con la shell sono disponibili nella documentazione sull'integrazione con la shell.
Disinstallazione
Per disinstallare Aikido Safe Chain, usa il nostro disinstallatore one-line:
Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/uninstall-safe-chain.sh | sh
### Windows (PowerShell)```powershell
iex (iwr "https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/uninstall-safe-chain.ps1" -UseBasicParsing)
❗Riavvia il terminale dopo la disinstallazione per assicurarti che tutti gli alias siano stati rimossi.
Configurazione
Logging
Puoi controllare l'output di Aikido Safe Chain usando il flag --safe-chain-logging o la variabile d'ambiente SAFE_CHAIN_LOGGING.
Opzioni di configurazione
Puoi impostare il livello di logging attraverso più fonti (in ordine di priorità):
-
Argomento CLI (priorità più alta):
-
--safe-chain-logging=silent- Sopprime tutto l'output di Aikido Safe Chain tranne quando viene bloccato del malware. L'output del gestore di pacchetti viene scritto su stdout come di consueto, e Safe Chain scrive solo un breve messaggio se ha bloccato del malware e causa la chiusura del processo.npm install express --safe-chain-logging=silent -
--safe-chain-logging=verbose- Abilita un output diagnostico dettagliato da Aikido Safe Chain. Utile per risolvere problemi o capire cosa sta facendo Safe Chain dietro le quinte.npm install express --safe-chain-logging=verbose
-
-
Variabile d'ambiente: ```shell export SAFE_CHAIN_LOGGING=verbose npm install express
Valori validi: silent, normal, verbose
Questo è utile per impostare un livello di logging predefinito per tutti i comandi del gestore di pacchetti nella sessione del terminale o nell'ambiente CI/CD.
Logging su file
Puoi rispecchiare l'output di Aikido Safe Chain su un file di log usando il flag --safe-chain-log-file o la variabile d'ambiente SAFE_CHAIN_LOG_FILE. Il logging su file è disabilitato per impostazione predefinita e viene abilitato quando viene impostato un percorso. Il formato del file (--safe-chain-log-file-format) e la verbosità (--safe-chain-log-file-verbosity) sono controllati indipendentemente dall'output del terminale.
Opzioni di configurazione
Imposta tramite uno qualsiasi di questi (in ordine di priorità):
- Argomento CLI (priorità più alta): ```shell
npm install express
--safe-chain-log-file=~/safe-chain.log
--safe-chain-log-file-format=plain
--safe-chain-log-file-verbosity=normal - Variabile d'ambiente: ```shell
export SAFE_CHAIN_LOG_FILE=~/safe-chain.log
export SAFE_CHAIN_LOG_FILE_FORMAT=plain
export SAFE_CHAIN_LOG_FILE_VERBOSITY=normal
- File di configurazione (
~/.safe-chain/config.json): ```json { "logFile": "~/safe-chain.log", "logFileFormat": "plain", "logFileVerbosity": "normal" }
logFileFormat — json (predefinito) o plain.
logFileVerbosity — silent, normal o verbose (predefinito). Indipendente da --safe-chain-logging.
Età minima del pacchetto
Puoi configurare per quanto tempo i pacchetti devono esistere prima che Safe Chain ne consenta l'installazione. Per impostazione predefinita, i pacchetti devono avere almeno 48 ore prima di poter essere installati.
Per i gestori di pacchetti basati su npm, questo controllo attualmente ha due modalità di applicazione:
- Safe Chain sopprime le versioni troppo recenti dai metadati del pacchetto durante la normale risoluzione delle dipendenze.
- Safe Chain blocca le richieste dirette di download dei pacchetti quando corrispondono alla lista in cache dei pacchetti appena rilasciati.
Per i gestori di pacchetti Python, questo controllo attualmente ha due modalità di applicazione:
- Safe Chain sopprime i file e le release troppo recenti dai metadati di PyPI durante la risoluzione delle dipendenze.
- Safe Chain blocca le richieste dirette di download dei pacchetti quando corrispondono alla lista in cache dei pacchetti appena rilasciati.
Opzioni di configurazione
Puoi impostare l'età minima del pacchetto tramite più fonti (in ordine di priorità):
- Argomento CLI (priorità più alta): ```shell
npm install express --safe-chain-minimum-package-age-hours=48
- Variabile d'ambiente: ```shell
export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_HOURS=48
npm install express
- File di configurazione (
~/.safe-chain/config.json): ```json { "minimumPackageAgeHours": 48 }
Escludere pacchetti
Escludi i pacchetti attendibili dal filtro dell'età minima tramite variabile d'ambiente o file di configurazione (entrambi vengono uniti). Usa @scope/* per considerare attendibili tutti i pacchetti di un'organizzazione:```shell
export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS="@aikidosec/*"
I cannot translate this content. The input you've provided contains only the instructions and metadata about the translation task — there is no actual source text (the README chunk 33/73) included after the "INPUT:" marker.
Please paste the actual Markdown content you want translated, and I'll return the Italian translation following all the rules you've specified.```json
{
"npm": {
"minimumPackageAgeExclusions": ["@aikidosec/*"]
},
"pip": {
"minimumPackageAgeExclusions": ["requests"]
}
}
Registri Personalizzati
Configura Safe Chain per scansionare pacchetti da registri personalizzati o privati.
Ecosistemi supportati:
- Node.js
- Python
Opzioni di Configurazione
Puoi impostare registri personalizzati tramite variabile d'ambiente o file di configurazione. Entrambe le fonti vengono unite insieme.
- Variabile d'Ambiente (separati da virgola): ```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"
- File di configurazione (
~/.safe-chain/config.json): ```json { "npm": { "customRegistries": ["npm.company.com", "registry.internal.net"] }, "pip": { "customRegistries": ["pip.company.com", "registry.internal.net"] } }
File di configurazione PYPI
Se ti affidi a un file pip.conf per la configurazione di pip, devi puntare pip ad esso esplicitamente tramite la variabile d'ambiente PIP_CONFIG_FILE in modo che Safe Chain possa unirlo.
Safe Chain esegue pip dietro il suo proxy MITM e scrive un file di configurazione pip temporaneo per iniettare il suo certificato e le impostazioni del proxy. Quando PIP_CONFIG_FILE è impostato, Safe Chain unisce le sue impostazioni in una copia del tuo file (il tuo file originale non viene mai modificato) in modo che il tuo index-url, le credenziali e le altre opzioni siano preservate. Quando PIP_CONFIG_FILE non è impostato, la configurazione a livello utente di pip (ad es. ~/.config/pip/pip.conf) potrebbe essere sovrascritta dal file temporaneo di Safe Chain e le tue impostazioni non verranno rilevate.
URL di base della lista malware
Configura Safe Chain per recuperare i database malware e le liste di nuovi pacchetti da un URL mirror personalizzato. Questo ti consente di ospitare la tua copia del database malware di Aikido.
Opzioni di configurazione
Puoi impostare l'URL di base della lista malware tramite più fonti (in ordine di priorità):
- Argomento CLI (priorità più alta): ```shell
npm install express --safe-chain-malware-list-base-url=https://your-mirror.com
- Variabile d'ambiente: ```shell
export SAFE_CHAIN_MALWARE_LIST_BASE_URL=https://your-mirror.com
npm install express
- File di configurazione (
~/.safe-chain/config.json): ```json { "malwareListBaseUrl": "https://your-mirror.com" }
L'URL di base dovrebbe puntare a un server che rispecchia la struttura di https://malware-list.aikido.dev/, inclusi i seguenti percorsi:
/malware_predictions.json(database malware dell'ecosistema JavaScript)/malware_pypi.json(database malware dell'ecosistema Python)/releases/npm.json(elenco dei nuovi pacchetti JavaScript)/releases/pypi.json(elenco dei nuovi pacchetti Python)
File di configurazione del progetto
Oltre al file di configurazione nella directory home (~/.safe-chain/config.json), Safe Chain supporta un file di configurazione del progetto, in modo che le impostazioni possano essere inserite in un repository e condivise all'interno di un team, invece di essere configurate per ogni macchina.
Aggiungi una sezione safe-chain: al file .aikido nella radice del tuo repository (lo stesso file utilizzato da altri strumenti Aikido; Safe Chain legge solo la propria sezione safe-chain: e ignora il resto). Quando viene trovata, le sue impostazioni vengono unite sopra il file di configurazione nella directory home: i valori impostati nella configurazione del progetto hanno la priorità, e gli array (come customRegistries) vengono combinati da entrambi i file anziché uno sostituire l'altro.
Solo le seguenti impostazioni possono essere configurate da un file di configurazione del progetto:```yaml safe-chain: minimumPackageAgeHours: 48 npm: customRegistries: - npm.company.com minimumPackageAgeExclusions: - "@aikidosec/*" pip: customRegistries: - pip.company.com minimumPackageAgeExclusions: - requests
Opzioni come `scanTimeout`, `malwareListBaseUrl` e le opzioni `logFile*` non possono essere impostate da un file di configurazione di progetto - possono provenire solo dalla configurazione nella tua home directory, da argomenti CLI o da variabili d'ambiente.
## Directory di installazione personalizzata
Per impostazione predefinita, Safe Chain si installa in `~/.safe-chain`. Puoi modificarlo passando una directory di installazione esplicita all'installer. Questo è utile per installazioni a livello di sistema (ad esempio all'interno di un'immagine Docker) o quando devi evitare conflitti con altri strumenti.
Quando impostata, tutti i dati di Safe Chain (binario, shim, script, configurazione) vengono inseriti nella directory personalizzata invece che in `~/.safe-chain`.
### Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
&& echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /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.20/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "468C342C5AABB71200B0BD19950984EDD5C4B39811B653B13A5AD15E0FBA4DFA" 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
# Utilizzo in CI/CD
Puoi proteggere le tue pipeline CI/CD da pacchetti malevoli integrando Aikido Safe Chain nel tuo processo di build. Questo garantisce che tutti i pacchetti installati durante le build automatizzate vengano controllati per malware prima dell'installazione.
## Installazione per CI/CD
Usa il flag `--ci` per configurare automaticamente Aikido Safe Chain per gli ambienti CI/CD. Questo imposta shim eseguibili nel PATH invece degli alias della shell.
### Unix/Linux/macOS (GitHub Actions, Azure Pipelines, ecc.)```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
&& echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /tmp/install-safe-chain.sh" | sha256sum -c - \
&& sh /tmp/install-safe-chain.sh --ci \
&& rm /tmp/install-safe-chain.sh
Windows (Azure Pipelines, ecc.)```powershell
$installer = Join-Path $env:TEMP "install-safe-chain.ps1" Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "468C342C5AABB71200B0BD19950984EDD5C4B39811B653B13A5AD15E0FBA4DFA" 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
## Piattaforme Supportate
- ✅ **GitHub Actions**
- ✅ **Azure Pipelines**
- ✅ **CircleCI**
- ✅ **Jenkins**
- ✅ **Bitbucket Pipelines**
- ✅ **GitLab Pipelines**
## Esempio 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.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh
echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /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
Esempio 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.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /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"
## Esempio 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.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh
echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /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
Esempio Jenkins
Nota: questo presuppone che Node.js e npm siano installati sull'agente Jenkins.```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.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh
echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /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
'''
}
}
} }
## Esempio di Bitbucket Pipelines```yaml
image: node:22
steps:
- step:
name: Install
script:
- |
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh
echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /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
Dopo la configurazione, tutti i successivi comandi del gestore di pacchetti nella tua pipeline CI saranno automaticamente protetti dal rilevamento malware di Aikido Safe Chain.
Esempio di GitLab Pipelines
Per aggiungere safe-chain nelle pipeline GitLab, devi installarlo nell'immagine che esegue la pipeline. Questo può essere fatto tramite:
-
Definire un dockerfile per eseguire la tua build ```dockerfile FROM node:lts
Install safe-chain
RUN curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh
&& echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /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}"
-
Crea l'immagine Docker nella tua pipeline CI ```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
-
Usa l'immagine nella tua pipeline: ```yaml npm-ci: stage: install image: $CI_REGISTRY_IMAGE:latest script: - npm ci
La pipeline completa per questo esempio è la seguente:```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
# Risoluzione dei problemi
Hai problemi? Consulta la [Guida alla risoluzione dei problemi](https://github.com/aikidosec/safe-chain/blob/main/docs/troubleshooting.md) per assistenza sui problemi più comuni.
# Segnalare problemi
Se riscontri problemi:
1. Visita [GitHub Issues](https://github.com/AikidoSec/safe-chain/issues)
2. Includi:
* Sistema operativo e versione
* Tipo e versione della shell
* Output di `safe-chain --version`
* Output dei comandi di verifica
* Log dettagliati del comando non riuscito (aggiungi l'argomento `--safe-chain-logging=verbose`)