ແບ່ງປັນໂຄ້ດທົດສອບ

ເຫດຜົນ

ເພື່ອເຮັດໃຫ້ຂັ້ນຕອນການເຮັດວຽກຂອງ CI ມີຄວາມໜ້າເຊື່ອຖື ແລະ ມີປະສິດທິພາບ, ມັນເປັນສິ່ງສຳຄັນຫຼາຍທີ່ຈະຕ້ອງຮັກສາການຄວບຄຸມການທົດສອບ (test coverage) ໃຫ້ຢູ່ໃນສະພາບທີ່ດີຕະຫຼອດເວລາ. ການແບ່ງປັນໂຄ້ດທົດສອບລະຫວ່າງຫຼາຍໆແພັກເກດ (ເຖິງແມ່ນວ່າຈະຢູ່ໃນຫຼາຍບຣານຊ໌ຂອງແພັກເກດດຽວກັນກໍຕາມ) ອາດຈະຊ່ວຍໄດ້ຫຼາຍໃນການ:

  • ປ້ອງກັນການເຮັດໂຄ້ດທົດສອບຊໍ້າຊ້ອນ

  • ຫຼຸດຜ່ອນການບຳລຸງຮັກສາການທົດສອບ

  • ກວດພົບຄວາມບໍ່ເຂົ້າກັນໄດ້ຢ່າງວ່ອງໄວ

ໂດຍທົ່ວໄປແລ້ວ, ການທົດສອບຈະກຳນົດວ່າຊອບແວເຮັດວຽກແນວໃດ ແລະ ຟັງຊັນພື້ນຖານຂອງຫຼາຍໆແພັກເກດກໍບໍ່ໄດ້ປ່ຽນແປງເລື້ອຍໆປານໃດ. ພວກເຮົາພະຍາຍາມຢ່າງເຕັມທີ່ເພື່ອຮັກສາການເຂົ້າກັນໄດ້ກັບເວີຊັນກ່ອນໜ້າ (backward compatibility) ໃນບ່ອນທີ່ເປັນໄປໄດ້. ດັ່ງນັ້ນ ມັນຈຶ່ງເບິ່ງຄືວ່າເປັນເລື່ອງປົກກະຕິທີ່ຄອມໂພເນນເຫຼົ່ານັ້ນ, ການທົດສອບທີ່ຄວບຄຸມ spec ອາດຈະປ່ຽນແປງຊ້າກວ່າບຣານຊ໌ຂອງການແຈກຢາຍ (distribution branches).

ເບິ່ງການສົນທະນາທັງໝົດໃນ ci-list discussion ສຳລັບຂໍ້ມູນເພີ່ມເຕີມ.

ການຈັດຕັ້ງປະຕິບັດ

ເກັບໂຄ້ດທົດສອບໄວ້ໃນເຣໂປຊິທໍຣີທີ່ເຈົ້າຕ້ອງການ ແລະ ອ້າງອີງເຖິງການທົດສອບຈາກໄຟລ໌ dist-git yaml. ນອກນັ້ນ ຍັງມີເນມສະເປຊ (namespace) tests ພິເສດທີ່ອຸທິດໃຫ້ກັບການເກັບການທົດສອບການເຮັດວຽກຮ່ວມກັນຂອງ Fedora CI:

ໃຊ້ fedpkg ເພື່ອໂຄລນເຣໂປຊິທໍຣີຈາກເນມສະເປຊ tests ໄດ້ຢ່າງວ່ອງໄວ:

fedpkg clone tests/shell

tmt

ການເປີດໃຊ້ການທົດສອບຈາກເຣໂປຊິທໍຣີທາງໄກໂດຍໃຊ້ tmt ແມ່ນສາມາດເຮັດໄດ້ງ່າຍໆ:

discover:
    how: fmf
    url: https://src.fedoraproject.org/tests/shell.git

ເບິ່ງເອກະສານຂັ້ນຕອນການ discover ສຳລັບລາຍລະອຽດເພີ່ມເຕີມ.

ຕົວຢ່າງ

ນີ້ຄືບາງຕົວຢ່າງຈາກການນຳໃຊ້ຕົວຈິງ ບ່ອນທີ່ການແບ່ງປັນໂຄ້ດທົດສອບສາມາດເພີ່ມປະສິດທິພາບໃນໄລຍະຍາວໄດ້.

