#Developer Info for BlocksWorld For Teams Blocks World for Teams (BW4T) is a testbed for team coordination. BW4T allows for games with human-human, agent-agent and human-agent teams of variable sizes. The goal is to jointly deliver a sequence of colored blocks in a particular order as fast as possible. A complicating factor is that the players cannot see each other.
[Self-explaining Agents - A Study in the BW4T Testbed for Team Coordination]
Change your current directory to ${repository_root}/bw4t
cd ./bw4t/
First compile and install the bw4t-core
to your local maven repository.
mvn -pl bw4t-core install
Then test or install the rest of bw4t
as follows:
mvn test
Change your current working directory to ${repository_root}/bw4t
cd ./bw4t/
Make sure you have the latest version of the master
branch
git checkout master
git pull
Make a new branch to update the version of the branch
git checkout -b master_release
git push --set-upstream origin master_release
Use maven to update the pom files, replace ${version-number}
with the new version number
mvn versions:set "-DnewVersion=${version-number}"
Ensure that the system will still build with the changed pom files
mvn clean install
If no errors occur we can remove the backups of the old pom files
mvn versions:commit
Upload your changes to github and create a pull request
git commit -a -m "Releasing version ${version-number}!"
Tag the new version
git tag -a v${version-number} -m "Release Version ${version-number}"
Use maven to update the pom files again to set the version to the next higher SNAPSHOT version number
mvn versions:set "-DnewVersion=${version-number+1}"
mvn clean verify
mvn versions:commit
git push --tags
The local branch can now be deleted
git checkout master
git branch -D master_release
On the Github website, make a new draft version and use the tag that you made during the above steps. Don't forget to upload the built jar files to the release!
gebruik een github pull-request om the master_release branch met the master te mergen
The BW4T Git Repository can be found at GitHub.
- Never push anything to the master branch.
If you want to work on something as a group: create a new branch, commit and add your changes and create a pull request. Only the git master is allowed to merge the changes to the master branch. All other unauthorized commits on the master branch will be reverted.
- Never branch off of the legacy branch.
Branch off of the branch created by your group or the master branch instead. The legacy branch
- If you're done with your branch, delete the branch.
You can delete your local branch with
git branch -D BranchName
, where BranchName is the name of your branch. You can delete the remote branch by pushing the branch and putting a colon in front of the branch as such:git push origin :BranchName
, where BranchName is the name of your branch.
- Never perform a force-push.
Never try to rewrite history in Git. This should be avoided at all costs. If you want to revert a specific commit, use the
git revert
.
- If your branch is a second level branch, prepend the first level branch name.
So for example: in Group 1 we created a branch called
development
to do the refactoring. If I want to add some tests to the client and make a branch calledclient_testing
, then the actual name has to be called:development_client_testing
.
- Help! I accidentally changed a file, which I didn't intend to change. How do I get a copy of the file, as it was before?
Run
git checkout -- /path/to/file/
on the file you want to revert the changes. Tip: accidentally changed all the classpath files and are you lazy enough to not checkout every single .classpath file? Make use of the wildcard like this:git checkout -- *.classpath
- How do I see what file(s) I changed?
Run
git status
.
- Think something should be added to this FAQ?
Edit this ReadMe in ${repository_root}/README.md A handy tool to do markdown editing is StackEdit.io
For more information on Git have a look on StackOverflow or learn some great workflows via the tutorials at Atlassian.
Integration Testing is done by Jenkins on our Integration Server. Whenever pushes to certain branches are made, the changes are pulled by the Integration Server. The Integration Server then runs all the tests via Maven and publishes the test results.
- It is never okay to have a build fail, without fixing it before you continue.
To prevent this, make sure you run Maven before you push to a branch (
mvn clean install
or in Eclipse: Run As -> Maven Build...(goals:clean install
)). In the case that you do have a failing build, make it your first priority, to fix the build, before you continue any other work.(reverting if necessary)
- What is the difference between Maven and Jenkins regarding testing?
Jenkins runs maven whenever it gets a build request. It interprets the testing, checkstyle, coverage and findbugs results and keeps a history of the output generated by maven.
- Think something should be added to this FAQ?
Edit this ReadMe in ${repository_root}/README.md A handy tool to do markdown editing is StackEdit.io
The following plugins are required for the Jenkins installation:
- Cobertura Plugin
- GIT client plugin
- GIT plugin
- GitHub API Plugin
- GitHub plugin
- Xvnc plugin
The Code Analysis and Statistics of BW4T is done by Sonar.
- I don't have any frequently asked questions right now. Do you have a question or think something should be added to this FAQ?
Edit this ReadMe in ${repository_root}/README.md A handy tool to do markdown editing is StackEdit.io
The following plugins are required for the sonar installation:
- Artifact Size
- Checkstyle
- Cobertura
- Java