Table of Contents

DevOps

Trivia of Technique

JWT

Create a JWT Key

openssl rand -base64 32

Practices & Deployment Topics

Mature revision control workflow uses some branching conventions combined with some access policies to ensure that work being done in parallel by a number of developers can proceed with a minimum of collision-caused trouble, and with maximum safety.

Continuous Integration

Jenkins

Jenkins topics

Maven

Maven topics

Archiva

Archiva topics

JMeter

JMeter topics

Gatling

Gatling topics

Revision Control: git (self-hosted)

Git Usage

Basic usage, cheatsheet, tips, and tricks for git

Repositories

In this proposal, there are three tiers of repository:

Vault Repository

Only build/release admins will have write-access to the “vault” repository. The only route for changes into this repository is a push from the shared development repository. This will only be done per release, by a build/release admin, and can be deferred until all aspects of a release and the associated changes are fully vetted. This repository also serves as an off-site backup.

Central/Shared Development Repository

This is the repository that all developers will clone their individual working repositories from, which means it is also the repository that will receive the pushes of changes from developers. The only direct changes made in this repository will be official release merges to the master branch, performed only by a build/release admin, for the purpose of integrating changes for a release. When a release has been built, tested, and deployed successfully, it can then be pushed to the vault repository.

Individual/Developer Clone Repositories

These are cloned from the shared development repository, and serve as working space to make, and ultimately commit, changes. When ready, changes are pushed from these, by their respective owners, to the shared central repository.

Practices & Policies

These practices and policies are implied by the structure of the repositories.

Master Branch

The master branch of the central shared repository is locked, allowing no changes to be pushed to it from any clones. This protects the primary change history from accidental damage. It will only be manipulated via merge from the development branch, and only by a build/release admin, at build/release/patch time. This may, at some point, be automated

Development Branch

There is a branch which serves as the shared change history, which is eligible to receive changes pushed from individual/developer clones. This branch has the name dev, and serves as the staging tier for all changes to be integrated and tested prior to builds/releases. Every individual/developer clone should be “switched” to the dev branch for all revision control activity. Any changes made on a clone's master branch will be rejected by the central shared repository, so diligence in correct branch usage will be in everyone's best interest.

Individual Branches

Optionally, further branching can be done in the clones at the developer's discretion. This is encouraged, and can be helpful in keeping sets of changes isolated and organized, potentially preventing merge/collision difficulties, or even helping to resolve such difficulties once they've occurred.

Basic Workflow

Typical developer change cycle workflow:

The central build cycle workflow:

Optional developer workflow:

Revision Control: github

The github hosting platform operates similarly to the above self-hosted scheme, with some differences that makes sense to github's free software community sensibilities.

Details: under construction

New branches created in upstream repo

You may want a new branch, created in upstream repo, populated into your fork of that repo and your local clone(s) of your fork of that repo, so that you can work on the new branch, or at least see it. With GitHub, this isn't as trivial as natively-stored repos.

First, you'll need to make sure your local clone of your repo fork knows about its upstream:

git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

Then, you'll need to make sure the new upstream branch is pulled into your local clone:

Trivia



Links: Tech InfoLinux Info