Lanjut ke konten utama

Pengaturan integrasi berkelanjutan untuk Solidity dan Truffle

soliditykontrak pintarpengujiantruffleintegrasi berkelanjutanganache
Tingkat menengah
Markus Waas
soliditydeveloper.com(opens in a new tab)
5 Juni 2020
4 bacaan singkat minute read

Integrasi berkelanjutan (CI) dengan Truffle merupakan cara yang bagus untuk pekerjaan pengembangan setelah Anda memiliki sekumpulan tes dasar yang diimplementasikan. CI memungkinkan Anda menjalankan tes yang sangat panjang, memastikan semua tes lolos uji sebelum bergabung dengan permintaan penarikan(opens in a new tab) dan untuk melacak berbagai statistik menggunakan peralatan tambahan.

Kita akan menggunakan Kotak Metacoin Truffle(opens in a new tab) untuk menyiapkan integrasi berkelanjutan kita. Anda dapat memilih Travis CI atau Circle CI.

Menyiapkan Travis CI

Menambahkan Travis CI(opens in a new tab) merupakan hal yang mudah. Anda hanya perlu menambahkan file konfigurasi .travis.yml ke folder akar proyeknya:

1language: node_js
2node_js:
3 - 10
4
5cache: npm
6
7before_script:
8 - echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
9
10script:
11 - npm test
Tampilkan semua

Kita akan menjaganya tetap tampak mudah untuk saat ini dan hanya akan menjalankan skrip tes yang mengeksekusi tes unit Truffle. Tapi kita memiliki satu masalah, tidak akan ada blockchain yang tersedia di mesin Travis CI. Solusi mudah untuk ini adalah melakukannpm instal ganache-cli dan cukup menjalankannya sebelum tes. Anda dapat melakukan ini dengan menambahkan skrip bash dengan barisan npx ganache-cli > /dev/null dan sebelum pemanggilan npx truffle test. Contoh lengkap skrip bash(opens in a new tab).

Menyiapkan Circle CI

CircleCi(opens in a new tab) memerlukan file konfigurasi yang lebih panjang. Perintah tambahan npm ci(opens in a new tab) secara otomatis dijalankan di Travis. Perintah ini menginstal dependensi dengan lebih cepat dan lebih aman daripada yang dilakukan oleh npm install. Kita sekali lagi menggunakan skrip yang sama dari versi Travis untuk menjalankan ganache-cli sebelum pengujiannya.

1version: 2
2
3aliases:
4 - &defaults
5 docker:
6 - image: circleci/node:10
7
8 - &cache_key_node_modules
9 key: v1-node_modules-{{ checksum "package-lock.json" }}
10
11jobs:
12 dependencies:
13 <<: *defaults
14 steps:
15 - checkout
16 - restore_cache:
17 <<: *cache_key_node_modules
18 - run:
19 name: Install npm dependencies
20 command: |
21 if [ ! -d node_modules ]; then
22 npm ci
23 fi
24 - persist_to_workspace:
25 root: .
26 paths:
27 - node_modules
28 - build
29 - save_cache:
30 paths:
31 - node_modules
32 <<: *cache_key_node_modules
33
34 test:
35 <<: *defaults
36 steps:
37 - checkout
38 - attach_workspace:
39 at: .
40 - run:
41 name: Unit tests
42 command: npm test
43
44workflows:
45 version: 2
46 everything:
47 jobs:
48 - dependencies
49 - test:
50 requires:
51 - dependencies
Tampilkan semua

Menambahkan plugin eth-gas-reporter

Plugin eth-gas-reporter cukup berguna untuk melacak biaya gas dari fungsi kontrak pintar Anda. Memilikinya dalam CI Anda akan jauh lebih berguna untuk menunjukkan perbedaan saat menambahkan permintaan penarikan.

Langkah 1: Instal plugin eth-gas-reporter dan codechecks

npm install --save-dev eth-gas-reporter
npm install --save-dev @codechecks/client

Langkah 2: Tambahkan plugin ke pengaturan mocha di dalam truffle-config.js Anda

Lihat opsi(opens in a new tab)

1module.exports = {
2 networks: { ... },
3 mocha: {
4 reporter: 'eth-gas-reporter',
5 reporterOptions: {
6 excludeContracts: ['Migrations']
7 }
8 }
9};
Tampilkan semua
Salin

Langkah 3: Tambahkan codechecks.yml ke direktori akar proyek Anda

1checks:
2 - name: eth-gas-reporter/codechecks

Langkah 4: Jalankan codechecks setelah perintah pengujian

- npm test
- npx codechecks

Langkah 5: Buat akun Codechecks

Selesai. Sekarang Anda akan menemukan laporan yang bagus tentang perubahan biaya gas dari permintaan penarikan Anda.

Contoh laporan gas

Menambahkan plugin solidity-coverage

Dengan plugin solidity-coverage, Anda dapat memeriksa seberapa banyak jalur kode Anda yang dicakup oleh tes Anda. Menambahkan ini ke CI Anda sangatlah praktis untuk digunakan setelah disiapkan.

Langkah 1: Buat proyek metacoin dan instal peralatan coverage

npm install --save-dev truffle
npm install --save-dev coveralls
npm install --save-dev solidity-coverage

Langkah 2: Tambahkan solidity-coverage ke dalam array plugin di dalam truffle-config.js

1module.exports = {
2 networks: {...},
3 plugins: ["solidity-coverage"]
4}
Salin

Langkah 3: Tambahkan perintah coverage ke dalam .travis.yml atau Circle CI config.yml

- npx truffle run coverage
- cat coverage/lcov.info | npx coveralls

Coverage Solidity memulai ganache-cli miliknya, sehingga kita tidak perlu merisaukan tentang ini. Namun, jangan mengganti perintah tes reguler, ganache-cli coverage bekerja dengan cara berbeda dan oleh karena itu bukanlah pengganti untuk menjalankan tes reguler.

Langkah 4: Tambahkan repositori ke coveralls

Contoh coverall

Ide lebih lanjut

Begitu mudah, bukan. Integrasi berkelanjutan merupakan strategi yang sangat berguna untuk pengembangan Anda. Anda dapat melihat contoh lengkapnya di Truffle-CI-Example(opens in a new tab). Pastikan saja menghapus Circle-CI atau Travis, satu sudah cukup!

Terakhir diedit: @yeremiaryangunadi(opens in a new tab), 15 Agustus 2023

Apakah tutorial ini membantu?