SELinux

ຫຼາຍໆຄອມໂພເນນຂອງ SELinux user space ແມ່ນໄດ້ແບ່ງປັນການທົດສອບຮ່ວມກັນໃນເຣໂປຊິທໍຣີການທົດສອບ selinux ອັນດຽວ:

Ruby

ອີກຕົວຢ່າງໜຶ່ງແມ່ນ Ruby: ດ້ວຍແພັກເກດປະມານ 80 ແພັກເກດທີ່ກ່ຽວຂ້ອງກັບ Ruby on Rails, ມັນຈະເປັນປະໂຫຍດ ແລະ ມີປະສິດທິພາບຫຼາຍ ຖ້າມີບ່ອນດຽວສຳລັບການທົດສອບການເຮັດວຽກຮ່ວມກັນ (integration tests) ເພື່ອກວດສອບວ່າເຟຣມເວີກ (framework) ຍັງເຮັດວຽກໄດ້ຢ່າງຖືກຕ້ອງຫຼັງຈາກອັບເດດແພັກເກດໃດໜຶ່ງເຫຼົ່ານີ້. ໃນທາງກັບກັນ, ການບຳລຸງຮັກສາການທົດສອບເຫຼົ່ານັ້ນໃນ 80 ເຣໂປຊິທໍຣີຈະເປັນວຽກທີ່ໜ້າເບື່ອໜ່າຍ.

ປັດຈຸບັນ ເຣໂປຊິທໍຣີ tests/ruby ທີ່ໃຊ້ຮ່ວມກັນ ໄດ້ເກັບການທົດສອບການເຮັດວຽກຮ່ວມກັນຂອງ ruby ທັງສາມຢ່າງນີ້:

  • systemtap-static-probes-in-ruby - ທົດສອບການນຳໃຊ້ systemtap api ຂອງ ruby

  • tls-minimal-version - ensure Ruby OpenSSL respects crypto-policies

  • run-basic-rails-application - ລັນແອັບພລິເຄຊັນ rails ແບບພື້ນຖານ

Shell

ມີຫຼາຍ Shell ທີ່ຈັດຕັ້ງປະຕິບັດຕາມຂໍ້ກຳນົດຂອງ POSIX:

  • bash

  • ksh

  • mksh

  • zsh

  • dash

ພວກມັນທັງໝົດລ້ວນແຕ່ມີການທົດສອບທີ່ຄືກັນໃນຫຼາຍໆສ່ວນ ແລະ ມັນບໍ່ມີເຫດຜົນທີ່ຈະສ້າງ ແລະ ບຳລຸງຮັກສາການທົດສອບທີ່ຄືກັນໃນຫ້າເຣໂປຊິທໍຣີທີ່ແຕກຕ່າງກັນ (+ ບຣານຊ໌ທີ່ເປັນໄປໄດ້).

ເຣໂປຊິທໍຣີການທົດສອບ Shell:

summary:
    Run relevant tests from the shell tests repository
discover:
    how: fmf
    url: https://src.fedoraproject.org/tests/shell
    filter: component:bash
execute:
    how: tmt
environment:
    PACKAGES: bash
    SH_BIN: bash

ເລີ່ມຕົ້ນ

ເພື່ອສ້າງເຣໂປຊິທໍຣີໃໝ່ໃນເນມສະເປຊ tests, ໃຫ້ໃຊ້ຄຳສັ່ງ request-tests-repo ຂອງ fedpkg. ຕົວຢ່າງ: ການສ້າງເຣໂປຊິທໍຣີການທົດສອບທີ່ໃຊ້ຮ່ວມກັນໃນຊື່ foo, ເຊິ່ງຈະສາມາດເຂົ້າເຖິງໄດ້ທີ່ https://src.fedoraproject.org/tests/foo.git

  • ຕັ້ງຄ່າການຢືນຢັນຕົວຕົນ (authentication) ໄປທີ່ pagure ຕາມຄຳແນະນຳໃນຄຳສັ່ງ help ຂອງ request-repo

    fedpkg request-repo -h
  • ສົ່ງຄຳຮ້ອງຂໍສ້າງເຣໂປຊິທໍຣີໃໝ່ພ້ອມກັບຄຳອະທິບາຍທີ່ເໝາະສົມ

    fedpkg request-tests-repo foo "Description of the repository"