Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Collaborative Software Development Tools

This talk discusses the benefits of using a software development environment in the cloud, to increase productivity and quality while reducing costs.
by

Fabiane Nardon

on 22 June 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Collaborative Software Development Tools

Collaborative Development Tools:
Using Maven, Subversion, Git,
Hudson, Nexus and Redmine www.toolscloud.com

@toolscloud

development tools.
on the cloud.
and lots of information! Hudson Open source continuous integration system. Main features:
Allows per project access control
Supports Maven, Ant, script execution, etc
Email and other alerts when a build is broken
Integrates with Subversion, Git, Redmine and LDAP
Several plugins available
Very good documentation How to use Hudson on your project:
Create a new build for the project
Define from where to retrieve the code
Define when the build should be executed Main Concepts:
Build: execution of a task
Broken build: a build that was not successful
Successful build: a build that passed the success criteria Subversion is an open source revision control system, created to replace CVS, to fix many of its issues. Main features:
Atomic commits
Folders and files keep history when renamed or moved
Diff of binary files
Served via Apache HTTP
Tags and branches are cheap operations
File lock
Support for path based access control
LDAP integration Main shortcomings:
.svn folders
Only the commit timestamp is kept, not the modification timestamp
Filenames with special characters are problematic
No local history on developer's computer Main concepts:
Checkout: retrieving the code from the remote repository to the local computer
Import: importing the code to the remote repository
Commit: sending changes to the remote repository
Update: retrieving the last updats from the remote repository to the local computer
Revert: reverting the local changes Main concepts:
Revision Number: each commit/change in the Subversion repository generates a revision number
Commit comment: comment explaining what was changed
Hook: Subversion allows scheduling small programs or scripts to be executed when an operation is done. For example, a script that should be executed whenever a commit is done
trunk: where the working code is commited
tags: used to name a certain revision of the code
branch: a revision can become a branch. A branch can be modified and tracked independently of the original code.

* Note: Subversion does not really differentiates tags from branches. It's just a convention. How to import your code to Subversion:
Create a folder for your project using svn mkdir
Create folders yourProject/trunk, yourProject/tags and yourProject/branches
Add your files and commit them! Nexus is an open source Maven artifact repository. Main features:
Store snapshots and releases
Cache of remote repositories
Configurable artifacts location
Stores artifacts in the file system, making backups easier and avoiding database corruption Main concepts:
Snapshot Repository: repository that saves snapshots
Release Repository: repository that saves releases
Repository Group: a grouping of several repositories. Easier management: allows the user to point to a single repository, while the repository manager can add or remove repositories to the group as needed How to use Nexus on your project:
Modify your settings.xml (or pom.xml, if you prefer) pointing to the Nexus repository
Configure your project POM.xml to deploy your artifacts on Nexus Main features:
Supports projects and subprojects
LDAP integration
Sofisticated access control
Several issue types, custom issue types
Customized workflow
Wiki
Forum
Several plugins
Version control system integration
Time control and project management Open source issue tracker, made in Ruby. Redmine How to use Redmine on your project:
Create a project on Redmine
Give the permissions you need
Integrate with the version control system
Open issues, delegate issues and manage your project! Main concepts:
Issue: a bug, a new feature, a task...
Open: A non resolved issue
Fixed: a resolved issue
Closed: resolved and verified issue How to use GIT in your project:
If using SVN, you can migrate using git-svn
You can also use git-svn to interact with existing svn repositories
If it is a clean project, simply clone the repository and add your code! Main concepts:
Local branch: branch in the local computer
Remote branch: branch in the remote server
clone: a repository clone, more or less the equivalent of a SVN checkout
pull: retrieve changes from the repository
push: send changes to the repository Main features:
Each checkout is a full copy of the repository, no need for a "central repository"
Very simple to create and merge branches Open source distributed version control system GIT http://zachgoldberg.com/2010/08/12/help-my-girlfriend-learned-how-to-use-a-bug-tracker/ Maven Open source building tool that generates several artifacts. Artifacts are deliverables generated by the project: jars, wars, zips, docs, etc. Main concepts:
POM: xml file with the project definitions, project dependencies, etc.
Dependencies: libraries used by the project
.m2: folder in the user home dir to keep local copies of project dependencies
.m2/settings.xml: file with the user settings
Snapshot: a work version, that will have several intermediate releases
Release: a finished version. A named release has to be unique Main features:
Defines a standard directory layout
Generates several artifacts: jar, war, exe, zip
Executes unit tests
Generates documentation and project website
Dependency management
Many plugins available Main commands:
install: compiles, run tests, generates artifacts and add them on the .m2 folder
clean: clean the target folder, where the generated files are saved
deploy: sends the generated artifact to the remote repository
<command> -U: forces dependency update
<command> -o: run offline How to use Maven on your project:
Follow the the default directory layout
Split your project in modules as required
Create a pom.xml file for each module
Create a pom.xml file for the project, aggregating the modules 70% of the working time of small and
medium size software development
companies is spent managing
IT infrastructure resources Why? How? * We don't do software like in the old days anymore! Distributed Teams Telecommuting Quality Agile Methodologies Will you miss this opportunity? Cloud
Computing Backup Conectivity Elasticity Reliability Issue Tracker Revision Control System Continuous Integration Wiki/Fórum/IRC Single Sign on Libraries Repository Jira
Bugzilla
Trac
Mantis
Redmine Subversion
Git
Mercurial Hudson
Continuum
Bamboo
CruiseControl Nexus
Archiva
Artifactory
File System LDAP Confluence
Redmine Wiki
Drone
Full transcript