1. Correspondences Scrum/GitHub/Gitlab
Scrum | GitHub | GitLab |
---|---|---|
User Story |
Issues |
Issues |
Task |
Task Lists/dependency issues |
Task Lists |
Epic |
?? |
Epics |
Points/Estimation |
Weights ($) |
Weights |
Product Backlog |
Issues Lists |
Issues Lists |
Priorities |
Labels |
Labels |
Sprint |
Milestone |
Milestone |
Burndown Chart |
Burndown Chart |
|
Agile board |
Project board |
Issue Board |
2. Build
Let’s do a quick poll about build tools

2014 Study:
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="java-build-tools" default="jar">
<property name="src.dir" value="src"/>
...
<path id="lib.path.id">
<fileset dir="${lib.dir}" />
</path>
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="lib.path.id"/>
</target>
<target name="jar" depends="compile">
<mkdir dir="${jar.dir}"/>
<jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}"/>
</target>
</project>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.technologyconversations</groupId>
<artifactId>java-build-tools</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
</plugin>
</plugins>
</build>
</project>
apply plugin: 'java'
apply plugin: 'checkstyle'
apply plugin: 'findbugs'
apply plugin: 'pmd'
version = '1.0'
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
testCompile group: 'org.hamcrest', name: 'hamcrest-all', version: '1.3'
}
3. Automate issue branches
Add this to your workflow YAML configuration:
on:
issues:
types: [assigned]
issue_comment:
types: [created]
pull_request:
types: [closed]
jobs:
create_issue_branch_job:
runs-on: ubuntu-latest
steps:
- name: Create Issue Branch
uses: robvanderleek/create-issue-branch@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

4. Use tags
git tag 1.1.0 -m "Release 1.1.0"
git push origin tag 1.1.0
Tagging practices:
-
You don’t tag branches. You tag commits!
-
You should add a tag to mark a released version. If you then need to make bug fixes to that release, you would create a branch at the tag
-
If you checkout a tag, you will need to create a branch to start working from it
More here.
5. Meaningful .gitignore
file
.gitignore
file# Output directory for HTML files
output/
Gemfile.lock
*.html
.DS_Store
topics
node_modules
package-lock.json
# Ignore Gradle project-specific cache directory
.gradle
# Ignore Gradle build output directory
build
.project
.settings
settings.json
Node.js
(only beginning!)# Created by https://www.toptal.com/developers/gitignore/api/node
# Edit at https://www.toptal.com/developers/gitignore?templates=node
### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
6. Meaningful commit messages
~/.gitconfig
file# Git Commit, Add all and Push β in one step.
cap = "!f() { git add .; git commit -m \"$@\"; git push; }; f"
# NEW.
new = "!f() { git cap \"π¦ NEW: $@\"; }; f"
# IMPROVE.
imp = "!f() { git cap \"π IMPROVE: $@\"; }; f"
# FIX.
fix = "!f() { git cap \"π FIX: $@\"; }; f"
# RELEASE.
rlz = "!f() { git cap \"π RELEASE: $@\"; }; f"
# DOC.
doc = "!f() { git cap \"π DOC: $@\"; }; f"
# TEST.
tst = "!f() { git cap \"β
TEST: $@\"; }; f"
6.1. Burndown charts
A nice add-on app that takes a repo and draws the current milestone (not closed) burndown chart :


7. Issue management
It is very handful to connect you issues and tasks on a single project board!
To access your project board or create a new one go to:

To add a new issue as a task on the project board go to:

And finally, enjoy your board with all the issues in there. Instead of simple kanban board you can even use techniques as YAGNI approach on a separate board to prioritize them.

8. Github organizations
Organizations are shared accounts where businesses and open-source projects can collaborate across many repositories at once.
If working on a project for several platforms is your case, this Github feature could be very convinient to use:

9. US template good practice
Github provides with a possibilty to create templates of issues, so users will be following the same structure of US in a repository. The template should be in .github/ISSUE_TEMPLATE/user-story-template.md
Here is an example how it could look like:
---
[
The user story should have a reason to exist: what do I need as the user described in the summary?
This part details any detail that could not be passed by the summary.
]
### Acceptance Criteria
1. [If I do A.]
1. [B should happen.]
[
Also, here are a few points that need to be addressed:
1. Constraint 1;
1. Constraint 2;
1. Constraint 3.
]
### Resources:
* Mockups: [Here goes a URL to or the name of the mockup(s) in inVision];
* Testing URL: [Here goes a URL to the testing branch or IP];
* Staging URL: [Here goes a URL to the feature on staging];
### Notes
[Some complementary notes if necessary:]
* > Here goes a quote from an email
* Here goes whatever useful information can existβ¦
* This tenplate is taken from https://github.com/AlphaFounders/style-guide/blob/master/agile-user-story.md
---