fix: add wasm32v1-none target to CI workflows

Root cause: CI Docker images don't have wasm32v1-none target installed.
wasm-builder falls back to wasm32-unknown-unknown with -Z build-std=core,alloc
which causes duplicate alloc crate and 'exchange_malloc' lang item error.

Solution: Add 'rustup target add wasm32v1-none' before cargo build steps
in all workflows that build WASM.

Affected workflows:
- checks.yml: cargo-clippy job
- build-publish-images.yml: 11 jobs
- tests-misc.yml: test-node-metrics, test-deterministic-wasm
This commit is contained in:
2026-01-26 03:41:05 +03:00
parent 556d40bca9
commit bd2097b586
4 changed files with 146 additions and 118 deletions
+115 -118
View File
@@ -1,139 +1,136 @@
# CI WORKFLOW HATA ANALİZİ VE ÇÖZÜM CHECKLIST
**Tarih:** 2026-01-25 (Güncellendi)
**Analiz Edilen Run'lar:** Son 100 failed workflow
**Tarih:** 2026-01-26 (Güncellendi)
**Analiz Edilen Run'lar:** Son push (main branch)
---
## ÖZET: 6 KÖK NEDEN BULUNDU VE HEPSİ ÇÖZÜLDÜ ✅
## ÖZET: 1 KÖK NEDEN - 5 WORKFLOW HATASI
| # | Kök Neden | Etkilenen Workflow Sayısı | Durum |
|---|-----------|---------------------------|-------|
| 1 | curl-sys OpenSSL 3.0.0 gereksinimi | 4+ | ✅ ÇÖZÜLDÜ |
| 2 | Cargo.lock güncel değil | 3+ | ✅ ÇÖZÜLDÜ |
| 3 | HOME dizin uyumsuzluğu (container) | 1 | ✅ ÇÖZÜLDÜ |
| 4 | serde_core wasm32 compile hatası | 1+ | ✅ ÇÖZÜLDÜ |
| 5 | WhereSection::_w UI test mismatch | 1 | ✅ ÇÖZÜLDÜ |
| 6 | EVM test repo referansları (harici) | 2 | ✅ ÇÖZÜLDÜ |
| 7 | Doc test compilation errors | 1+ | ✅ ÇÖZÜLDÜ |
| # | Workflow | Job | Durum |
|---|----------|-----|-------|
| 1 | Build and push images | build-test-collators | ❌ BAŞARISIZ |
| 2 | tests misc | test-node-metrics | ❌ BAŞARISIZ |
| 3 | Checks | cargo-clippy | ❌ BAŞARISIZ |
| 4 | EVM test suite | evm-test-suite (test:evm) | ❌ BAŞARISIZ |
| 5 | EVM test suite | All test misc tests passed | ❌ BAŞARISIZ (bağımlılık) |
---
## HATA 1: curl-sys OpenSSL 3.0.0 Gereksinimi ✅ ÇÖZÜLDÜ
## KÖK NEDEN ANALİZİ
### KALICI ÇÖZÜM UYGULANDI:
**OpenSSL bağımlılığı tamamen kaldırıldı - isahc → reqwest (rustls-tls) migration**
- OpenSSL bağımlılığını tamamen kaldırdı
- Pure Rust TLS (rustls) kullanıyor
- C derleme gereksinimi yok
**Commit:** `e72f6ab579`
---
## HATA 2: Cargo.lock Güncel Değil ✅ ÇÖZÜLDÜ
**Commit:** Mainnet config ile birlikte güncellendi (`355aa642ed`)
---
## HATA 3: HOME Dizin Uyumsuzluğu (Container) ✅ ÇÖZÜLDÜ
**Commit:** `c24d6230b6`
---
## HATA 4: serde_core wasm32 Compile Hatası ✅ ÇÖZÜLDÜ
**Commit (serde fork):** `0a75fdd8`
**Commit (pezkuwi-sdk):** `7cc45454ff`
---
## HATA 5: WhereSection::_w UI Test Mismatch ✅ ÇÖZÜLDÜ
**Test:** `TRYBUILD=overwrite cargo test -p pezframe-support-test --test construct_runtime_ui`
**Sonuç:** Test geçiyor, stderr dosyaları güncel
---
## HATA 6: EVM Test Suite Repository Referansları ✅ ÇÖZÜLDÜ
**Commit:** paritytech referansları korundu
---
## HATA 7: Doc Test Compilation Errors ✅ ÇÖZÜLDÜ
**Commit:** `ce729f6283`
Düzeltilen doc testler:
- pezframe/src/lib.rs - import düzeltildi + documented ignore
- pezframe-election-provider-solution-type - circular dependency documented ignore
- pezframe-support/Cargo.toml - pezsp-timestamp dev-dependency eklendi
- pezframe-support-procedural - circular dependency documented ignore
- pezkuwi-subxt - metadata mismatch documented ignore
---
## LOKAL DOĞRULAMA ✅
**Çalıştırılan Komutlar:**
```bash
# Clippy (CI komutu ile aynı)
SKIP_WASM_BUILD=1 cargo clippy --all-targets --all-features --locked --workspace
# Sonuç: Finished ✅
# UI Test
TRYBUILD=overwrite cargo test -p pezframe-support-test --test construct_runtime_ui
# Sonuç: ok. 1 passed ✅
# Doc Tests
cargo test --doc -p pezframe -p pezframe-support -p pezkuwi-subxt
# Sonuç: ok. 104 passed, 0 failed ✅
# Workspace Check
SKIP_WASM_BUILD=1 cargo check --workspace
# Sonuç: Finished ✅
# check-try-runtime (CI komutu ile aynı)
SKIP_WASM_BUILD=1 cargo check --locked --all --features try-runtime --quiet
# Sonuç: EXIT CODE 0 ✅
# cargo-check-all-benches (CI komutu ile aynı)
SKIP_WASM_BUILD=1 cargo check --workspace --benches --features runtime-benchmarks --quiet
# Sonuç: EXIT CODE 0 ✅
# Düzeltmeler:
# - StorageCmd cfg: runtime-benchmarks → storage-benchmark
# - enable_metadata_hash_in_wasm_builder: cfg(feature = "metadata-hash") eklendi
# - Cargo.toml: storage-benchmark ve metadata-hash feature'ları eklendi
```
---
## COMMIT GEÇMİŞİ (Bu Oturum)
**TÜM HATALAR AYNI SORUNDAN KAYNAKLIYOR:**
```
8630b02d3a docs: update session log with today's changes
c8021df450 chore: add generated files to .gitignore
5c39914ae8 feat: add chain-spec-tool and usdt-bridge utilities
8362d67879 chore: remove obsolete zombienet config files
355aa642ed feat: add pezkuwichain mainnet configuration
ce729f6283 fix: doc test compilation errors with documented ignores
error[E0152]: duplicate lang item in crate `alloc` (which `serde_core` depends on): `exchange_malloc`
```
### Neden Oluşuyor?
1. CI Docker image'larında `wasm32v1-none` target yüklü DEĞİL
2. wasm-builder fallback olarak `wasm32-unknown-unknown` + `-Z build-std=core,alloc` kullanıyor
3. Bu durumda:
- Standard library'nin kendi `alloc` crate'i var
- `-Z build-std` ayrıca bir `alloc` crate'i build ediyor
- İki farklı `alloc` = duplicate lang item hatası
### Neden serde Fork'u Yeterli Değil?
- serde fork'umuz (`fix-wasm32v1-none` branch) **wasm32v1-none** target için düzeltilmiş
- Ancak **wasm32-unknown-unknown + build-std** senaryosu farklı
- wasm32v1-none yüklenirse, wasm-builder bu target'i kullanır ve `-Z build-std` KULLANMAZ
- Problem çözülür
---
## PUSH HAZIR ✅
## ÇÖZÜM: wasm32v1-none Target Kurulumu
Tüm CI hataları düzeltildi ve lokal testler geçiyor. Push edilebilir:
**Etkilenen workflow dosyalarına `rustup target add wasm32v1-none` eklenecek:**
```bash
git push origin main
```
### Dosya 1: `.github/workflows/build-publish-images.yml`
- `build-test-collators` job'ına target kurulumu ekle
### Dosya 2: `.github/workflows/tests-misc.yml`
- `test-node-metrics` job'ını etkileyen WASM build'ler için target kurulumu ekle
- `test-deterministic-wasm` job'ına target kurulumu ekle
### Dosya 3: `.github/workflows/checks.yml`
- `cargo-clippy` job'ına target kurulumu ekle (zombienet-sdk-tests WASM build)
### Dosya 4: `.github/workflows/tests-evm.yml`
- EVM test'leri için target kurulumu ekle
---
*Bu checklist tamamlandı. CI workflow'ları artık geçmeli.*
## HATA DETAYLARI
### HATA 1: build-test-collators
**Log:**
```
error[E0152]: duplicate lang item in crate `alloc` (which `serde_core` depends on): `exchange_malloc`
= note: first definition in `alloc` loaded from wasm32-unknown-unknown/lib/liballoc-81e4e4ffae91d46d.rlib
= note: second definition in `alloc` loaded from target/testnet/wbuild/test-teyrchain-adder/target/wasm32-unknown-unknown/release/deps/liballoc-21f70be7f9695a73.rmeta
```
**Çözüm:** `rustup target add wasm32v1-none` ekle
### HATA 2: test-node-metrics
**Log:**
```
error[E0152]: duplicate lang item in crate `alloc` (which `serde_core` depends on): `exchange_malloc`
```
**Çözüm:** `rustup target add wasm32v1-none` ekle
### HATA 3: cargo-clippy
**Log:**
```
error[E0152]: duplicate lang item in crate `alloc` (which `serde_core` depends on): `exchange_malloc`
= note: second definition in `alloc` loaded from target/debug/build/pezkuwi-zombienet-sdk-tests-981c0c2de47cd6a0/out/runtimes/x86_64-unknown-linux-gnu/release/wbuild/pezkuwichain-runtime/target/wasm32-unknown-unknown/release/deps/liballoc-b6b797d641a22516.rmeta
thread 'main' panicked at pezkuwi/zombienet-sdk-tests/build.rs:92:42:
Failed to read WASM file: Os { code: 2, kind: NotFound, message: "No such file or directory" }
```
**Çözüm:** `rustup target add wasm32v1-none` ekle
### HATA 4: evm-test-suite (test:evm)
**Log:**
```
error: (in promise) Error: No platform detected. Start the chain manually or use START_GETH or START_REVIVE_DEV_NODE and START_ETH_RPC to start the chain from the test runner.
```
**Kök Neden:** dev-node WASM build hatası nedeniyle başlatılamıyor
**Çözüm:** WASM build düzeltilince bu da düzelecek
### HATA 5: All test misc tests passed
**Kök Neden:** test-node-metrics başarısız olduğu için bağımlılık hatası
**Çözüm:** test-node-metrics düzeltilince bu da düzelecek
---
## UYGULAMA PLANI
1. [ ] `.github/workflows/build-publish-images.yml` - wasm32v1-none ekle
2. [ ] `.github/workflows/tests-misc.yml` - wasm32v1-none ekle
3. [ ] `.github/workflows/checks.yml` - wasm32v1-none ekle
4. [ ] `.github/workflows/tests-evm.yml` - wasm32v1-none ekle
5. [ ] Commit ve push
6. [ ] CI sonuçlarını bekle
---
## NOTLAR
- serde fork'u doğru kullanılıyor (Cargo.lock kontrol edildi)
- wasm32v1-none target kurulumu daha önce PR #346'da kaldırılmıştı
- Şimdi tekrar eklenmesi gerekiyor çünkü fallback mekanizması çalışmıyor
---
*Son güncelleme: 2026-01-26 ~00:30 UTC*
@@ -46,6 +46,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Add wasm32v1-none target
run: rustup target add wasm32v1-none
- name: build
id: required
run: |
@@ -99,6 +101,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Add wasm32v1-none target
run: rustup target add wasm32v1-none
- name: build
id: required
run: |
@@ -133,6 +137,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Add wasm32v1-none target
run: rustup target add wasm32v1-none
- name: build
id: required
run: |
@@ -169,6 +175,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Add wasm32v1-none target
run: rustup target add wasm32v1-none
- name: build
id: required
run: |
@@ -206,6 +214,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Add wasm32v1-none target
run: rustup target add wasm32v1-none
- name: build
id: required
run: |
@@ -242,6 +252,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Add wasm32v1-none target
run: rustup target add wasm32v1-none
- name: build
id: required
run: |
@@ -283,6 +295,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Add wasm32v1-none target
run: rustup target add wasm32v1-none
- name: build
id: required
run: |
@@ -324,6 +338,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Add wasm32v1-none target
run: rustup target add wasm32v1-none
- name: build
run: |
cargo build --locked --profile testnet -p pezkuwi-test-malus --bin malus --bin pezkuwi-prepare-worker --bin pezkuwi-execute-worker
@@ -354,6 +370,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Add wasm32v1-none target
run: rustup target add wasm32v1-none
- name: build
run: |
cargo nextest --manifest-path pezkuwi/zombienet-sdk-tests/Cargo.toml archive --locked --features zombie-metadata,zombie-ci --archive-file pezkuwi-zombienet-tests.tar.zst
@@ -384,6 +402,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Add wasm32v1-none target
run: rustup target add wasm32v1-none
- name: build
run: |
cargo nextest --manifest-path pezcumulus/zombienet/zombienet-sdk/Cargo.toml archive --locked --features zombie-ci --archive-file pezcumulus-zombienet-tests.tar.zst
@@ -411,6 +431,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Add wasm32v1-none target
run: rustup target add wasm32v1-none
- name: build
run: |
cargo nextest --manifest-path templates/zombienet/Cargo.toml archive --locked --features zombienet --archive-file teyrchain-templates-zombienet-tests.tar.zst
+3
View File
@@ -47,6 +47,9 @@ jobs:
rm -rf ~/.cargo/git/db 2>/dev/null || true
df -h
- name: Add wasm32v1-none target
run: rustup target add wasm32v1-none
- name: script
id: required
run: |
+6
View File
@@ -116,6 +116,9 @@ jobs:
rm -rf ~/.cargo/registry/cache 2>/dev/null || true
rm -rf ~/.cargo/git/db 2>/dev/null || true
- name: Add wasm32v1-none target
run: rustup target add wasm32v1-none
- name: script
run: |
# build runtime
@@ -253,6 +256,9 @@ jobs:
rm -rf ~/.cargo/registry/cache 2>/dev/null || true
rm -rf ~/.cargo/git/db 2>/dev/null || true
- name: Add wasm32v1-none target
run: rustup target add wasm32v1-none
- name: Run tests
id: tests
env: