αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ IntelliJ IDEA αž“αŸ…αž›αžΎ Jenkins

IntelliJ IDEA αžŸαž–αŸ’αžœαžαŸ’αž„αŸƒαž“αŸαŸ‡αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž€αžΌαžŠ Java αž‹αž·αžαž·αžœαž“αŸ’αžαž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹αž”αŸ†αž•αž»αžαžŠαŸ‚αž›αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž˜αžαŸ’αžαž—αžΆαž–αžšαž”αžŸαŸ‹αžœαžΆαž‘αž»αž€αž†αŸ’αž„αžΆαž™αž–αžΈ "αž’αžαžΈαžαž™αž»αž‘αŸ’αž’αž‡αž“" αžŠαžΌαž…αž‡αžΆ αžšαž…αž“αžΆαž”αŸαž‘αŸ’αž˜αž–αž·αž“αž·αžαŸ’αž™ ΠΈ Spotbugs. "αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™" αž‡αžΆαž…αŸ’αžšαžΎαž“αžšαž”αžŸαŸ‹αžœαžΆαž–αž·αž“αž·αžαŸ’αž™αž€αžΌαžŠαž€αŸ’αž“αž»αž„αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž•αŸ’αžŸαŸαž„αŸ— αž…αžΆαž”αŸ‹αž–αžΈαžšαž…αž“αžΆαž”αŸαž‘αŸ’αž˜αžŸαžšαžŸαŸαžšαž€αžΌαžŠαžšαž αžΌαžαžŠαž›αŸ‹αž€αŸ†αž αž»αžŸαž’αž˜αŸ’αž˜αžαžΆαŸ”

αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžŠαžšαžΆαž”αžŽαžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαžœαž·αž—αžΆαž‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒ IDE αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž“αŸ„αŸ‡αžœαžΆαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžαž·αž…αžαž½αž…αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαŸ” αž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αž αžαŸ’αžšαžΌαžœαžαŸ‚αž’αŸ’αžœαžΎ αž‡αžΆαž‡αŸ†αž αžΆαž“αžŠαŸ†αž”αžΌαž„αž“αŸƒαž€αžΆαžšαžŸαžΆαž„αžŸαž„αŸ‹αž”αŸ†αž–αž„αŸ‹ αž›αž‘αŸ’αž’αž•αž›αžšαž”αžŸαŸ‹αžœαžΆαž‚αž½αžšαž€αŸ†αžŽαžαŸ‹αž…αŸ’αžšαž€αž‚αž»αžŽαž—αžΆαž– αž αžΎαž™αž€αžΆαžšαžŸαžΆαž„αžŸαž„αŸ‹αž‚αž½αžšαžαŸ‚αž”αžšαžΆαž‡αŸαž™ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž…αŸ’αžšαž€αž‘αŸ’αžœαžΆαžšαž‚αž»αžŽαž—αžΆαž–αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŠαžΉαž„αžαžΆ TeamCity CI αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‡αžΆαž˜αž½αž™ IDEA αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž’αŸ’αž“αž€αž˜αž·αž“αž”αŸ’αžšαžΎ TeamCity αž€αŸαžŠαŸ„αž™ αž’αŸ’αž“αž€αž’αžΆαž…αžŸαžΆαž€αž›αŸ’αž”αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ IDEA αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ CI αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αžαŸ’αž‰αž»αŸ†αžŸαŸ’αž“αžΎαž±αŸ’αž™αž’αŸ’αž“αž€αž˜αžΎαž›αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαžΆαž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ IDEA Community Edition, Jenkins αž“αž·αž„ Warnings NG αŸ”

αž‡αŸ†αž αžΆαž“αž‘αžΈ 1. αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαžœαž·αž—αžΆαž‚αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžš αž“αž·αž„αž‘αž‘αž½αž›αž”αžΆαž“αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž˜αž½αž™αŸ”

αžŠαŸ†αž”αžΌαž„ αž‚αŸ†αž“αž·αžαž“αŸƒαž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš IDE (αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžš!) αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’ CI αžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž€αŸ’αžšαžΆαž αŸ’αžœαž·αž€αž’αžΆαž…αž˜αžΎαž›αž‘αŸ…αž‚αž½αžšαž±αŸ’αž™αžŸαž„αŸ’αžŸαŸαž™ αž“αž·αž„αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαžαŸ’αž›αžΆαŸ†αž„αžŽαžΆαžŸαŸ‹αŸ” αž‡αžΆαžŸαŸ†αžŽαžΆαž„αž›αŸ’αž’ αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ IDEA αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž€αžΆαžšαž’αŸ’αžœαžΎαž‘αŸ’αžšαž„αŸ‹αž‘αŸ’αžšαžΆαž™αž€αžΌαžŠ ΠΈ αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ αž–αžΈαž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš IDEA αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αž“αŸαŸ‡ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαž„αž€αŸ’αžšαžΆαž αŸ’αžœαž·αž€αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžšαž‘αŸ αž αžΎαž™αž€αž·αž…αŸ’αž…αž€αžΆαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ‚αž›αž’αžαŸ’αžαž”αž‘αŸ”

αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸ’αž‚αŸ’αžšαžΈαž” bin/inspect.sh αž–αžΈαžαžαžŠαŸ†αž‘αžΎαž„ IDEA αŸ” αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž‚αžΊαŸ–

  • αž•αŸ’αž›αžΌαžœαž–αŸαž‰αž›αŸαž‰αž‘αŸ…αž€αžΆαž“αŸ‹αž‚αž˜αŸ’αžšαŸ„αž„ (αžŸαžΆαž…αŸ‹αž‰αžΆαžαž·αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžš)
  • αž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹αž―αž€αžŸαžΆαžš .xml αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž’αž’αž·αž€αžΆαžšαž€αž·αž…αŸ’αž… (αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αž€αŸ’αž“αž»αž„ .idea/inspectionProfiles/Project_Default.xml),
  • αž•αŸ’αž›αžΌαžœαž–αŸαž‰αž‘αŸ…αž€αžΆαž“αŸ‹αžαžαžŠαŸ‚αž›αž―αž€αžŸαžΆαžš .xml αžŠαŸ‚αž›αž˜αžΆαž“αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαžŸαŸ’αžαžΈαž–αžΈαž›αž‘αŸ’αž’αž•αž›αžœαž·αž—αžΆαž‚αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αŸ”

αž›αžΎαžŸβ€‹αž–αžΈβ€‹αž“αŸαŸ‡β€‹αž‘αŸ€αžβ€‹αž‚αŸβ€‹αžšαŸ†αž–αžΉαž„β€‹αžαžΆβ€‹αž“αžΉαž„β€‹αž˜αžΆαž“β€‹

  • αž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹ Java SDK αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸ…αž€αŸ’αž“αž»αž„ IDE αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αŸαž€αžΆαžšαžœαž·αž—αžΆαž‚αž“αžΉαž„αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸαŸ” αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ jdk.table.xml αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαž€αž› IDEA αŸ” αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαž€αž› IDEA αžαŸ’αž›αž½αž“αžœαžΆαž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž•αŸ’αž‘αŸ‡αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‘αžΈαžαžΆαŸ†αž„αž“αŸαŸ‡αŸ” αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹ αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš idea.properties.
  • αž‚αž˜αŸ’αžšαŸ„αž„αžŠαŸ‚αž›αž”αžΆαž“αžœαž·αž—αžΆαž‚αžαŸ’αžšαžΌαžœαžαŸ‚αž‡αžΆαž‚αž˜αŸ’αžšαŸ„αž„ IDEA αžŠαŸ‚αž›αž˜αžΆαž“αžŸαž»αž–αž›αž—αžΆαž– αžŠαŸ‚αž›αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž’αž“αž»αžœαžαŸ’αžαž―αž€αžŸαžΆαžšαž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžΎαž–αžΎαž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αŸ†αžŽαŸ‚ αž–αŸ„αž›αž‚αžΊαŸ–
    • .idea/inspectionProfiles/Project_Default.xml - αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚ αž–αž½αž€αžœαžΆαž…αŸ’αž”αžΆαžŸαŸ‹αž‡αžΆαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžšαŸ”
    • .idea/modules.xml - αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αŸ αž™αžΎαž„αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž€αŸ†αž αž»αžŸ 'αž‚αž˜αŸ’αžšαŸ„αž„αž“αŸαŸ‡αž˜αž·αž“αž˜αžΆαž“αž˜αŸ‰αžΌαžŒαž»αž›',
    • .idea/misc.xml - αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αŸ αž™αžΎαž„αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž€αŸ†αž αž»αžŸ 'JDK αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αž˜αŸ’αžšαŸ„αž„αž“αŸαŸ‡',
    • *.iml-Ρ„Π°ΠΉΠ»Ρ‹ - αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αŸ αž™αžΎαž„αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž€αŸ†αž αž»αžŸαž’αŸ†αž–αžΈ JDK αžŠαŸ‚αž›αž˜αž·αž“αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΌαžŒαž»αž›αŸ”

αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž―αž€αžŸαžΆαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αžΌαž›αž€αŸ’αž“αž»αž„ .gitignoreαž–αž½αž€αžœαžΆαž˜αž·αž“αž˜αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžŽαžΆαž˜αž½αž™αž…αŸ†αž–αŸ„αŸ‡αž”αžšαž·αžŸαŸ’αžαžΆαž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž‘αŸ - αž˜αž·αž“αžŠαžΌαž…αž§αž‘αžΆαž αžšαžŽαŸ αž―αž€αžŸαžΆαžš workspace.xmlαžŠαŸ‚αž›αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž–αŸαžαŸŒαž˜αžΆαž“αž”αŸ‚αž”αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‘αž»αž€ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž’αŸ’αžœαžΎαžœαžΆαž‘αŸαŸ”

αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž‚αžΊαžαŸ’αžšαžΌαžœαžœαŸαž…αžαŸ’αž…αž”αŸ‹ JDK αžšαž½αž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„ IDEA Community Edition αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžšαž˜αž½αž™αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž…αžŠαžΎαž˜αŸ’αž”αžΈ "αžŠαžΆαž€αŸ‹" αž›αžΎαž‚αž˜αŸ’αžšαŸ„αž„αžŠαŸ‚αž›αž”αžΆαž“αžœαž·αž—αžΆαž‚αŸ” αžαŸ„αŸ‡αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž’αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αžŸαž˜αžšαž˜αŸ’αž™ αž αžΎαž™αž“αŸαŸ‡αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž› Dockerfile αžšαž”αžŸαŸ‹αž™αžΎαž„αž“αžΉαž„αž˜αžΆαž“αŸˆ

Dockerfile

FROM openkbs/ubuntu-bionic-jdk-mvn-py3

ARG INTELLIJ_VERSION="ideaIC-2019.1.1"

ARG INTELLIJ_IDE_TAR=${INTELLIJ_VERSION}.tar.gz

ENV IDEA_PROJECT_DIR="/var/project"

WORKDIR /opt

COPY jdk.table.xml /etc/idea/config/options/

RUN wget https://download-cf.jetbrains.com/idea/${INTELLIJ_IDE_TAR} && 
    tar xzf ${INTELLIJ_IDE_TAR} && 
    tar tzf ${INTELLIJ_IDE_TAR} | head -1 | sed -e 's//.*//' | xargs -I{} ln -s {} idea && 
    rm ${INTELLIJ_IDE_TAR} && 
    echo idea.config.path=/etc/idea/config >> idea/bin/idea.properties && 
    chmod -R 777 /etc/idea

CMD idea/bin/inspect.sh ${IDEA_PROJECT_DIR} ${IDEA_PROJECT_DIR}/.idea/inspectionProfiles/Project_Default.xml ${IDEA_PROJECT_DIR}/target/idea_inspections -v2

αžŠαŸ„αž™αž”αŸ’αžšαžΎαž‡αž˜αŸ’αžšαžΎαžŸ idea.config.path αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αžαŸ†αž±αŸ’αž™ IDEA αžšαž€αž˜αžΎαž›αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŸαž€αž›αžšαž”αžŸαŸ‹αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž―αž€αžŸαžΆαžš /etc/ideaαžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αžαžαž•αŸ’αž‘αŸ‡αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ CI αž‚αžΊαž‡αžΆαžšαžΏαž„αž˜αž·αž“αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹ αž αžΎαž™αž‡αžΆαžšαžΏαž™αŸ—αž’αžœαžαŸ’αžαž˜αžΆαž“αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αŸ”

αž“αŸαŸ‡αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž…αž˜αŸ’αž›αž„αž‘αŸ…αž’αž»αž„αž“αŸ„αŸ‡αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αŸ– jdk.table.xmlαžŠαŸ‚αž›αž˜αžΆαž“αž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹ OpenJDK αžŠαŸ‚αž›αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžš (αž―αž€αžŸαžΆαžšαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž–αžΈαžαžαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹ IDEA αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž™αž€αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“):

jdk.table.xml

<application>
 <component name="ProjectJdkTable">
   <jdk version="2">
     <name value="1.8" />
     <type value="JavaSDK" />
     <version value="1.8" />
     <homePath value="/usr/java" />
     <roots>
       <annotationsPath>
         <root type="composite">
           <root url="jar://$APPLICATION_HOME_DIR$/lib/jdkAnnotations.jar!/" type="simple" />
         </root>
       </annotationsPath>
       <classPath>
         <root type="composite">
           <root url="jar:///usr/java/jre/lib/charsets.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/deploy.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/ext/access-bridge-64.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/ext/cldrdata.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/ext/dnsns.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/ext/jaccess.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/ext/jfxrt.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/ext/localedata.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/ext/nashorn.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/ext/sunec.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/ext/sunjce_provider.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/ext/sunmscapi.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/ext/sunpkcs11.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/ext/zipfs.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/javaws.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/jce.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/jfr.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/jfxswt.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/jsse.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/management-agent.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/plugin.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/resources.jar!/" type="simple" />
           <root url="jar:///usr/java/jre/lib/rt.jar!/" type="simple" />
         </root>
       </classPath>
     </roots>
     <additional />
   </jdk>
 </component>
</application>

αžšαžΌαž”αž—αžΆαž–αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹ αž˜αžΆαž“αž“αŸ…αž›αžΎ Docker Hub.

αž˜αž»αž“αž–αŸαž›αž”αž“αŸ’αž αž™αžΎαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚ IDEA αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžšαŸ–

docker run --rm -v <ΠΏΡƒΡ‚ΡŒ/ΠΊ/Π²Π°ΡˆΠ΅ΠΌΡƒ/ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ>:/var/project inponomarev/intellij-idea-analyzer

αž€αžΆαžšαžœαž·αž—αžΆαž‚αž‚αž½αžšαžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž‡αŸ„αž‚αž‡αŸαž™ αž αžΎαž™αž―αž€αžŸαžΆαžš .xml αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž˜αžΆαž“αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαžœαž·αž—αžΆαž‚αž‚αž½αžšαžαŸ‚αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαžšαž„ target/idea_inspectionsαŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž›αŸ‚αž„αž˜αžΆαž“αž€αžΆαžšαž„αžΏαž„αž†αŸ’αž„αž›αŸ‹αžŠαŸ‚αž›αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚ IDEA αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ‚αž˜αŸ’αž“αžΆαž€αŸ‹αž―αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸ CI αžŽαžΆαž˜αž½αž™ αž αžΎαž™αž™αžΎαž„αž”αž“αŸ’αžαž‘αŸ…αž‡αŸ†αž αžΆαž“αž‘αžΈαž–αžΈαžšαŸ”

αž‡αŸ†αž αžΆαž“ 2. αž”αž„αŸ’αž αžΆαž‰ αž“αž·αž„αžœαž·αž—αžΆαž‚αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸ

αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‡αžΆαž‘αž˜αŸ’αžšαž„αŸ‹αž―αž€αžŸαžΆαžš .xml αž‚αžΊαž–αžΆαž€αŸ‹αž€αžŽαŸ’αžαžΆαž›αž“αŸƒαžŸαž˜αžšαž—αžΌαž˜αž·αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž’αžΆαž…αž’αžΆαž“αž”αžΆαž“αžŠαŸ„αž™αž˜αž“αž»αžŸαŸ’αžŸαŸ” αž αžΎαž™αž›αž‘αŸ’αž’αž•αž›αžšαž”αžŸαŸ‹αžœαžΆαž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž…αŸ’αžšαž€αž‚αž»αžŽαž—αžΆαž–αž•αž„αžŠαŸ‚αžš - αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αžŽαžαŸ‹αžαžΆαžαžΎαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαŸ‚αž›αž”αžΆαž“αž‘αž‘αž½αž›αž™αž€αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž¬αž”αžšαžΆαž‡αŸαž™αž™αŸ„αž„αž‘αŸ…αžαžΆαž˜αž›αž€αŸ’αžαžŽαŸˆαžœαž·αž“αž·αž…αŸ’αž†αŸαž™αž‚αž»αžŽαž—αžΆαž–αŸ”

αž“αŸαŸ‡αž“αžΉαž„αž‡αž½αž™αž™αžΎαž„ Jenkins Warnings αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ NGαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž“αŸ…αž€αŸ’αž“αž»αž„αžαŸ‚αž˜αž€αžšαžΆ 2019 αŸ” αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžœαžαŸ’αžαž˜αžΆαž“αžšαž”αžŸαŸ‹αžœαžΆ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž”αž»αž‚αŸ’αž‚αž›αž‡αžΆαž…αŸ’αžšαžΎαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž›αž‘αŸ’αž’αž•αž›αž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„ Jenkins (CheckStyle, FindBugs, PMD αŸ”αž›αŸ”) αž₯αž‘αžΌαžœαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαž›αŸ‚αž„αž”αŸ’αžšαžΎαž αžΎαž™αŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž˜αžΆαž“αž–αžΈαžšαž•αŸ’αž“αŸ‚αž€αŸ–

  • αž’αŸ’αž“αž€αž”αŸ’αžšαž˜αžΌαž›αžŸαžΆαžšαž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αž‡αžΆαž…αŸ’αžšαžΎαž“ (αž”αž‰αŸ’αž‡αžΈαž–αŸαž‰αž›αŸαž‰ αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‘αžΆαŸ†αž„αž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αžŸαŸ’αž‚αžΆαž›αŸ‹αž–αžΈαžœαž·αž‘αŸ’αž™αžΆαžŸαžΆαžŸαŸ’αžαŸ’αžšαž–αžΈ AcuCobol αž‘αŸ… ZPT Lint)
  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αžΎαž›αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαžαŸ‚αž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž½αž€αž‚αŸαŸ”

αž”αž‰αŸ’αž‡αžΈαž“αŸƒαž’αŸ’αžœαžΈαžŠαŸ‚αž› Warnings NG αž’αžΆαž…αžœαž·αž—αžΆαž‚αžšαž½αž˜αž˜αžΆαž“αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž–αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„ Java αž“αž·αž„αž€αžΆαžšαž–αŸ’αžšαž˜αžΆαž“αž–αžΈαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· MavenαŸ– αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž–αž½αž€αžœαžΆαž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž₯αžαžˆαž”αŸ‹αžˆαžšαž€αŸαžŠαŸ„αž™ αž–αž½αž€αžœαžΆαž€αž˜αŸ’αžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αžœαž·αž—αžΆαž‚αž‡αžΆαž–αž·αžŸαŸαžŸαžŽαžΆαžŸαŸ‹αŸ” αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαžšαž”αžŸαŸ‹ IntelliJ IDEA αž€αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αžΌαž›αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαž‘αž˜αŸ’αžšαž„αŸ‹αžŠαŸ‚αž›αž‘αž‘αž½αž›αžŸαŸ’αž‚αžΆαž›αŸ‹αž•αž„αžŠαŸ‚αžšαŸ”

αžŠαŸ„αž™αžŸαžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž‚αžΊαžαŸ’αž˜αžΈ αž–αžΈαžŠαŸ†αž”αžΌαž„αžœαžΆαž˜αžΆαž“αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž›αŸ’αž’αž‡αžΆαž˜αž½αž™ Jenkins PipelineαŸ” αž‡αŸ†αž αžΆαž“β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αžŠαŸ„αž™β€‹αž˜αžΆαž“β€‹αž€αžΆαžšβ€‹αž…αžΌαž›β€‹αžšαž½αž˜β€‹αžšαž”αžŸαŸ‹β€‹αžœαžΆβ€‹αž“αžΉαž„β€‹αž˜αžΎαž›β€‹αž‘αŸ…β€‹αžŠαžΌαž…β€‹αž“αŸαŸ‡ (αž™αžΎαž„β€‹αž‚αŸ’αžšαžΆαž“αŸ‹β€‹αžαŸ‚β€‹αž”αŸ’αžšαžΆαž”αŸ‹β€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž‡αŸ†αž“αž½αž™β€‹αžαžΆβ€‹αžαžΎβ€‹αž‘αž˜αŸ’αžšαž„αŸ‹β€‹αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸβ€‹αžŽαžΆβ€‹αžŠαŸ‚αž›β€‹αž™αžΎαž„β€‹αž‘αž‘αž½αž›β€‹αžŸαŸ’αž‚αžΆαž›αŸ‹ αž“αž·αž„β€‹αž―αž€αžŸαžΆαžšβ€‹αžŽαžΆβ€‹αžαŸ’αž›αŸ‡β€‹αž‚αž½αžšβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžŸαŸ’αž€αŸαž“)αŸ–

stage ('Static analysis'){
    sh 'rm -rf target/idea_inspections'
    docker.image('inponomarev/intellij-idea-analyzer').inside {
       sh '/opt/idea/bin/inspect.sh $WORKSPACE $WORKSPACE/.idea/inspectionProfiles/Project_Default.xml $WORKSPACE/target/idea_inspections -v2'
    }
    recordIssues(
       tools: [ideaInspection(pattern: 'target/idea_inspections/*.xml')]
    )
}

αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡αŸ–

αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ IntelliJ IDEA αž“αŸ…αž›αžΎ Jenkins

αž„αžΆαž™αžŸαŸ’αžšαž½αž› αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž“αŸαŸ‡αž‚αžΊαž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž‡αžΆαžŸαž€αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αžŠαŸ‚αž›αž‘αž‘αž½αž›αžŸαŸ’αž‚αžΆαž›αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αžœαžΆαž˜αžΆαž“αžŠαŸ’αž™αžΆαž€αŸ’αžšαžΆαž˜αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž“αŸƒαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αžαžΆαž˜αž”αŸ’αžšαž—αŸαž‘ αž“αž·αž„αž€αŸ’αžšαžΆαž αŸ’αžœαž“αŸƒαžŸαž€αŸ’αžŠαžΆαž“αž»αž–αž›αž“αŸƒαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαžšαž€αžƒαžΎαž‰αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αžšαž αŸαžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž‘αžΆαž…αžαŸ’αžšαž„αŸ’αž‚αž“αŸ…αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸƒαž‘αŸ†αž–αŸαžšαŸ” αžšαžΏαž„αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αžŠαŸ‚αž›αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ IDEA αž‚αžΊαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαžšαž€αž˜αžΎαž›αž€αžΌαžŠαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ Jenkins (αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž§αž‘αžΆαž αžšαžŽαŸ Checkstyle αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž“αŸαŸ‡αž’αžΆαž…αž’αŸ’αžœαžΎαžœαžΆαž”αžΆαž“αž™αŸ‰αžΆαž„αžŸαŸ’αžšαžŸαŸ‹αžŸαŸ’αž’αžΆαž)αŸ” αžœαžΆαž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž‡αžΆαž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αŸ†αž αž»αžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‰αŸ‚αž€αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸ IDEA αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž‡αž½αžŸαž‡αž»αž›αŸ”

αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαžšαž”αžŸαŸ‹ Warnings NG αž‚αžΊαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž€αžΆαžšαžšαž€αžƒαžΎαž‰αž–αžΈαž”αŸ’αžšαž—αž–αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž˜αž½αž™ αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Quality Gates αžšαž½αž˜αž‘αžΆαŸ†αž„ "ratchet" αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆαž‡αžΆαž―αž€αžŸαžΆαžšαž™αŸ„αž„αŸ” αž˜αžΆαž“αž―αž€αžŸαžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Quality Gates αž˜αž½αž™αž…αŸ†αž“αž½αž“ αž“αŸ…αž‘αžΈαž“αŸαŸ‡ - αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™αžœαžΆαž˜αž·αž“αž–αŸαž‰αž›αŸαž‰αž‘αŸ αž αžΎαž™αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž˜αžΎαž›αž€αžΌαžŠαž”αŸ’αžšαž—αž–αŸ” αž˜αŸ‰αŸ’αž™αžΆαž„αžœαž·αž‰αž‘αŸ€αž αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž›αžΎαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž€αžΎαžαž‘αžΎαž„ β€œαž€αž“αŸ’αžαŸ’αžšαž€β€ αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž―αž€αžšαžΆαž‡αŸ’αž™ (αžŸαžΌαž˜αž˜αžΎαž›αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αž”αŸ’αžšαž€αžΆαžŸαž˜αž»αž“αŸ” αž’αŸ†αž–αžΈαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž“αŸαŸ‡) αŸ”

αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

αž˜αž»αž“αž“αžΉαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžšαŸ€αž”αž…αŸ†αžŸαž˜αŸ’αž—αžΆαžšαŸˆαž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžŸαŸ’αžœαŸ‚αž„αžšαž€αŸ– αžαžΎαž˜αžΆαž“αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αž”αžΆαž“αžŸαžšαžŸαŸαžšαž›αžΎαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž“αŸαŸ‡αž›αžΎHabre αžšαž½αž…αž αžΎαž™αž¬αž“αŸ…? αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžαŸ‚αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αž”αž‘αžŸαž˜αŸ’αž—αžΆαžŸαž“αŸαž†αŸ’αž“αžΆαŸ† ្០៑៧ с αž‘αžΆαž“αžΈαžŠαŸ‚αž›αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž‚αžΆαžαŸ‹αž“αž·αž™αžΆαž™αžαžΆ:

αžαžΆαž˜αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αžŠαžΉαž„ αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‡αžΆαž˜αž½αž™ Jenkins αž¬αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™ maven […] αž‡αžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸ αž’αŸ’αž“αž€αž…αžΌαž›αž…αž·αžαŸ’αžαžŽαžΆαž˜αž½αž™αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž˜αž·αžαŸ’αžαž‡αžΆαž˜αž½αž™ IDEA Community Edition αž“αž·αž„ Jenkins αž˜αž“αž»αžŸαŸ’αžŸαž‡αžΆαž…αŸ’αžšαžΎαž“αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž–αžΈαžšαžΏαž„αž“αŸαŸ‡αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

αž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαžŽαžΆαžŸαŸ‹ αž–αžΈαžšαž†αŸ’αž“αžΆαŸ†αž€αŸ’αžšαŸ„αž™αž˜αž€ αž™αžΎαž„αž˜αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Warnings NG Plugin αž αžΎαž™αž‘αžΈαž”αŸ†αž•αž»αžαž˜αž·αžαŸ’αžαž—αžΆαž–αž“αŸαŸ‡αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž•αž›αž αžΎαž™!

αž”αŸ’αžšαž—αž–: www.habr.com

αž‘αž·αž‰αž€αžΆαžšαž”αž„αŸ’αž αŸ„αŸ‡αžŠαŸ‚αž›αž’αžΆαž…αž‘αž»αž€αž…αž·αžαŸ’αžαž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαž€αžΆαžšαž–αžΆαžš DDoS, αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ VPS VDS πŸ”₯ αž‘αž·αž‰αžŸαŸαžœαžΆαž”αž„αŸ’αž αŸ„αŸ‡αž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž’αžΆαž…αž‘αž»αž€αž…αž·αžαŸ’αžαž”αžΆαž“αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αžΆαžšαž–αžΆαžš DDoS αž“αž·αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ VPS VDS | ProHoster