Build Configuration Templates in Teamcity | Teamcity Guide

build-configuration-templates-in-teamcity

Going meta with Meta-Runners in TeamCity

We have seen that build runners can be very handy. Even though most build runners can be replaced with an equivalent command using the command-line runner, build runners come with the convenience of easily setting up build steps, along with the necessary agent requirements and parameters.

Meta-Runners provide a straightforward way to create custom build runners. Meta-Runners can be thought of as a way to avoid duplications in build steps across build configurations.

Note

While templates can be used to create and maintain build configurations that are very similar, Meta-Runners can be used across build configurations that perform the same build steps. Moreover, a build configuration can only be based on one template, but it can make use of multiple Meta-Runners.

In Chapter 3, Getting Your CI Up and Running, we created the deploy-to-test build configuration that deploys the Django application to Heroku. Using this build configuration as an example, we can see how we can extract a Meta-Runner Deploy To Heroku that can be used by any build configuration that wants to deploy to Heroku.

Recall that the deploy-to-test build configuration had a simple command-line runner that executed the following commands:

git remote add heroku git@heroku.com:django-ci-example.git  git push heroku master

To create a generic Meta-Runner out of this, we need to provide a way to push to any remote, rather than just git@heroku.com:django-ci-example.git.

Note

Deploying to Heroku using remotes needs the ssh keys to be set up on the agent. The example used here just illustrates Meta-Runners and may not be ideal for production use.

As mentioned in Chapter 6, TeamCity for Ruby Projects, we can use a gem such as heroku-headless (https://github.com/moredip/heroku-headless).

As expected, we will do this by extracting the remote out into a build parameter. The command-line runner will have the following as the Custom Script to be run:

git remote add heroku %heroku.remote%  git push heroku master

We will provide the value for the %heroku.remote% parameter in the Build Parameters section of the build configuration.

Now we are ready to create a Meta-Runner from this build configuration. This can be done by clicking on the Extract Meta-Runner button in the right-hand side bar of the build configuration settings page. This brings up the Extract Meta-Runner dialog, which is shown in the following screenshot:

Going meta with Meta-Runners

In the dialog, we give a name to the Meta-Runner. This is the name that will appear in the Runner Type field when configuring a build step for a build configuration.

Click on Extract to create the Meta-Runner. Once the Meta-Runner is created, we can see it listed in the Meta-Runners tab on the project administration page. We can also edit the Meta-Runner to fine-tune it as desired.

Tip

A Meta-Runner is essentially an XML configuration (much like most TeamCity configurations) that can be edited directly from the web interface.

The following screenshot shows the edit page of the Deploy To Heroku Meta-Runner that we just created:

Going meta with Meta-Runners

The Meta-Runner extracts all the parameters and steps defined in the build configuration. We can edit the Meta-Runner to have only the necessary parameters and steps.

Using Meta-Runners

We can now use the Meta-Runner that we created pretty much like a normal build runner. We will remove the existing build step in the deploy-to-test build configuration (from which we extracted the Meta-Runner) and add a Deploy To Heroku Meta-Runner-based build step.

Tip

We can also disable build steps if we don’t want to remove them while experimenting.

In the New Build Step page, for the Runner type field, the newly created Deploy To Heroku Meta-Runner is available, as shown in the following screenshot:

Using Meta-Runners

Once we choose the Deploy To Heroku Meta-Runner, we can see that the heroku.remote parameter is one of the fields to be configured. Since we created the Meta-Runner with the heroku.remote parameter with the value git@heroku.com:django-ci-example.git, that remote is available by default. The Deploy To Heroku runner configuration page is shown in the following screenshot:

Using Meta-Runners

Tip

It is possible to remove the value for parameters in the Meta-Runner XML so that no default values are present for the fields.

We can click on Save to add the build step. The new build step, based on the Deploy To Heroku Meta-Runner, will function in the same way as the previous build step based on the command-line runner.

Note

Of course, the value of Meta-Runners becomes more apparent when we create them out of multiple build steps. The same set of steps that may be repeated across multiple configurations can be extracted into Meta-Runners.

Reference Book – Learning Continuous Integration with TeamCity by Learning Continuous Integration with TeamCity

Tagged : / / / / / / / / /

Build and Release Course Training with Jenkins / Maven /Ant/ SVN & Git

build-and-release-training-with-jenkins-maven-ant-svn-git

Upcoming Training Dates | Training Agenda | Training Calender | FAQ | Why scmGalaxy Online Training

Click Here

Mode – Online based
Email – info@scmgalaxy.com

Lab Setup Details – Prerequisites
Operating Systems – Windows 7 or Linux(RHEL 7.X or Ubantu)
JDK 1.7 or Higher
SCM Tool Clients Installed (SVN, GIT, Perforce)
Servlet container like GlassFish and Tomcat (If one wants to host Jenkins outside) – Optional

[If trainee is having any specific learning agenda to be addressed in this training apart from the table of Content as below; please email me @ info@scmgalaxy.com]

Table of Content

Continuous Integration with Jenkins

  • What is Software Configuration Management
  • What is Build and Release Engineering
  • Introduction of Version Control Management?
    • Basic usage of Subversion
    • Basic usage of git
  • Introduction of Build Management?
    • How to write ant script?
    • How to write Maven script?
    • How to write MSBuild Script?
  • Introduction of Release Management?
  • Benefit of Continuous Integration?
  • Different Continuous Integration Tools?
  • Focus on Jenkins
  • Installation and Setup of Jenkinks
  • Configure a Job to Build the Project using SVN /GIT and ANT/Maven
  • Using Build Script (Ant, Maven and MSBuild) with Jenkins
  • Authentication and Authorization in Jenkins
  • Lab and Assignment
  • Nodes Setup in Jenkins
  • Labels, Tags and Notification using Jenkins
  • Empowered with Plugins in Jenkins
  • 20 Popular Plugins and Their Usage
  • Integrating Jenkins with Junit for automated testing
  • Integrating Jenkins with HP-QC for automated testing
  • Integrating Jenkins with Cobertura for test Coverage
  • Integrating Jenkins with Sonar for static code analysis
  • Release and Deployments using Jenkins and Nexus
  • Advance Jenkins
    • Jenkins Scripting
    • Jenkins Command line
  • Reporting and Dashboard using Jenkins
  • Lab and Assignment

Build and Release Training In Bangalore | Build and Release Training in India | Build and Release Training in Hyderabad | Build and Release Training in Delhi | Build and Release Training in Pune | Build and Release Trainer In Bangalore | Build and Release Trainer in India | Build and Release Trainer in Hyderabad | Build and Release Trainer in Delhi | Build and Release Trainer in Pune

Tagged : / / / / / / / / / / / / / / / / / / / / / / / /

If a linux-build-server suddenly starts getting slow, what would you check?

linux-build-server

If a linux-build-server suddenly starts getting slow, I would divide my approach / troubleshooting into 3 section as follows;

1. System Level troubleshooting

a. RAM related issues

b. Disk Space related Issues

c. Disk I/O read write issues

d. Network Hardware issues

e. Mount issues

f. Too Many process running in the machine

2. Application Level troubleshooting

a. Application is not behaving properly. Hit to Application log file OR application server log file OR web server Log file and try to understand the issues.

b. zombie process issues – Find out if any as such process which is causing the system performance issues.

c. Application Log – depends on the application installed, this can be referred and make use of the experience with the project and troubleshoot.

d. Web Server Log – we can check http, tomcat log as well.

e. Application Server Log – We can see jboss, weblogic logs to see if the application server response/receive time is the issues for slowness.

f. Memory Leak of any application – This is one of well known issues in lunux based server due to bad application coding. Many times this can be resolved either by fixing the code or rebooting. But many other solutions are there to apply.

3. Dependent Services troubleshooting

a. SMTP Response time – SMTP server is not responding faster which is causing delay in response and queue up many processes.

b. Network issues – There are many System performance issues is dependent on network or service which is depends on the network.

c. Firewall related issues

d. Antivirus related issues

 Some of the useful commands for troubleshooting are..

1. df –k

2. du –sh

3. top

4. uptime

5. ps –eaf | grep

6. vmstat

7. ping

8. tail –f <logfile>

9. iostat

10.free

11.kill -9

12.mount

13.sar

14.ifconfig eth0 | enable | disable

15.traceroute

16.netstat -r

17.nslookup

18.route

   There are various options available for each commands and depends on the need during the troubleshooting, right commands can be applied. To find arguments and their explanation, I usually refer google.com rather than man page.

Tagged : / / / / / / / / / / / / / / / / /

Build and Release Trainer, Instructor, Mentor and Coaches in Bangalore

build-and-release-trainer-in-bangalore

Upcoming Training Dates | Training Agenda | Training Calender | FAQ | Why scmGalaxy Online Training

scmGalaxy is a community initiatives based on Software configuration management that helps community members to optimize their software development process, Software Development Life Cycle optimization, Agile Methodologies and improve productivity across all aspects of Java development, including Build Scripts, Testing, Issue Tracking, Continuous Integration, Code Quality and more. scmGalaxy group that helps organisations optimize their software development process. We provide consulting, training and mentoring services in Agile Development Practices such as Version Management, Continuous Integration, Build Management, Test-Driven Development, Acceptance-Test Driven Development, Build Automation, Code Quality Practices and Automated Testing.

We provide job oriented training in the area of Configuration management, Build and Release Engineering. Candidates with engineering or software background and looking to either start or change their career to Build and Release Engineering, would benefit most from this training. Instructor-led training course offered in India, Bangalore, Delhi, Pune, Mumbai and Hydrabad. Instructor is an expert in Software configuration management, Build and release engineering with more than 15 years industry experience in india.The Goal of the course make the training attendants equip with all the concepts of build and release engineering.

Contact us at info@scmGalaxy.com

Jenkins Training

Build and Release Training | SCM Training

Continuous Integration Training

Build and Release Training in Bangalore

Build and Release Training In Bangalore | Build and Release Training in India | Build and Release Training in Hyderabad | Build and Release Training in Delhi | Build and Release Training in Pune | Build and Release Trainer In Bangalore | Build and Release Trainer in India | Build and Release Trainer in Hyderabad | Build and Release Trainer in Delhi | Build and Release Trainer in Pune

Tagged : / / / / / / / / / / /

Build and Release Training in Bangalore

build-and-release-training-in-bangalore

Upcoming Training Dates | Training Agenda | Training Calender | FAQ | Why scmGalaxy Online Training

 

Click Here


Mode – Online

Lab Setup Details OR Prerequisites for personal Laptop

Operating Systems – Windows 7 or Linux (RHEL 7.X or Ubantu)
JDK 1.7 or Higher,
SCM Tool Client and server Installed (SVN, GIT, Perforce)

Send us an email to info@scmgalaxy.com with the confirmed payment receipt for acknowledgement

Free Lunch would be serve to all Participants.
Registration is based on First Come basis and only confirmed registration would be considered.

  1. What is Software Configuration Management
  2. What is Build and Release Engineering
  3. Introduction of Version Control Management?
  4. Basic usage of Subversion
  5. Basic usage of git
  6. Introduction of Build Management?
  7. How to write ant script?
  8. How to write Maven script?
  9. How to write MSBuild Script?
  10. Introduction of Release Management?
  11. Benefit of Continuous Integration?
  12. Different Continuous Integration Tools?
  13. Focus on Jenkins
  14. Installation and Setup of Jenkinks
  15. Configure a Job to Build the Project using SVN /GIT and ANT/Maven
  16. Using Build Script (Ant, Maven and MSBuild) with Jenkins
  17. Authentication and Authorization in Jenkins
  18. Lab and Assignment
  19. Nodes Setup in Jenkins
  20. Labels, Tags and Notification using Jenkins
  21. Empowered with Plugins in Jenkins
  22. 20 Popular Plugins and Their Usage
  23. Integrating Jenkins with Junit for automated testing
  24. Integrating Jenkins with HP-QC for automated testing
  25. Integrating Jenkins with Cobertura for test Coverage
  26. Integrating Jenkins with Sonar for static code analysis
  27. Release and Deployments using Jenkins and Nexus
  28. Advance Jenkins
  29. Jenkins Scripting
  30. Jenkins Command line
  31. Reporting and Dashboard using Jenkins
  32. Lab and Assignment

Build and Release Training In Bangalore | Build and Release Training in India | Build and Release Training in Hyderabad | Build and Release Training in Delhi | Build and Release Training in Pune | Build and Release Trainer In Bangalore | Build and Release Trainer in India | Build and Release Trainer in Hyderabad | Build and Release Trainer in Delhi | Build and Release Trainer in Pune

Tagged : / / / / / / / / / / / / / / /

Release management with Build Forge e-Kit

release-management-with-build-forge-e-kit

To learn more about IBM® Rational® solutions for deployment planning and automation, take advantage of these additional resources:

Visit the Rational deployment planning and automation web page for more information.

Contact a Rational sales specialist.

Tagged : / / / / / / / / /

Build Forge Concepts and Terminology

build-forge-concepts-and-terminology/
Build Forge uses a simple set of objects to construct descriptions of process automation.

This section gives you an overview of key concepts and objects and how they are related. Links to more detailed explanations are included for convenience.

Users and roles

To access Build Forge, users need to have a user object set up for them. In production systems, this is done by configuring Build Forge to access an identity management system, LDAP.

Build Forge uses an authorization system to control user access to all objects. Access group objects contain lists of permissions. A user belongs to one or more access groups.

You can create your own access groups or modify the ones provided. The access groups defined in the system are:

  • Build Engineer – defines processes (creates projects and steps)
  • System Manager – administers servers and other system-wide features
  • Security – administers users, access, and security
  • Developer – helps develop processes, runs jobs, views results
  • Operator – copies projects, runs jobs, views results
  • Guest – copies projects, runs jobs, views results

Servers

A server object defines a place where projects and steps can run. Projects and steps can use the same server or select one independently.

Server objects represent hosts where work is performed. The host must be running a Build Forge agent to receive the work from the system and return results.

Other objects are related to servers and need to be set up before defining projects and steps:

  • Server Authentications: a server authentication stores login information for the server to use to access the host specified by the server. A server authentication must be created before creating the server that uses it. In the server definition, choose the server authentication from the list of all server authentications defined in the system.
  • Collectors: a collector object gathers specified properties of a server. The data is stored in a manifest. Servers have a default set of properties assigned. These built-in properties include information about the host architecture, network connections, and resources (CPU, memory, load). You can add other properties by defining collector objects. A collector must be created before adding it to the server. In the server definition, choose the collector from the list of all collectors defined in the system.
  • Selectors: a selector object defines how a server is selected for use by a project or step. A selector must be created before adding it to the project that uses it. In the project definition, choose the selector from the list of all selectors defined in the system.
  • Environments: an environment object is a set of variables that can be used by a step. During a job, the variables are set on the server host before the step is run. Environments can be associated with server objects, project objects, and step objects. When the same variable is set to different values in different environments, an inheritance scheme determines which value is used. An environment must be created before adding it to a server, project, or step. In those object definitions, choose the environment from the list of all environments defined in the system.

Environments

An environment is a set of variables. Environments can be specified for server, project, and step objects. When a step runs, environments set at each of those objects are combined to provide variables for the step to use. See About environments.

Variables can be changed as a step runs. See Changing variable values during step execution.) The scope of the change can be local to the step, local to the project, or permanent (the variable is changed in the stored environment.

Predefined system variables are available as well as variables you define.

Projects

A project defines work to be done in a process. When a project is started, it runs as a job.

The work to be done is contained in the list of steps.

Other objects are related to projects:

  • Selectors: a selector determines where the project will be started. If a selector is not specified for the project, then it cannot run independently and is called a library. The selector must already be defined to assign it to a job.
  • Environments: an environment object is a set of variables that can be used by a step. During a job, the variables are set on the server host before the step is run. Environments can be associated with server objects, project objects, and step objects. An inheritance scheme determines which values are used if the same variable is set to different values. An environment must be created before creating the server, project, or step that uses it. In those object definitions, choose the environment from the list of all environments defined in the system.
  • Notification templates: a notification template defines how to send out notifications about job activity (job start, job pass, job fail, others). A notification object defines who to notify through access groups. You specify the location of your SMTP server in a system setting.
  • Classes: a class object is used to group projects for maintenance purposes. Typically classes are used to purge or archive completed jobs periodically. All jobs that have run using the project are affected by the class.
  • Adaptors: an adaptor defines an integration with an external system, typically a source code management system. Several sample templates are provided as a starting point. You need to configure them further to manage the connection and perform specified actions in the system.
  • Adaptor links: an adaptor link defines the relationship between an adaptor and the project that uses it.

Steps

A step defines the smallest unit of work to be done. (See About steps.) Its key component is its Command property, which includes a command to be run on the selected server.

The Command property can also be used to run dot commands. Dot commands are commands that run on the process engine and provide additional functionality.

Other objects are related to projects:

  • Selectors: a step can have its own selector. If not specified it uses the selector of its project.
  • Environments: a step can have its own environment. The environments provided by the server, the project, and the step are combined. By default they are applied in that order, so that any variables defined by the step’s environment take precedence over definitions of the same variable. Precedence can be controlled in system settings.
  • Log Filters: a step can be assigned a log filter in its Result property. A log filter object is used to specify conditions that indicate if the step passes or fails. When running a Perl engine, you use regular expressions to scan the log for a particular pattern. When running a Java engine, you also use regular expressions to scan the log for a particular pattern. Normally the exit status of the command is used, but log filters provide an alternate means. A log filter must be created before specifying it in a step. In the Result property for the step, you choose the log filter from the list of all log filters defined in the system.
  • Notification templates: a notification template defines how to send out notifications about step activity (step start, step pass, step fail, others). A notification object defines who to notify through access groups. You specify the location of your SMTP server in a system setting.
  • Build Catalyst: a step can run rafmake, the key utility in Build Catalyst. Build Catalyst provides the means to accelerate make-based builds. Build Catalyst must be installed on the same host where the make builds are run, in addition to a Build Forge agent.

Jobs

A job is a running project. When the job is started, the process engine queues it and then runs it. You can check its status in the Jobs panel. When it completes, the following information is available:

  • Results: you can review the results of all steps by opening the job. You can also open a running job to monitor its progress.
  • Step log: the step log records extensive information about how a step was run, including information about the manifest and environment settings as well as execution results. Click the step results link in the Results page to view the log.
  • Bill of Materials: the Bill of Materials (BOM) contains information about job steps and step manifests. You can use the .bom dot command to format additional information for the BOM and write data to it. You can use the .scan dot command to add baselines and checkpoints to the BOM.

You can cancel and restart jobs. You can add projects to the Schedule to have them run at scheduled times.

Tagged : / / / / / / / / /

Build and Release Engineer Courses Training in Online and Classroom Mode by Expert Trainers

Click Here

Contact us at info@scmGalaxy.com

Mode of Training – Online

The basic course program is outlined here:

  1. Software Configuration Management overview
  2. Elements of Software Configuration Management
  3. Establishing change control Procedures in SDLC
  4. Introduction of Version management / Source Code Management
  5. Overview of Build management
  6. Overview of Packaging management
  7. Overview of Release and Deployment management
  8. Concept of Continuous Integration
  9. Concept of Continuous Deployment
  10. Concept of Continuous Delivery
  11. Labs and Assignment
    1. Install & Configure Source Code Management (Git and SVN)
    2. Usage of Branching, Merging and Tagging
    3. Install & Configure Continuous Integration Tool (Jenkins)
    4. Write a Sample Build Script Using Ant, Maven and Make file
    5. Building a sample Java and C++ based product
    6. Build deployments to various environments(Windows and Linux)
    7. Automation Perspective using Perl and Bash Script
    8. Integration of various tools such Jira, Sonar, Cobertura, Unit test cases
  12. Questions and Feedback

There are various tools as below can be combined or customized based on the needs for students.

Build / WorkFlow Mgmt Tools / Continuous Integration Tools

  • AnthillPro
  • Apache Continuum
  • Bamboo
  • CruiseControl
  • Hudson
  • LuntBuild
  • OpenMake Meister
  • TeamCity
  • Team Foundation Server
  • Electric Cloud
  • uBuild & uRelease

SCM Tools | Version Control Tools

  • AccuRev
  • ClearCase
  • CA Harvest
  • CVS
  • Dimensions
  • Git
  • MKS Source Integrity
  • Mercurial
  • Perforce
  • PVCS
  • StarTeam
  • Subversion
  • Synergy
  • Team Foundation Server
  • Vault
  • ViewVC
  • VSS

Scripting

  • Ant
  • Groovy
  • Make
  • Maven
  • MSBuild
  • NAnt
  • Shell Scripts
  • Perl Scripts
  • Visual Studio

Release / Dep Tools / Continuous Deployment

  • Cruise
  • Rational Team Concert
  • UDeploy
  • Chef
  • Puppet

Security

  • Active Directory
  • Kerberos
  • LDAP
  • Single Sign-on
  • RSA SecurID

Testing Tools

  • Agitar
  • CppUnit
  • HP Mercury Quality Center
  • HP Mercury QuickTest Pro
  • JUnit
  • MSTest
  • NUnit
  • Selenium
  • Silk Central Test Manager
  • TestNG

Test Coverage

  • Clover
  • Cobertura
  • Emma

Source-code Analysis

  • Checkstyle
  • CodeSonar
  • Coverity
  • FindBugs
  • Fortify
  • Klocwork
  • PMD
  • Sonar

Issue Tracking Tools

  • Bugzilla
  • ClearQuest
  • HP Quality Center
  • JIRA
  • PVCS Tracker
  • Team Foundation Server
  • TeamTrack
  • VersionOne

IDEs Integration

  • Eclipse
  • RAD
  • Visual Studio

Virtualization

  • VMWare Lab Manager
  • Microsoft
  • Amazon (Elastic Cloud)

scmGalaxy is a community initiatives based on Software configuration management that helps community members to optimize their software development process, Software Development Life Cycle optimization, Agile Methodologies and improve productivity across all aspects of Java development, including Build Scripts, Testing, Issue Tracking, Continuous Integration, Code Quality and more. scmGalaxy group that helps organisations optimize their software development process. We provide consulting, training and mentoring services in Agile Development Practices such as Version Management, Continuous Integration, Build Management, Test-Driven Development, Acceptance-Test Driven Development, Build Automation, Code Quality Practices and Automated Testing.

We provide job oriented training in the area of Configuration management, Build and Release Engineering. Candidates with engineering or software background and looking to either start or change their career to Build and Release Engineering, would benefit most from this training. Instructor-led training course offered in India, Bangalore, Delhi, Pune, Mumbai and Hydrabad. Instructor is an expert in Software configuration management, Build and release engineering with more than 15 years industry experience in india.The Goal of the course make the training attendants equip with all the concepts of build and release engineering.

Course Objectives
To bring your team up to speed with agile development, We can also run the from Continuous Integration to Continuous Delivery with autoamted course within your premises.

Course Schedule
This course is an intensive 1-day & 2-day workshop with a mixture of teaching and lab exercises. Currently, this course is offered exclusively as an on-site course. Please contact us for more details.

Audience
This is a hands-on, practical course designed to teach specialised skills for real-world development situations. It is thus primarily aimed at a SCM Engineer, Build/Release Engineer and developer audience.

Approach
The course is modular and flexible – depending on specific student needs and requests. Through our trainings, you benefit from the wide experience and architectural expertise of our team. We bring that experience to you in an highly interactive, intensely hands-on setting.

Assumptions
We assume participants have a reasonable understanding of Development in any language as well as a basic understanding of the Software Development Life Cycle.

Lab Work
All our courses are above all practical in nature. We believe that the best way to learn is by doing. So the course contains approximately 80% lab work.

Learning Resources
Each registrant will receive a copy of the student notes and lab solutions, a certificate of completion, and a CD containing all the tools covered in the course and CD containing all the tools covered in the course.

Contact Us
This course is provided on-site, and can be tailored to your particular requirements. If you would like our trainings delivered at your premises, or for any additional information please contact us. Please email us at info@scmGalaxy.com

Build and Release Training In Bangalore | Build and Release Training in India | Build and Release Training in Hyderabad | Build and Release Training in Delhi | Build and Release Training in Pune | Build and Release Trainer In Bangalore | Build and Release Trainer in India | Build and Release Trainer in Hyderabad | Build and Release Trainer in Delhi | Build and Release Trainer in Pune

Tagged : / / / / / / / / / / / / / / / / / / / / / / / / / / / /

SCM Build and Release Engineer Jobs Website | Portal

scm-build-and-release-engineer-jobs-website

Build and Release Engineer Jobs | Build Engineer Jobs | Clearcase Administrator Jobs | Configuration Engineer Jobs | SCM Administrator Jobs | Release Engineer Jobs | Perforce Administrator Jobs | Subversion Jobs | Github Jobs | SCM Engineer Jobs |

Tagged : / / / / / / / / / / / / / / / / / / /

Performance Optimization of Build Server | Performance Optimization Guide

build-server

Performance Optimization Checklist of Build Servers

Build Infrastructure Level

1.  Do you really need to build all source code or only the part of code which has changes?

2. Project should be divided into multiple modules/component which can be build independently and should be integrated when it needed.

3. Understand technology and make use of performance related features which will help you. e.g make, visual studio and maven has some feature which help us to compile only code which was changed also, some performance tuning features should be explored.

4. Compile dependent project only there are changes. no need to compile all the time.

5. Distribute application in non-compiled and to be compiled files. e.g src, docs and copy only src to comile. docs files cane be used while creating installer.

6. Plan for disk usage growth upfront.

Application Server level

  1. Apache Server optimization and proper log setting
  2. Disabling unused modules and component which will help performance.
  3. Follow best practices of Module Configuration, Apache Server Configuration etc

 System level

  1. Check if any background task/services is running which is consuming cpu/memory and can be  stopped and not relevant.
  2. Keep system uptodate
  3. Avoid using build server for any other task – If you must edit components or install software, build or edit the components on another machine and copy them over.
  4. Use high speen drive for i/o operations

Build Server application level

http://www.cloudbees.com/sites/default/files/whitepapers/7WaysToOptimizeJenkins.pdf

  1. Keep log files maintenance and truncate regularly. have limited build records.
  2. Move build to document server. not to keep in build server
  3. Take advantage of distribute build server using agents/slaves/nodes etc
Tagged : / / / / / / / / / / / / / / /