"Nuances" de usar TeamCity

Cenário







Olá a todos.







O artigo foi escrito em um estilo simples de "DevOps para donas de casa" das mesmas donas de casa. Ele descreverá quais surpresas você pode encontrar ao configurar um projeto no TeamCity. Também darei recomendações sobre como esses problemas podem ser contornados.







O que segue é baseado em meus dois anos de experiência configurando builds do TeamCity, lendo relatórios de bugs e trocando opiniões com colegas no chão de fábrica. Não pretendo ser a verdade suprema, uma vez que a abordagem SDD (Stackoverflow Driven Development) foi usada principalmente no trabalho.







Uma ajudinha:







  • TeamCity — CI (Continous Integration) . "" Gitlab CI, Github Actions .
  • (Project) — , . TeamCity ->-> .
  • (Build) — . " ", " ", " ". .
  • (Build step) — " " "runner type". Bash , Docker .


TeamCity :







  • ~30 , Bash, Ansible Python.
  • Android , Web , Docker, k8s . , , .
  • , Kotlin DSL ( ).


, . "".







1



( ). : , git , cron . .







: . 2008 .







, : . . 1 , 1 . , . .







, build chain ( ). , .







2 Build chain or not —



( + ) build chain. , . , ?







: ( ). . , ( ). , .







, ? , . — . , , , . , "" , ( , ), .







, "" , , : . . : , .







3



: , build chain. , . "" : ? .







3*N , . , , . "", . N , . , , . , , .







, , YAML Developer'.







4



Kotlin DSL ( , ). , : , ?







: " ". : ( ).







- , . — Kotlin DSL.







: / , . , - ID , .







5 TeamCity API



"" 4 DevOps. TeamCity , ("Deployment Frequency" "Lead Time for Changes").







API , . , - , , . , "Assign investigation", . .







, API — build chain - "" . . Python . .







6 Bash



, :







./command_1.sh # always fail

ls # always success
      
      





. :







./command_1.sh # always fail

if [ $? -ne 0 ]; then
  echo "##teamcity[buildProblem description='Build failed']"
fi

ls # always success
      
      





, ( "Execute step"). , Bash .







7



TeamCity -, API . , *



. : . echo



— . :







cat > constants.json <<- EOM
{
    "key": "%value%"
}
EOM
      
      





, , . Python , , JSON. ? , : JSON, , TeamCity. , : JSON. JSON TeamCity . JSON , .







8



. ( Kotlin DSL + TeamCity API), . . ( Firefox Network).









    • load: 9.87 s
    • DOMContentLoaded: 4.92 s
    • Finish: 34.39 s
    • Size/transferred size of all requests: 10.69 MB / 2.42 MB
    • Requests: 345


    • load: 4.59 s
    • DOMContentLoaded: 1.27 s
    • Finish: 27.42 s
    • Size/transferred size of all requests: 11.53 MB / 2.23 MB
    • Requests: 120


Finish — . . , ?







9



. Overview. . 99% . ( -) — ", stderr



", ", stderr



". Ansible - "WARNING: Deprecation setting...". TeamCity. .







10



, (Build agents). TeamCity master , , . (), TeamCity .







— . - , , . , - JAVA_HOME



. . . - , . ( TeamCity "").







— , . , "". , . . " !" — . : build chain? , , , . , "Run build on the same agent". , ?







— . (, root



, ). - , . 90% — print("Hello, World!")



.







( ). , . " — ".








All Articles