Skip to content

Commit ff714d6

Browse files
chore: replace dfx with icp-cli across the repository
DFX has been superseded by ICP-CLI (dfinity/icp-cli, binary `icp`, config `icp.json`, v0.2.0). This commit migrates the entire repository: - Convert dfx.json → icp.json with array-based canisters format - Replace all dfx CLI invocations with icp-cli equivalents - Update CI workflows (canister-tests, deploy-rc, update-icp-cli) - Replace dfinity/setup-dfx action with npm install -g @icp-sdk/icp-cli - Update all scripts (build, deploy-archive, deploy-common, provision) - Update all documentation (HACKING.md, README.md, demo READMEs) - Rename .github/workflows/update-dfx.yml → update-icp-cli.yml Migration guide: https://cli.internetcomputer.org/0.2/migration/from-dfx.md
1 parent 8398d4b commit ff714d6

24 files changed

Lines changed: 244 additions & 242 deletions

File tree

.github/workflows/canister-tests.yml

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -492,13 +492,14 @@ jobs:
492492
- name: Install Playwright Browsers
493493
run: npx playwright install chromium
494494

495-
- uses: dfinity/setup-dfx@e50c04f104ee4285ec010f10609483cf41e4d365
495+
- name: Install icp-cli
496+
run: npm install -g @icp-sdk/icp-cli
496497

497498
# Helps with debugging
498499
- name: Show versions
499500
run: |
500-
echo dfx --version
501-
dfx --version
501+
echo icp --version
502+
icp --version
502503
echo node --version
503504
node --version
504505
@@ -511,8 +512,8 @@ jobs:
511512
npm start --prefix ./src/test_openid_provider -- "$port" | tee -a "test-openid-provider-${port}-logs.txt" &
512513
done
513514
514-
- name: "Run dfx"
515-
run: dfx start --background --artificial-delay 0
515+
- name: "Run icp-cli"
516+
run: icp network start -d --artificial-delay 0
516517

517518
- name: "Download II backend wasm"
518519
uses: actions/download-artifact@v4
@@ -533,7 +534,7 @@ jobs:
533534
path: demos/test-app
534535

535536
- name: Create Canisters
536-
run: dfx canister create --all
537+
run: icp canister create --all
537538

538539
- name: Generate OpenID configs
539540
id: openid-configs
@@ -548,11 +549,11 @@ jobs:
548549
549550
- name: Deploy canisters
550551
run: |
551-
# NOTE: dfx install will run the postinstall scripts from dfx.json
552-
dfx canister install internet_identity --wasm internet_identity_backend.wasm.gz --argument "(opt record { captcha_config = opt record { max_unsolved_captchas= 50:nat64; captcha_trigger = variant {Static = variant { CaptchaDisabled }}}; related_origins = opt vec { \"https://id.ai\"; \"https://identity.ic0.app\"; \"https://identity.internetcomputer.org\" }; new_flow_origins = opt vec { \"https://id.ai\" }; openid_configs = opt vec { ${{ steps.openid-configs.outputs.OPENID_CONFIGS }} } })"
553-
II_CANISTER_ID=$(dfx canister id internet_identity)
554-
dfx canister install internet_identity_frontend --wasm internet_identity_frontend.wasm.gz --argument "(record { backend_canister_id = principal \"$II_CANISTER_ID\"; backend_origin = \"https://backend.id.ai\"; related_origins = opt vec { \"https://id.ai\"; \"https://identity.ic0.app\"; \"https://identity.internetcomputer.org\" }; fetch_root_key = opt true; dev_csp = opt true })"
555-
dfx canister install test_app --wasm demos/test-app/test_app.wasm
552+
# NOTE: icp canister install will run the postinstall scripts from icp.json
553+
icp canister install internet_identity --wasm internet_identity_backend.wasm.gz --argument "(opt record { captcha_config = opt record { max_unsolved_captchas= 50:nat64; captcha_trigger = variant {Static = variant { CaptchaDisabled }}}; related_origins = opt vec { \"https://id.ai\"; \"https://identity.ic0.app\"; \"https://identity.internetcomputer.org\" }; new_flow_origins = opt vec { \"https://id.ai\" }; openid_configs = opt vec { ${{ steps.openid-configs.outputs.OPENID_CONFIGS }} } })"
554+
II_CANISTER_ID=$(icp canister status internet_identity --id-only)
555+
icp canister install internet_identity_frontend --wasm internet_identity_frontend.wasm.gz --argument "(record { backend_canister_id = principal \"$II_CANISTER_ID\"; backend_origin = \"https://backend.id.ai\"; related_origins = opt vec { \"https://id.ai\"; \"https://identity.ic0.app\"; \"https://identity.internetcomputer.org\" }; fetch_root_key = opt true; dev_csp = opt true })"
556+
icp canister install test_app --wasm demos/test-app/test_app.wasm
556557
557558
- name: Run dev server
558559
id: dev-server-start
@@ -569,9 +570,9 @@ jobs:
569570
run: |
570571
npx playwright test --project ${{ matrix.device }} --workers 1 --shard=$(tr <<<'${{ matrix.shard }}' -s _ /) --reporter=line,html
571572
572-
- name: Stop dfx
573+
- name: Stop icp-cli
573574
if: ${{ always() }}
574-
run: dfx stop
575+
run: icp network stop
575576

