Skip to content

Instantly share code, notes, and snippets.

@sgpopov
Created July 26, 2016 11:46
Show Gist options
  • Select an option

  • Save sgpopov/c40e861c48d0abc311d77003f1a7389c to your computer and use it in GitHub Desktop.

Select an option

Save sgpopov/c40e861c48d0abc311d77003f1a7389c to your computer and use it in GitHub Desktop.

Revisions

  1. sgpopov created this gist Jul 26, 2016.
    21 changes: 21 additions & 0 deletions bamboo-overview.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,21 @@
    First you need to get used with some Bamboo concepts (also see the official [Atlassian Bamboo documentatiom](https://confluence.atlassian.com/bamboo/bamboo-documentation-home-289276551.html)

    ## Build plans and artifacts

    A build plan is the process that generates a Bamboo **artifact**. An artifact is something that can be deployed later, most of the time an executable or a jar file when you are talking about software that compiles, but for our sites this will simply be a compressed tarball file called site.tar.gz that contains the source code.

    Build plans are composed of three pieces: **Stages**, **Jobs** and **Tasks**. If you look at the graph below it should be clear how those three fit inside each other:

    ![bamboo-production-plan](https://confluence.atlassian.com/bamboo/files/289277285/319619101/1/1359074967455/BambooPlanAnatomy.png)

    - **Stages execute sequentially** (e.g. a Testing Stage, a Package Building stage). If phase x fails, the build process will halt and phases after x will not be executed.
    - **A stage consists of jobs that can be executed in parallel** (e.g. multiple types of tests in a testing stages that can run at the same time)
    - **A job consists of multiple tasks that run sequentially.** The first task will always be doign a source code checkout and then the next tasks use this checked out code to do some magic.

    ## Releases, deployment plans & environments

    Now that we have a build plan that produces an artifact, our site.tar.gz file, we need to get that deployed to our servers. We can use releases and deployments plans to achieve that:

    - Releases are simply tagged successful build plans. *(e.g. build #65 has been tagged as v.2.2.3)*
    - A deployment plan is simply a list of environments.
    - An environment has a list of tasks that will be executed sequentally to deploy a release's artifact to the environment.