Skip to content

v1.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 07 Aug 16:27
bf55d05

Release Notes

  • feat: a canister environment variable's value can now be read from a file, by writing var: { path: <file> } in place of var: value. The path resolves against the canister's directory — including in an environment override, matching init_args — and surrounding whitespace is trimmed off the file's contents. The file is read when the project is loaded, so a missing file fails before anything is deployed. icp project bundle writes the value into the bundled manifest inline, rejecting a file outside the project as it does for other manifest file references.
  • fix: icp network start now explains why a Docker-based network failed to come up. A container that exited before the network was ready was reported as failed to watch docker container <id> for exit with an empty cause, discarding the actual reason (e.g. the gateway port already being taken); the container's output is now attached to the error.
  • feat: Docker-based networks now show the launcher's output like non-containerized ones do. In the foreground the container's stdout and stderr are streamed to your terminal as it runs; in background mode icp network start prints the docker logs -f <container-id> command to follow it. Previously container output was never shown at all — which on Windows, where the launcher always runs in a container, meant icp network start was silent.
  • fix: a network launcher running in a container (icp settings autocontainerize true, and always on Windows) now receives --verbose when icp -d is used, matching the non-containerized launcher.

Experimental

  • feat(bundle): icp project bundle now works on projects that declare dependencies:, which it previously refused outright. The bundle mirrors the workspace instead of flattening it: the root project's icp.yaml sits at the archive root, each dependency instance gets its own icp.yaml at the directory it occupies in the workspace, and the dependencies: declarations are preserved, each pointing at the directory its dependency occupies in the archive (the same path a plainly vendored layout already used). A shared (diamond) dependency is still a single instance, canister names stay as each project wrote them, and canister discovery (PUBLIC_CANISTER_ID:<alias>:<canister>) works in the extracted bundle exactly as it did in the source workspace.
    • Every dependency must resolve to a directory inside the workspace root; one that resolves outside it (including through a symlink) is rejected, because the archive could not contain it. As a result, a vendored member that depends on a sibling cannot be bundled as a standalone project (e.g. via ICP_PROJECT_ROOT) — bundle the workspace root instead.
    • Projects with script sync steps still cannot be bundled, and the restriction now covers every project in the workspace.

Install icp-cli 1.3.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/dfinity/icp-cli/releases/download/v1.3.0/icp-cli-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/dfinity/icp-cli/releases/download/v1.3.0/icp-cli-installer.ps1 | iex"

Download icp-cli 1.3.0

File Platform Checksum
icp-cli-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
icp-cli-x86_64-apple-darwin.tar.xz Intel macOS checksum
icp-cli-x86_64-pc-windows-msvc.zip x64 Windows checksum
icp-cli-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
icp-cli-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum