[Stepik, Evgeniy Lestopadov] Jenkins Π² ΡΠ°Π±ΠΎΡΠ΅ (2025)
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΠ»Ρ ΠΊΠΎΠ³ΠΎ ΡΡΠΎΡ ΠΊΡΡΡ:
ΠΠ»Ρ Π²ΡΠ΅Ρ ΠΆΠ΅Π»Π°ΡΡΠΈΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Jenkins. Π₯ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΡΡΡΠΎΠΈΡΡ CI/CD pipeline Π² Jenkins.
Π ΠΊΡΡΡΠ΅
1. ΠΠ΅ΡΠ²Π°Ρ ΡΠ°ΡΡΡ Π΄Π°Π΅Ρ Π²Π°ΠΌ Π±Π°Π·ΠΎΠ²ΡΠ΅ Π·Π½Π°Π½ΠΈΡ ΠΎΠ± ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Jenkins, Π·Π΄Π΅ΡΡ ΠΌΡ Ρ Π²Π°ΠΌΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π²ΠΈΠ΄Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π½Π°ΡΡΠΈΠΌΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² Jenkins, Π½Π°ΡΠ½Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΉ Jenkins Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°ΠΌΠΈ.
2. ΠΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΡΡΡΠ° ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Jenkins Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° "infrastructure as code". Π ΡΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΡΡΡΠ° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΠ·ΡΡΠ°ΡΡ Jenkins Pipeline, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Jenkins Pipeline. Π£Π·Π½Π°Π΅ΠΌ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Scripted pipeline ΠΈ Declarative pipeline. ΠΠ·ΡΡΠΈΠΌ ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ groovy ΡΠΊΡΠΈΠΏΡΡ Π½Π° Jenkins. Π ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΡ Jenkins Pipeline ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ VSCode Ρ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ. Π Π°Π·Π±Π΅ΡΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² Jenkins Pipeline.
3. Π ΡΡΠ΅ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΠ·ΡΡΠ°ΡΡ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Groovy, Π²Π΅Π΄Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π΄Π»Ρ Jenkins Pipeline. ΠΠ°Π½Π½Π°Ρ ΡΠ°ΡΡΡ ΠΊΡΡΡΠ° ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ Π²ΡΠ΅ΠΌ ΠΊΡΠΎ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ CI/CD ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Jenkins Pipeline.
Π ΠΊΡΡΡ Π²Ρ ΠΎΠ΄ΡΡ
36 ΡΡΠΎΠΊΠΎΠ²
9 ΡΠ°ΡΠΎΠ² 54 ΠΌΠΈΠ½ΡΡΡ Π²ΠΈΠ΄Π΅ΠΎ
21 ΡΠ΅ΡΡ
Π‘ΠΏΠΎΠΉΠ»Π΅Ρ:
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊΡΡΡΠ°
Jenkins: ΠΡΠ½ΠΎΠ²Ρ
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠ΅ΠΏΡΠ΅ΡΡΠ²Π½Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΈ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½Π°Ρ ΠΏΠΎΡΡΠ°Π²ΠΊΠ° - CI / CD
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅
Jenkins: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅
Manage Jenkins - Base
Jenkins: Plugins
Jenkins: Π’ΠΈΠΏΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²
Jenkins: Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Freestyle project
Jenkins: Backup & Restore
Jenkins: Freestyle project (git, mvn, checkstyle)
Jenkins: Freestyle project (git, mvn, junit, sonarqube)
Jenkins: ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½Π°Ρ ΡΠ±ΠΎΡΠΊΠ°
Jenkins: ΠΡΠΎΠ΅ΠΊΡΡ Ρ ΡΡΠΈΠ³Π³Π΅ΡΠ°ΠΌΠΈ
Jenkins: Freestyle & JFrog Artifactory (deploy to tomcat)
Jenkins: Freestyle project - Email Notifications
Jenkins: CLI & Rest Api
Jenkins: Freestyle & Nexus3 (deploy to tomcat)
Jenkins Pipeline
Jenkins Pipeline: ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Jenkins Pipeline: Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ - Π§Π°ΡΡΡ 1.
Jenkins Pipeline: Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ - Π§Π°ΡΡΡ 2.
Jenkins Pipeline: Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ - Π§Π°ΡΡΡ 3.
Jenkins Pipeline: Shared lib
Jenkins Pipeline: ΠΠ΄Π΅ ΠΈΡΠΊΠ°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
Jenkins Pipeline: Π£ΡΠΊΠΎΡΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ VSCode & Jenkins
Groovy lang
Groovy: ΠΠ½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ
Groovy: ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
Groovy: Π£ΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
Groovy: Π¦ΠΈΠΊΠ»Ρ
Groovy: Π‘ΡΡΠΎΠΊΠΈ
Groovy: Ranges & Lists & Maps
Groovy: Dates and Times
Groovy: ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ
Groovy: ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΉ Π² ΠΊΠΎΠ΄Π΅ assert
Groovy: ΠΠ΅ΡΠΎΠ΄Ρ
Groovy: ΠΠΠ
Groovy: Π Π°Π±ΠΎΡΠ° Ρ XML, JSON, CSV, YAML
ΠΠ²ΡΠΎΡ: Evgeniy Lestopadov
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅:
ΠΠ»Ρ ΠΊΠΎΠ³ΠΎ ΡΡΠΎΡ ΠΊΡΡΡ:
ΠΠ»Ρ Π²ΡΠ΅Ρ ΠΆΠ΅Π»Π°ΡΡΠΈΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Jenkins. Π₯ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΡΡΡΠΎΠΈΡΡ CI/CD pipeline Π² Jenkins.
Π ΠΊΡΡΡΠ΅
1. ΠΠ΅ΡΠ²Π°Ρ ΡΠ°ΡΡΡ Π΄Π°Π΅Ρ Π²Π°ΠΌ Π±Π°Π·ΠΎΠ²ΡΠ΅ Π·Π½Π°Π½ΠΈΡ ΠΎΠ± ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Jenkins, Π·Π΄Π΅ΡΡ ΠΌΡ Ρ Π²Π°ΠΌΠΈ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π²ΠΈΠ΄Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π½Π°ΡΡΠΈΠΌΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² Jenkins, Π½Π°ΡΠ½Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΉ Jenkins Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°ΠΌΠΈ.
2. ΠΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΡΡΡΠ° ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Jenkins Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° "infrastructure as code". Π ΡΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΡΡΡΠ° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΠ·ΡΡΠ°ΡΡ Jenkins Pipeline, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Jenkins Pipeline. Π£Π·Π½Π°Π΅ΠΌ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Scripted pipeline ΠΈ Declarative pipeline. ΠΠ·ΡΡΠΈΠΌ ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ groovy ΡΠΊΡΠΈΠΏΡΡ Π½Π° Jenkins. Π ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΊΠΎΡΠΈΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΡ Jenkins Pipeline ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ VSCode Ρ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ. Π Π°Π·Π±Π΅ΡΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² Jenkins Pipeline.
3. Π ΡΡΠ΅ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΠ·ΡΡΠ°ΡΡ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Groovy, Π²Π΅Π΄Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π΄Π»Ρ Jenkins Pipeline. ΠΠ°Π½Π½Π°Ρ ΡΠ°ΡΡΡ ΠΊΡΡΡΠ° ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ Π²ΡΠ΅ΠΌ ΠΊΡΠΎ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ CI/CD ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Jenkins Pipeline.
Π ΠΊΡΡΡ Π²Ρ ΠΎΠ΄ΡΡ
36 ΡΡΠΎΠΊΠΎΠ²
9 ΡΠ°ΡΠΎΠ² 54 ΠΌΠΈΠ½ΡΡΡ Π²ΠΈΠ΄Π΅ΠΎ
21 ΡΠ΅ΡΡ
Π‘ΠΏΠΎΠΉΠ»Π΅Ρ:
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊΡΡΡΠ°
Jenkins: ΠΡΠ½ΠΎΠ²Ρ
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠ΅ΠΏΡΠ΅ΡΡΠ²Π½Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΈ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½Π°Ρ ΠΏΠΎΡΡΠ°Π²ΠΊΠ° - CI / CD
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅
Jenkins: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅
Manage Jenkins - Base
Jenkins: Plugins
Jenkins: Π’ΠΈΠΏΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²
Jenkins: Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Freestyle project
Jenkins: Backup & Restore
Jenkins: Freestyle project (git, mvn, checkstyle)
Jenkins: Freestyle project (git, mvn, junit, sonarqube)
Jenkins: ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½Π°Ρ ΡΠ±ΠΎΡΠΊΠ°
Jenkins: ΠΡΠΎΠ΅ΠΊΡΡ Ρ ΡΡΠΈΠ³Π³Π΅ΡΠ°ΠΌΠΈ
Jenkins: Freestyle & JFrog Artifactory (deploy to tomcat)
Jenkins: Freestyle project - Email Notifications
Jenkins: CLI & Rest Api
Jenkins: Freestyle & Nexus3 (deploy to tomcat)
Jenkins Pipeline
Jenkins Pipeline: ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Jenkins Pipeline: Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ - Π§Π°ΡΡΡ 1.
Jenkins Pipeline: Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ - Π§Π°ΡΡΡ 2.
Jenkins Pipeline: Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ - Π§Π°ΡΡΡ 3.
Jenkins Pipeline: Shared lib
Jenkins Pipeline: ΠΠ΄Π΅ ΠΈΡΠΊΠ°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
Jenkins Pipeline: Π£ΡΠΊΠΎΡΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ VSCode & Jenkins
Groovy lang
Groovy: ΠΠ½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ
Groovy: ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
Groovy: Π£ΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
Groovy: Π¦ΠΈΠΊΠ»Ρ
Groovy: Π‘ΡΡΠΎΠΊΠΈ
Groovy: Ranges & Lists & Maps
Groovy: Dates and Times
Groovy: ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ
Groovy: ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΉ Π² ΠΊΠΎΠ΄Π΅ assert
Groovy: ΠΠ΅ΡΠΎΠ΄Ρ
Groovy: ΠΠΠ
Groovy: Π Π°Π±ΠΎΡΠ° Ρ XML, JSON, CSV, YAML
ΠΠ²ΡΠΎΡ: Evgeniy Lestopadov
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅:
favorite
0
star
0
