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

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

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

Db84cf61fdada06b63f43f310b68b462?s=128

CocoaHeads Ukraine

May 10, 2019
Tweet

Transcript

  1. 2.
  2. 3.

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

    • Как мы решили в итоге • Вопросы и вот это все
  3. 4.

    • Посмотреть pull requests • Отправить билд qa • Поставить

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

    Fastlane • Подходит для решения наших задач • Не идеален

    потому что нужен для Deploy • Deploy должен работать всегда и везде
  5. 11.

    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}" } }
  6. 12.

    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
  7. 13.

    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}" } }
  8. 14.

    Что с безопасностью? • Есть безопасное хранилище для ключей •

    Не нужно добавлять ключи в код • Ключи не попадут в логи
  9. 15.

    Jenkins pipeline • Документация? • Модули, плагины, прям конструктор •

    Все пишется на Groovy • Можно просто вызывать скрипт из консоли
  10. 16.
  11. 17.

    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
  12. 20.