Lanjut ke konten utama

Bantu memperbarui halaman ini

🌏

Terdapat versi baru halaman ini namun sementara ini hanya dalam bahasa Inggris. Bantu kami menerjemahkan versi terkini.

Terjemahkan halaman
Lihat Bahasa Inggris

Tidak ada bug di sini!🐛

Halaman ini tidak diterjemahkan. Untuk saat ini kami sengaja membiarkan halaman ini dalam bahasa Inggris.

Pengaturan integrasi berkelanjutan untuk Solidity dan Truffle

soliditykontrak pintarpengujiantruffleintegrasi berkelanjutanganache
Tingkat menengah
✍️Markus Waas
📚soliditydeveloper.com
📆5 Juni 2020
⏱️4 bacaan singkat

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 dan untuk melacak berbagai statistik menggunakan peralatan tambahan.

Kita akan menggunakan Kotak Metacoin Truffle untuk menyiapkan integrasi berkelanjutan kita. Anda dapat memilih Travis CI atau Circle CI.

Menyiapkan Travis CI

Menambahkan Travis CI 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
12
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.

Menyiapkan Circle CI

CircleCi memerlukan file konfigurasi yang lebih panjang. Perintah tambahan npm ci 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
52
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

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

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

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

Langkah 4: Jalankan codechecks setelah perintah pengujian

- npm test
- npx codechecks

Langkah 5: Buat akun Codechecks

  • Buat akun dengan Codechecks.
  • Add the GitHub repo to it.
  • Salin rahasianya dan tambahkan CC_SECRET=COPIED SECRET ke dalam CI Anda (lihat di sini untuk Travis, di sini untuk CircleCi).
  • Sekarang lanjutkan dan buat permintaan penarikan.

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}
5
📋 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

  • Buat akun dengan Coveralls.
  • Add the GitHub repo to it.
  • Sekarang lanjutkan dan buat permintaan penarikan.

Contoh coverall

Ide lebih lanjut

  • MythX: Dengan MythX, Anda dapat secara otomatis menganalisa keamanan kontrak pintar Anda. Jadi, sangat masuk akal untuk menambahkan ini ke dalam CI Anda.
  • Linting: Good code can be enforced to some degree with linting tools. Eslint works great for JavaScript, is easy to setup, while Solhint can be used for Solidity.
  • Tes panjang: Terkadang Anda mungkin ingin menambahkan tes ekstrim, seperti menguji kontrak yang memiliki ratusan pengguna. Ini memerlukan waktu yang lama. Alih-alih menjalankannya di setiap pengoperasian tes, tambahkan ke dalam CI.

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

Terakhir diedit: , Invalid DateTime
Edit halaman

Apakah halaman ini membantu?