End-Users often require a new environment to be configured, or cloned in order to implement a new JIRA Task. Using our DevOps and Cloud for JIRA Plugin, we wanted to gain visibiligy on the first multi-cloud JIRA integrated solution and provide an innovative way of provisioning environments using container technologies, using free lets encrypt SSL certificates on any cloud provider.
How this plugin can help your whole development process:
- Testing each feature in a perfect isolated and live environment fits with what agile should be.
- COLLABORATIVE & AGILE: Incredibly fast on-boarding, developers can get started in minutes contributing to the project.
- Developers can request help from another team member to look at his current code and request implementation help, code review without having them to create a new environment.
- Project Manager, QA and any team member should not require any System Administrators in order to create a new Demo, QA environment and so on.
- Unlimited concurrent staging environments eliminates QA bottlenecks and allows for continuous deployments
- Redeploying on every branch creation guarantees deployments never fail.
What it does
Provide the ability to spawn a new environment on demand using a specific bitbucket repository / branch.
- A secure using SSL and isolated environment is created on demand including a Free IDE already pre-configured.
- The default port 80 and 443 are automatically created, configured and forwarded to your isolated container.
- Up-on container creation a docker-compose is being executed launching your own docker-compose.yml definition, not limiting you to only a specific configuration.
- Your git repository is cloned in /data/git/ and the docker-compose -f /data/git/docker-compose.yml -d is executed upon creation.
- A Local Free IDE is running exposing /data/git/ over a web browser
How I built it
We prototyped the plugin to understand how we can link Bitbucket and Jira Add-ons. Then we proceeded with the integration of the BitBucket add-on and ACenterA DevOps and Cloud for JIRA Plugin using rest API and cookies. We then began development for of provisioning isolated container on a specific ACenterA Server installation on a AWS Instance. Next release will allow you to create your own Container cluster and deploy your own code on your own cloud instances by the use of our DevOps and Cloud for JIRA Plugin.
Challenges I ran into
- It has been difficult to develop a smart algorithm to map a user, or team with a specific JIRA Instance.
- Outside of JIRA/Bitbucket, developing a custom logic to isolate environments that is scalable.
- Optimize the creation time. This is still a work in process, overall it is currently acceptable.
Demo account (required)
If you have not yet installed the DevOps for JIRA Plugin you must either do so, or login first using these demo credentials.
https://portal.acentera.com/ ACenterA Cloud Portal
Once loggedin, we have configured a demo bitbucket repository:
- Create an environment
Resulting Website using root docker-compose.yml: Containers:
Website created using docker-compose / docker containers
- Delete of environment
Accomplishments that I'm proud of
The first time we were able to successfully see our IDE functional, from a click in BitBucket using Secure connectivity.
What I learned
JIRA Cloud, and Bitbucket are two separate instances and logic, it is complex to match a company repository versus a end-user repository. With some research, we found some other company are working towards an docker / git environment creation. Introducing an IDE and possibly remote SSH access would probably be a plus for us in order to gain market. Building of an instant complete environment an seamless way from development to production that can scale using container technologies and deliver an “Environment as Code” right inside bitbucket git would be the holy grail for us.
What's next for IDE for BitBucket
The roadmap for ID for BitBucket:
- Allow deployment on your own Cloud Instances (at the moment we host the container host, this is only for testing).
- Investigate to integrate another web IDE and ideally something that would allow better collaboration such as a web editor similar to google doc where many team members can update the same file at the same time. Integrate the IDE inside instead of opening a new window.
- Improve container creation time