576577
- name: Stop dev server
577578
if: ${{ always() }}
@@ -615,7 +616,8 @@ jobs:
615616
steps:
616617
- uses: actions/checkout@v4
617618

618-
- uses: dfinity/setup-dfx@e50c04f104ee4285ec010f10609483cf41e4d365
619+
- name: Install icp-cli
620+
run: npm install -g @icp-sdk/icp-cli
619621

620622
- name: "Download II wasm"
621623
uses: actions/download-artifact@v4
@@ -635,16 +637,16 @@ jobs:
635637
run: |
636638
key_pem=$(mktemp)
637639
printenv "DFX_DEPLOY_KEY" > "$key_pem"
638-
dfx identity import --disable-encryption --force default "$key_pem"
640+
icp identity import --disable-encryption --force default "$key_pem"
639641
rm "$key_pem"
640642
641643
- name: "Deploy II"
642644
run: |
643645
wallet="cvthj-wyaaa-aaaad-aaaaq-cai"
644-
# Needed to surpass dfx error to use the insecure plaintext identity
645-
export DFX_WARNING=-mainnet_plaintext_identity
646+
# Needed to suppress icp-cli warning about insecure plaintext identity
647+
export ICP_WARNING=-mainnet_plaintext_identity
646648
sha=$(shasum -a 256 ./archive.wasm.gz | cut -d ' ' -f1 | sed 's/../\\&/g')
647-
dfx canister --network ic --wallet "$wallet" install --mode upgrade \
649+
icp canister -e ic --wallet "$wallet" install --mode upgrade \
648650
--argument "(opt record {archive_config = record { module_hash = blob \"$sha\"; entries_buffer_limit = 10000:nat64; entries_fetch_limit = 1000:nat16; polling_interval_ns = 60000000000:nat64}; canister_creation_cycles_cost = opt (1000000000000:nat64); })" \
649651
--wasm internet_identity_backend.wasm.gz \
650652
y2aaj-miaaa-aaaad-aacxq-cai
@@ -658,9 +660,9 @@ jobs:
658660
- name: "Deploy test app"
659661
run: |
660662
wallet="cvthj-wyaaa-aaaad-aaaaq-cai"
661-
# Needed to surpass dfx error to use the insecure plaintext identity
662-
export DFX_WARNING=-mainnet_plaintext_identity
663-
dfx canister --network ic --wallet "$wallet" install --mode upgrade \
663+
# Needed to suppress icp-cli warning about insecure plaintext identity
664+
export ICP_WARNING=-mainnet_plaintext_identity
665+
icp canister -e ic --wallet "$wallet" install --mode upgrade \
664666
--wasm ./test_app.wasm \
665667
vt36r-2qaaa-aaaad-aad5a-cai
666668
@@ -673,21 +675,21 @@ jobs:
673675
- name: "Deploy Issuer"
674676
run: |
675677
wallet="cvthj-wyaaa-aaaad-aaaaq-cai"
676-
# Needed to surpass dfx error to use the insecure plaintext identity
677-
export DFX_WARNING=-mainnet_plaintext_identity
678-
dfx canister --network ic --wallet "$wallet" install --mode upgrade \
678+
# Needed to suppress icp-cli warning about insecure plaintext identity
679+
export ICP_WARNING=-mainnet_plaintext_identity
680+
icp canister -e ic --wallet "$wallet" install --mode upgrade \
679681
--wasm vc_demo_issuer.wasm.gz \
680682
v2yvn-myaaa-aaaad-aad4q-cai
681683
./demos/vc_issuer/provision \
682684
--ii-canister-id y2aaj-miaaa-aaaad-aacxq-cai \
683-
--dfx-network ic \
685+
--icp-network ic \
684686
--issuer-canister v2yvn-myaaa-aaaad-aad4q-cai \
685687
--wallet "$wallet"
686688
687689
- name: "Deploy archive"
688690
run: |
689-
# Needed to surpass dfx error to use the insecure plaintext identity
690-
export DFX_WARNING=-mainnet_plaintext_identity
691+
# Needed to suppress icp-cli warning about insecure plaintext identity
692+
export ICP_WARNING=-mainnet_plaintext_identity
691693
scripts/deploy-archive --wasm archive.wasm.gz --canister-id y2aaj-miaaa-aaaad-aacxq-cai --network ic
692694
693695
# This prepares all the files necessary for a release (all flavors of Wasm, release notes).
@@ -801,8 +803,8 @@ jobs:
801803
cp internet_identity_backend.wasm.gz internet_identity_production.wasm.gz
802804
cp internet_identity_backend.wasm.gz internet_identity_dev.wasm.gz
803805
804-
# Create a sha file for dfx pull, referenced by the metadata set in the build
805-
- name: Create sha for dfx pull
806+
# Create a sha file for icp-cli pull, referenced by the metadata set in the build
807+
- name: Create sha for icp-cli pull
806808
run: |
807809
shasum -a 256 \
808810
./internet_identity_backend.wasm.gz > \

