Intro to Building - raisercostin/software-wiki GitHub Wiki

The patterns regarding software development projects related to building and deploying the software. There are several aspects that influence these: language, build tool, scm tool, scm provider, binary repository provider, docker repository provider.

Dimensions

Language & Runtime

JVM: java, kotlin, scala

javascript

.net: c#

swift

Build Tool

maven

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<prerequisites>
		<maven>3.0.4</maven>
	</prerequisites>

gradle

build.xml

sbt (java&scala)

build.sbt or *.sbt

name := "namek-events"

version := "1.0"

scalaVersion := "2.11.8"

//utils:mine
libraryDependencies += "org.raisercostin" %% "jedi-io" % "0.58"
libraryDependencies += "org.raisercostin" % "raisercostin-commons" % "2.26"


//utils:test
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.4" % Test
libraryDependencies += "junit" % "junit" % "4.12" % Test

//utils:logging
libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.2.3"

//utils:domains
libraryDependencies += "joda-time" % "joda-time" % "2.9.9" //- deprecated in java8. use java.time.*

resolvers += "raisercostin resolver" at "http://dl.bintray.com/raisercostin/maven"
resolvers += "sonatype-snapshoit" at "https://oss.sonatype.org/content/repositories/snapshots/"

project/plugins.sbt or project/*.scala

ant (deprecated)

build.xml

SCM (SourceControlManager) Tool

git

  • .gitignore

    target\
    
  • pom.xml

      <project>
      ...
         <scm>
      	    <connection>scm:git:${github.url}.git</connection>
              <developerConnection>scm:git:${github.url}.git</developerConnection>
          	<url>${github.url}</url>
          	<tag>${project.artifactId}-${project.version}</tag>
          </scm>
      ...
      	<properties>
      		<createChecksum>false</createChecksum>
      		<github.user>raisercostin</github.user>
      		<github.repo>${project.artifactId}</github.repo>
      		<github.url>https://github.com/${github.user}/${github.repo}</github.url>
      	</properties>	
      ...
      </project>
    

svn (deprecated)

csv (deprecated)

SCM (SourceControlManager) Provider

github - public

github - private

gitlab - public

gitlab - private

bitbucket - public

bitbucket - private

local file - private

local dropbox - private

CI Tool

gocd

jenkins

travis

.travis-ci.yml:

cache:
  directories:
  - $HOME/.m2

language: java

jdk:
  - oraclejdk8

install: mvn install --show-version -DskipTests=true  --errors --batch-mode
#script: mvn test --batch-mode -DskipTests=true
script: mvn test --batch-mode

notifications:
  email:
    recipients:
      - [email protected]
    on_success: always # default: change
    on_failure: always # default: always

branches:
  only:
  - team/ship4
  - master

Docker build

hub.docker.com - public

hub.docker.com - private

internal private registry

local registry

⚠️ **GitHub.com Fallback** ⚠️