Mise en place de l'environnement
- Utiliser un shell de commande efficace (cf. https://github.com/sorin-ionescu/prezto)
zsh
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
chsh -s /bin/zsh
curl -fLo ~/.zprezto/modules/completion/external/src/_docker https://raw.githubusercontent.com/docker/cli/master/contrib/completion/zsh/_docker
- Mettre en place l’environnement Maven pour java. Penser à configurer le proxy pour maven si vous êtes sur une connexion filaire. Attention, aussi à la configuration Java et IPV6.
curl -s "https://get.sdkman.io" | bash
sdk install java 8u151-oracle
sdk install maven 3.5.2
export https_proxy=http://<login>:<passwordUTLN>@proxy.univ-tln.fr:3128/ && export http_proxy=${https_proxy}
export _JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true -Djava.net.useSystemProxies=true"
- Demander des licences étudiants pour
- (Optionnel pour les M1) Pour le stockage de vos artefacts maven ou images docker BinTray ou pour les projets sensibles le serveur Nexus du LSIS.
- (Optionnel pour les M1) Pour l’intégration continue Travis CI ou pour les projets sensibles le serveur Jenkins du LSIS.
- (Optionnel pour les M1) pour l’analyse de votre code utilisez sonar avec vos identifiants UTLN.
- Ajouter si besoin les tokens d’identification des différents services dans le
~/.m2/settings.xml
<settings>
<!-- Cette partie centralise l'authentification des serveurs -->
<servers>
<!-- Pour protéger vos passwords/token :
- generate a master password : mvn - -encrypt-master-password
- encrypt each passwords : mvn - -encrypt-password
-->
<!-- Si vous avez un compte github créer un token avec le scope repo
https://github.com/settings/tokens/new
et l'ajouter ici pour utiliser git depuis maven -->
<server>
<id>github</id>
<password>A_GITHUB_TOKEN</password>
</server>
<server>
<id>lsis-nexus</id>
<!-- ATTENTION UTILISER L'EMAIL UTLN -->
<username>VOTRE_EMAIL_UTLN</username>
<password>VOTRE_PASSWORD_UTLN</password>
</server>
<!-- Si vous avez un compte dockerhub
vous pouvez y pousser directement vos images avec maven
-->
<server>
<id>docker.io</id>
<username>YOUR_DOCKER_LOGIN</username>
<password>A_DOCKER_TOKEN</password>
</server>
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<!-- Sonar permet la mesure de la qualité de votre code source
Un serveur pour l'UTLN se trouve ici : https://sonar.lsis.univ-tln.fr
Un fois connecté vous pouvez demander un token ici :
https://sonar.lsis.univ-tln.fr/account/security
-->
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.host.url>
https://sonar.lsis.univ-tln.fr
</sonar.host.url>
<sonar.login>YOUR_UTLN_LOGIN</sonar.login>
<sonar.password>A_SONAR_TOKEN</sonar.password>
</properties>
</profile>
</profiles>
</settings>
Pour chaque projet
- Gestion du code source :
- Créer un projet Java/Maven manuellement ou à partir d’un archetype (https://bruno.univ-tln.fr/maven/simplejava#un_archetype_plus_complet).
- Placer le projet sous le contrôle de Git :
git init(cf. Git de base). Vérifier la présence du .gitignore - Pour l’organisation du travail suivez gestion de projet Agile simple.
- (Git) Créer un entrepôt sur GitHub (avec le même id que celui du projet si vous utilisez l’archetype fourni) et ajouter le comme origine de votre projet :
git add remote …. - Éventuellement créer un channel privé sur la team slack du département d'informatique.
- Ajouter manuellement un hook sur l’entrepôt github vers le channel.
- Ajouter la configuration de travis-ci.com (.org pour un github public) ou du Jenkins du département.
- (Git) Choisir un workflow gitet Mettre à jour le code source et pousser les modifications (pensez à .gitignore)
- (Git, Maven) (Pour les M2) Utiliser Gitflow pour gérer les branches versions et les versions des artefacts Maven.
# ajouter l’entrepôt maven bintray à votre ~/.m2/settings.xml <settings> <profiles> <profile> <repositories> <repository> <snapshots> <enabled>false</enabled> </snapshots> <id>bintray-dptinfoutln-public</id> <name>bintray</name> <url>https://dl.bintray.com/dptinfoutln/public</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <snapshots> <enabled>false</enabled> </snapshots> <id>bintray-dptinfoutln-public</id> <name>bintray-plugins</name> <url>https://dl.bintray.com/dptinfoutln/public</url> </pluginRepository> </pluginRepositories> <id>bintray</id> </profile> </profiles> <activeProfiles> <activeProfile>bintray</activeProfile> </activeProfiles> </settings> #installer le client travis : https://github.com/travis-ci/travis.rb #Si vous n'êtes pas root il faut faire une installation dans le USER_HOME export PATH=~/.gem/ruby/2.3.0/bin:$PATH gem install --user-install travis -v 1.8.8 --no-rdoc --no-ri #construire votre projet à partir du modèle (adapter les 6 dernière lignes) mvn -B archetype:generate \ -DarchetypeGroupId=fr.univtln.bruno.archetype \ -DarchetypeArtifactId=javaSimpleArchetype \ -DarchetypeVersion=0.1.0-develop-6 \ -DgroupId=fr.univtln.bruno.test \ -DartifactId=monprojet \ -Dversion=1.0-SNAPSHOT \ -DprojectShortName=monprojet \ -DgithubAccount=emmanuelbruno \ -DUtlnEmail=emmanuel.bruno@univ-tln.fr cd monprojet # fixes exec perm. chmod +x .travis.scripts/mvn.sh # fixes .travis.yml # corrects line: if [[ "${TRAVIS_COMMIT_MESSAGE}" == "[gitflow]"* ]] && [[ "${TRAVIS_BRANCH}" != v[0-9]* ]] && [[ "${TRAVIS_BRANCH}" != development ]] && [[ "${TRAVIS_BRANCH}" != release-* ]]; then # Edit pom.xml properties vi pom.xml git init curl --silent https://gist.githubusercontent.com/emmanuelbruno/906d26c8ef1ff14a9dea989f71445112/raw/afcbe268816c84a78aa69341e4c800c469f1c643/.gitignore -o .gitignore git status git add . git commit -m "Initial release" #creates a private repository on github with the short name and a description (see. https://hub.github.com/) else manually with git remote add... hub create -p -d "Mon projet" monprojet #Maven JGitflow (M2 students only) mvn jgitflow:feature-start git branch #Others git branch development git checkout development mvn package #Devel. Web site (Twice first time only) mvn site mvn site firefox target/site/index.html & #See it in github hub browse
- (Maven, Artifactory|Nexus|Bintray) Partager les artefacts sur un entrepôt maven privé soit à la main avec
mvn deploysoit via Travis ou Jenkins. - (Docker, Maven) Compiler dans un environnement standard avec Docker
- (Docker, Maven) Livrer dans un environnement standard avec Docker
- (Travis|Jenkins) Configurer un serveur de construction qui intègre le tout :
- réaction à chaque push sur le serveur git
- calcul d’un numéro de version unique
- compilation, test, mesure de la qualité, de la performance,…
- (Bintray|Artifactory|Nexus) déploiement d’un artefact et/ou d’une image docker sur un entrepôt
- (Heroku|Openshift) mise en test ou en production
# go to travis-ci .com or .org for private or public github, click on profile, account, sync account and enable project. # Pushes on github will trigger builds. #To enable sonar and bintray secret needs to be encrypt on travis. See below for token : #https://github.com/settings/tokens #https://sonar.lsis.univ-tln.fr/account/security #https://bintray.com/profile/edit travis login --pro --github-token XXXX travis encrypt UTLN_PASSWORD='XXXXX' --add travis encrypt UTLN_EMAIL=XXXXX@univ-tln.fr --add travis encrypt BINTRAY_API_KEY=XXXX --add env.matrix travis encrypt SONAR_TOKEN=XXXX --add git add .travis.yml git commit -m "adds encrypted secrets in travis.yml." git push # go on travis to see the current feature building ... git merge development mvn jgitflow:feature-finish ... mvn jgitflow:release-start ... mvn jgitflow:release-finish
—- dataentry page —- type : Quickstart enseignement_tags : D14, D35 technologie_tags : Java, Maven, Git, Sonar, CI theme_tags : POO