.github/workflows/deploy-rc.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,23 +58,24 @@ jobs:
5858
- name: "Print shasum of found build"
5959
run: shasum -a 256 ./internet_identity_backend.wasm.gz
6060

61-
- uses: dfinity/setup-dfx@e50c04f104ee4285ec010f10609483cf41e4d365
61+
- name: Install icp-cli
62+
run: npm install -g @icp-sdk/icp-cli
6263

6364
- name: "Install key"
6465
env:
6566
DFX_DEPLOY_KEY: ${{ secrets.DFX_DEPLOY_KEY }}
6667
run: |
6768
key_pem=$(mktemp)
6869
printenv "DFX_DEPLOY_KEY" > "$key_pem"
69-
dfx identity import --disable-encryption --force default "$key_pem"
70+
icp identity import --disable-encryption --force default "$key_pem"
7071
rm "$key_pem"
7172
7273
- name: "Deploy Release Candidate"
7374
run: |
7475
wallet="${{ env.wallet_canister_id }}"
75-
# Needed to surpass dfx error to use the insecure plaintext identity
76-
export DFX_WARNING=-mainnet_plaintext_identity
77-
dfx canister --network ic --wallet "$wallet" install --mode upgrade \
76+
# Needed to suppress icp-cli warning about insecure plaintext identity
77+
export ICP_WARNING=-mainnet_plaintext_identity
78+
icp canister -e ic --wallet "$wallet" install --mode upgrade \
7879
--wasm internet_identity_backend.wasm.gz \
7980
${{ env.ii_canister_id }}
8081

.github/workflows/update-dfx.yml

Lines changed: 0 additions & 62 deletions
This file was deleted.
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# A GitHub Actions workflow that regularly checks for new icp-cli releases
2+
# and creates a PR on new versions.
3+
name: icp-cli Update
4+
5+
on:
6+
schedule:
7+
# check for new icp-cli releases daily at 7:30
8+
- cron: "30 7 * * *"
9+
workflow_dispatch:
10+
11+
jobs:
12+
icp-cli-update:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- uses: actions/checkout@v4
16+
17+
# First, check icp-cli releases for a new version.
18+
- name: Check new icp-cli version
19+
id: update
20+
run: |
21+
current_icp_cli_release=$(jq -r '."icp-cli"' < icp.json)
22+
echo "current icp-cli release '$current_icp_cli_release'"
23+
24+
latest_icp_cli_release=$(curl -sSL https://api.github.com/repos/dfinity/icp-cli/releases/latest | jq .tag_name -r)
25+
echo "latest icp-cli release '$latest_icp_cli_release'"
26+
27+
if [ "$current_icp_cli_release" != "$latest_icp_cli_release" ]
28+
then
29+
echo icp-cli needs an update
30+
sed -i -e \
31+
"s/$current_icp_cli_release/$latest_icp_cli_release/g" \
32+
"icp.json"
33+
echo "updated=1" >> "$GITHUB_OUTPUT"
34+
else
35+
echo "updated=0" >> "$GITHUB_OUTPUT"
36+
fi
37+
38+
cat ./icp.json
39+
40+
# If the icp.json was updated, create a PR.
41+
- name: Create Pull Request
42+
if: ${{ steps.update.outputs.updated == '1' }}
43+
uses: peter-evans/create-pull-request@v6
44+
with:
45+
token: ${{ secrets.GIX_BOT_PAT }}
46+
base: main
47+
add-paths: ./icp.json
48+
commit-message: Update icp-cli release
49+
committer: GitHub <noreply@github.com>
50+
author: gix-bot <gix-bot@users.noreply.github.com>
51+
branch: bot-icp-cli-update
52+
delete-branch: true
53+
title: "Update icp-cli"
54+
55+
# Since this is a scheduled job, a failure won't be shown on any
56+
# PR status. To notify the team, we send a message to our Slack channel on failure.
57+
- name: Notify Slack on failure
58+
uses: ./.github/actions/slack
59+
if: ${{ failure() }}
60+
with:
61+
WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
62+
MESSAGE: "icp-cli update failed: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"

0 commit comments

Comments
 (0)