The `codefresh` package provides the official command-line interface (CLI) for interacting with the Codefresh platform, enabling users to manage CI/CD pipelines, deployments, and various resources directly from their terminal. It supports a wide array of operations including managing builds, images, tags, authentication contexts, and Helm releases. The current stable version is 1.1.3. Releases appear to be frequent, often weekly or bi-weekly, addressing bugs, security updates, and new features. Its primary differentiator is providing a comprehensive, scriptable interface to Codefresh's full suite of CI/CD capabilities, serving as a powerful tool for automation and integration within development workflows. It requires Node.js v24.0.0 or higher to run.
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslnode 18–226 runs
build_error
glibcnode 18–226 runs
build_error
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
The `codefresh` package is primarily a command-line interface. For programmatic interaction in JavaScript/TypeScript, it's typically invoked as a child process using tools like `execa` or Node.js's built-in `child_process` module. Direct `import` or `require` of its internal modules is not officially supported or recommended for external use.
import { execa } from 'execa'; await execa('codefresh', ['version']);
When installed globally (`npm install -g codefresh`), the `codefresh` executable is added to the system's PATH. When installed locally (e.g., as a development dependency), its executable is located in `node_modules/.bin/codefresh`.
import { fileURLToPath } from 'url'; import { dirname, join } from 'path'; const __dirname = dirname(fileURLToPath(import.meta.url)); const cliPath = join(__dirname, 'node_modules', '.bin', 'codefresh');
The `codefresh` package is not designed to be imported as a standard JavaScript/TypeScript library. Its functionality is exposed exclusively via the command-line interface, and attempts to import functions or objects directly will fail.
Demonstrates global installation of the Codefresh CLI, authentication using an API key from environment variables, and fetching the CLI version and configured contexts programmatically.
import { execa } from 'execa'; // npm install execa
async function setupAndUseCodefreshCLI() {
console.log('--- Installing Codefresh CLI globally ---\n');
try {
await execa('npm', ['install', '-g', 'codefresh'], { stdio: 'inherit' });
console.log('\nCodefresh CLI installed successfully.\n');
} catch (error) {
console.error('Failed to install Codefresh CLI:', error.message);
return;
}
const apiKey = process.env.CODEFRESH_API_KEY ?? '';
if (!apiKey) {
console.error('CODEFRESH_API_KEY environment variable is not set. Please generate an API key from Codefresh account settings and set it.\n');
return;
}
console.log('--- Authenticating with Codefresh CLI ---\n');
try {
await execa('codefresh', ['auth', 'create-context', '--api-key', apiKey], { stdio: 'inherit' });
console.log('\nAuthentication successful. Context created.\n');
} catch (error) {
console.error('Authentication failed. Check your API key and network connection:', error.message);
return;
}
console.log('--- Getting Codefresh CLI version ---\n');
try {
const { stdout } = await execa('codefresh', ['version']);
console.log(`Codefresh CLI Version: ${stdout.trim()}\n`);
} catch (error) {
console.error('Failed to get CLI version:', error.message);
}
console.log('--- Listing Codefresh contexts (example) ---\n');
try {
const { stdout } = await execa('codefresh', ['get', 'contexts']);
console.log('Codefresh Contexts:\n', stdout);
} catch (error) {
console.error('Failed to list contexts:', error.message);
}
}
setupAndUseCodefreshCLI();
codefresh --version
Upgrade
Version history
Breaking-change detection hasn't run for this library yet.
Audit
Security & dependencies
CVE tracking and dependency tree are planned for a later release.