Go is a continuous integration and release management system. It uses agents that are assigned jobs by the Go server based on their resources and environment configurations. Pipelines break down work into stages and jobs to provide feedback and validation during development. Roles determine permissions for development tasks like building, deploying, and approving changes moving through the pipeline.
1. About Go
Go - the Continuous Integration and
Release Management system from
ThoughtWorks Studios
2. Go server and agents
• environment1
agent1
• environment3
• environment1
agent2
• environment2
• environment
.. m
agent • Environment n
3. Agent
• Agent is a real workhorse of Go platform.
• It has been assigned jobs from go server.
• Job assignment is based on go server load
balanced, defined multiple Environment -
Resource combinations.
4. How Sever and Agents communicate
• Agents periodically contact the Go server to
ask if there is any work. The server checks to
see what resources the Agent has, and assigns
any available Jobs that match those resources.
• Go supports a grid of Agents that can run
Jobs.
5. Environment
• An Environment is a grouping of pipelines and
agents.
• By assigning an agent to an environment, it
will be used to run only those jobs that belong
to the pipelines of that environment. An agent
can be associated with one or more
environments.
• A pipeline can, however, only be assigned to a
single environment.
7. Pipeline
A release workflow management system
• Provides visibility into the status of each
change, and control over the flow of changes
as they move from build to testing to release.
• Scale pipelines easily with re-usable workflow
templates to manage large numbers of
projects.
8. Stage
• A pipeline allows you to break down a complex
build into a sequence of simple stages for fast
feedback, exhaustive validation and continuous
deployment.
Example: Website_pipelines
Build_and_Deploy
Deploy_Business_SignOff
Deploy_Long_Term_QA
QA_Approval
9. Jobs
• The unit of work in Go is called a job . A job is
a set of build tasks that can be performed on a
single agent in your cloud. The jobs compose a
stage.
Example Build_and_Deploy: compile, Unit
Test, Deploy to CI Box, Smoke Test(Not
yet), Package
10. Stage
• Deploy_Business_SignOff : deploy to BA Box,
BA sign off
• Deploy_Long_Term_QA: deploy to QA BOX,
QA sign off
• QA_Approval: make a tag in SVN box for this
version
11. Role
• Dev: Build and Deploy
• BA: Deploy_Business_SignOff
• QA: QA approval, Deploy_Short_Term_QA ..
• Infra: Deploy_Gold
• Admin:
• Guest: view and download all artifacts
12. Code Process
Svn box
Production
Agent box
deploy
QA deploy Dev deploy
BA deploy
13. Preparing work
• Modify build.xml and deploy.xml
– Dependent jar from Go
– Import build tools and environment
– Lib path
• Check in to SVN
– set external feature in svn to get share lib
and build tools
14. Environment Properties
• Environment Target Set up
– environment properties file
– environment.xml
• Generate properties file for delivery
destination and insert in to the delivery
package. It creates different property file
needed by different environments
15. Developer work
• Watch Pipeline status
• Set up email notification
• Find broken Cause
• See artifacts
• Check website