CI/CD Solution with Bitbucket

Submitted by @Linus and @uchohan


The pipelines in this solution are for a proposed CI/CD process.

The implementation and documentation will enable the following capabilities

  • Ability to source control any SnapLogic Pipeline, Task and Account
    • Commit entire project
    • Commit individual asset
    • Specify commit message
    • Specify branch name
  • Automatic Bitbucket project, repository and branch creation
  • Automatic Bitbucket CI/CD file upload and Pipeline enablement
  • Automatic SnapLogic project space, project and asset creation
  • Ability to pull assets from Bitbucket to a SnapLogic project
    • Revert changes based on specific branch
    • Revert entire project or specific asset
  • SnapLogic Compare Pipeline review
  • Bitbucket Pull Request creation, approval and merge
  • Automatic promotion of assets from development to production

Terminology

  • A SnapLogic project space (belongs to a SnapLogic organization) will be mapped to a Bitbucket repository
  • A SnapLogic project (belongs to a SnapLogic project space) will be mapped to a Bitbucket repository (belongs to a Bitbucket project)
  • Each repository will have 1 or more Bitbucket branches. By default, the master branch will reflect the state of assets in the SnapLogic production organization. Additional branches (feature branches) inherits the master branch and will reflect various new development efforts in the SnapLogic development organization

Developer assets

Each SnapLogic user that should be involved in committing or pulling assets to the Bitbucket space could have its unique and individual assets.
User_Bitbucket
It is recommended that each user duplicates the User_Bitbucket project and replaces User with its unique name.

Although covered in greater detail in the attached PDF, the User_Bitbucket project holds
these four Pipelines, each containing a single Snap:

  • Commit Project - Commits any Pipelines, Accounts and Tasks within the specified
    SnapLogic project, to the specified branch in Bitbucket
  • Commit Asset - Commits the specified asset within the specified SnapLogic project, to
    the specified branch in Bitbucket
  • Pull Project - Reads any Pipelines, Accounts and Tasks from the specified branch in the
    specified Bitbucket, to the specified project and organization of SnapLogic
  • Pull Asset - Reads the specified asset from the specified branch in the specified
    Bitbucket, to the specified project and organization of SnapLogic

For each Pipeline, each user needs to update the bitbucket_account Pipeline Parameter in the respective Snaps, matching the path to their own Bitbucket Account.

Downloads

Documentation
CI_CD Documentation.pdf (1.3 MB)

For User_Bitbucket project:
Commit Asset.slp (3.5 KB)
Commit Project.slp (3.4 KB)
Pull Asset.slp (3.6 KB)
Pull Project.slp (3.6 KB)

Note: These pipelines all rely on shared pipelines located in a CICD-BitBucket project. Make sure to update the mappings to the pipelines within the CICd-BitBucket project to your location.

For CICD-BitBucket project:
1.0 Main - SL Project to Bitbucket.slp (17.5 KB)
1.1 Create Project and Repo.slp (19.2 KB)
1.2 SL Asset to Bitbucket.slp (14.8 KB)
2.0 Main - Migrate Assets To SL.slp (23.1 KB)
2.1 Upsert Space And Project.slp (16.4 KB)
2.2 Read Assets.slp (29.3 KB)
2.2.1 Upsert Pipeline To SL.slp (12.8 KB)
2.2.2 Upsert Account To SL.slp (17.9 KB)
2.2.3 Upsert Task To SL.slp (21.2 KB)
PromotionRequest.slp (26.0 KB)

3 Likes