IML Contributor Workflow
Software Contributor Documentation Table of Contents
Overview
1. Clone Repo
Clone the desired repository locally, for example, GUI.git
git clone git@github.com:whamcloud/GUI.git
2. Add - Modify - Delete Code
List the current branches
cd gui
git branch
git branch --all
Create a new branch for example, my-new-branch
git branch my-new-branch
Change to the branch called, my-new-branch
git checkout my-new-branch
- OR -
git checkout -b my-new-branch
> Add, modify and delete code <
Commit the code
git commit -s -m "This is my fix"
If necessary, sync the code with the origin master if anything has changed:
List the current origin and switch to the master branch
git remote -v
git checkout master
Perform a fetch and rebase (Instead of fetch and merge)
git pull --rebase
Checkout the working branch
git checkout my-new-branch
Put any changes on top of what everyone else has done
git rebase master
Push the changes
git push origin my-new-branch
3. Code Review
Create a pull request in github
Browse to https://github.com/whamcloud
- Go to the desired repository where the new branch was pushed.
- Click on the branches tab.
- Find the branch in the list and click New pull request.
- Choose Reviewers, Labels, Assignees, etc.
- Click Create pull request.
Copy the URL and request a code review
- Either assign reviewers directly in the pull request (PR), or, add a comment to request a code review in the PR.
If the code review is approved by at least two developers, the gatekeeper will merge the pull request onto the master branch.
If comments are left in the PR page, then the developer is responsible for addressing each comment.
- If code changes are required, edit the code, save and commit as described above.
- Test any code changes.
- Rebase the branch onto the master as necessary.
- Re-push any changes to the same branch that was initially pushed.
git push origin my-new-branch
4. Travis CI Platform
Travis provides Continuous Integration testing along with generating releases.
Each Pull Request…
- Triggers travis to run the full set of Automated tests against the github repository.
- Triggers a Code Coverage Report to be activated and generated by codecov.io
5. Jenkins Automated Build Server
Whamcloud provides a Jenkins build server that performs automated tests and generates IML tarball releases for download.
6. Fedora Copr Automated Build System
A number of software dependencies for IML reside in the github repository: manager-for-lustre-dependecies.
The dependencies are reflected in our copr project.
7. Lustre Nodes
In order to install IML and lustre onto a lustre cluster, the following are necessary:
- A Lustre Cluster - Either of the following:
- “Bare-metal” set of servers.
- Virtual machine environment such as vagrant, KVM or docker.
- Network access to the Fedora Copr RPMs.
- Ability to copy the proper IML tarball to the administrator node of the cluster.