Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Как перестать говорить "Ой, я забыл"

Как перестать говорить "Ой, я забыл"

Talk by Vadym Dehterov

Originally posted here: https://speakerdeck.com/degterev/kak-pieriestat-ghovorit-oi-ia-zabyl

В компании разработчиков становилось все больше, появлялось все больше правил и договоренностей, процессы и взаимодействия стали занимать слишком много времени. Мы решили автоматизировать всю рутину: от списка ворнингов при валидации PR до коментария в джиру с номером билда. Для этого мы использовали Danger и немного Jenkins pipeline. Расскажем о том, что можно делать с помощью Danger, и какие проблемы он помогает решать.

This talk was made for CocoaFriday #3 ( https://cocoaheads.org.ua/cocoafriday/3 ) which took place May 10, 2019

Video: https://youtu.be/GY8R2epsFIU

CocoaHeads Ukraine

May 10, 2019
Tweet

More Decks by CocoaHeads Ukraine

Other Decks in Technology

Transcript

  1. Поговорим про • Что за проблема то? • Пути решения

    • Как мы решили в итоге • Вопросы и вот это все
  2. • Посмотреть pull requests • Отправить билд qa • Поставить

    нужный пробельчик • Написать коммент в джиру • Посмотреть почему упали тесты Задач много а я один
  3. Fastlane • Подходит для решения наших задач • Не идеален

    потому что нужен для Deploy • Deploy должен работать всегда и везде
  4. Jenkins pipeline Jenkinsfile node { stage('Build') { // } stage('Test')

    { // } stage('Deploy') { // } stage('Report') { def payload = JsonOutput.toJson([text : text, channel : channel, username : "JenkinsCI", attachments: attachments ]) sh "curl -X POST --data-urlencode \'payload=${payload}\' ${slackURL}" } }
  5. Github pull request builder Environment Variables The plugin makes some

    very useful environment variables available. • ghprbActualCommit • ghprbActualCommitAuthor • ghprbActualCommitAuthorEmail • ghprbPullDescription • ghprbPullId • ghprbPullLink • ghprbPullTitle • ghprbSourceBranch • ghprbTargetBranch • ghprbCommentBody • sha1
  6. Jira comment Jenkinsfile node { stage('Build') { // } stage('Test')

    { // } stage('Deploy') { // } stage('Report') { def payload = ... def jiraTicket = jiraTicket(env.ghprbPullTitle) sh "curl -X POST --data-urlencode \'payload=${payload}\' ${jiraURL}/browse/$ {jiraTicket}" } }
  7. Что с безопасностью? • Есть безопасное хранилище для ключей •

    Не нужно добавлять ключи в код • Ключи не попадут в логи
  8. Jenkins pipeline • Документация? • Модули, плагины, прям конструктор •

    Все пишется на Groovy • Можно просто вызывать скрипт из консоли
  9. Dangerfile failure "Please add labels to this PR" if bitbucket_cloud.pr_labels.empty?

    message "Welcome, Kotya" if bitbucket_cloud.pr_author == “Kotya_Kolbaskin” warn "This PR does not have any assignees yet." if bitbucket_cloud.pr_json[:reviewers].length == 0