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

Migrating to BitBucket: Lessons Learnt.

Roberto Aloi
November 08, 2016

Migrating to BitBucket: Lessons Learnt.

The talk I gave at "Riada Enterprise Day 2016 - The biggest Atlassian event in Scandinavia", Stockholm.

Roberto Aloi

November 08, 2016
Tweet

More Decks by Roberto Aloi

Other Decks in Technology

Transcript

  1. PAYMENT SERVICES FOR ONLINE BUSINESSES THE ART OF SIMPLIFYING THE

    PURCHASING PROCESS HEAVY USER OF ATLASSIAN PRODUCTS https://www.atlassian.com/customers/klarna
  2. Say Hi to Kred Klarna’s main issuing and servicing platform

    for Nordics, DACH & NL The oldest piece of software at Klarna His name is a reminiscence of the original name Kreditor First Commit: Thu Dec 16 22:56:59 2004
  3. KRED A MONOLITHIC SYSTEM (IN TERMS OF DEPLOYMENT) TESTED AS

    A WHOLE RELEASED AS A WHOLE IMPLEMENTED IN ERLANG INCREDIBLY STABLE AND COMPLEX
  4. ALIGN WITH THE REST OF THE ORGANISATION ADOPT A MORE

    MODERN DEVELOPMENT FLOW INCREASE QUALITY OF THE DEVELOPMENT FLOW THE MIGRATION HAD TO BE SMOOOTH. Why?
  5. The move was trivial. Details were not. Development Flow -

    Integrations - Pull Requests Default Reviewers - Code Ownership Compliance - Jenkins - Submodules - Iterative Reviews Communication - System Tests - Performance Tests Merge Checks - Hooks - Permissions Emergency Changes - Merging Strategies - Rollback Minimum Number of Approvals
  6. project: KC repo: kred # Repository Details default-branch: master #

    Repository Permissions public: false groups: admin: - kred.core.e write: - engineering # Default Reviewers default-reviewers: - master: groups: - kred.core.e
  7. # Branch Restrictions branch-restrictions: - master: - fast-forward-only - no-deletes

    - pull-request-only - read-only: exceptions: groups: - kred.core.e # PR Restrictions pull-requests: requiredApprovers: 2 requiredSuccessfulBuilds: 1
  8. $ ./bitbucket_erlang_client Usage: ./bitbucket_erlang_client [-h] [-c [<config>]] [-r [<repo_config>]] [-e

    [<enforce>]] [-k [<keep>]] [-v [<verbosity>]] -h, --help Show this help message -c, --config The Bitbucket Config File [default: bitbucket.config] -r, --repo_config The Repo Config to check or configure [default: undefined] -e, --enforce Enforce values when they do not match expectations [default: false] -k, --keep Keep going after the first error (always true when enforce == true) [default: false] -v, --verbosity Verbosity Level [default: 1]
  9. $ ./bitbucket_erlang_client Usage: ./bitbucket_erlang_client [-h] [-c [<config>]] [-r [<repo_config>]] [-e

    [<enforce>]] [-k [<keep>]] [-v [<verbosity>]] -h, --help Show this help message -c, --config The Bitbucket Config File [default: bitbucket.config] -r, --repo_config The Repo Config to check or configure [default: undefined] -e, --enforce Enforce values when they do not match expectations [default: false] -k, --keep Keep going after the first error (always true when enforce == true) [default: false] -v, --verbosity Verbosity Level [default: 1] Enforce VS Verify
  10. We already had the logic to suggest reviewers, but in

    Erlang. Should we migrate it to a plugin?
  11. No! Implement a dumb merge check plugin that performs a

    HTTP call to a server and gets a boolean response.
  12. CONCLUSIONS BITBUCKET IS AWESOME MIGRATING TO BITBUCKET WAS SMOOOTH VERSION

    CONTROL YOUR SETTINGS AVOID CONFIGURATION THROUGH A UI AVOID REIMPLEMENTING THINGS THAT WORK