Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Git repo deployen naar applicatie server.

Pagina: 1
Acties:

  • ObiTewodros
  • Registratie: April 2011
  • Laatst online: 05-04 22:22
Hallo,

Wij zijn met een team van 5 mensen gestart met het ontwikkelen van een web applicatie. Als versiebeheersysteem maken wij gebruik van git. Het is de bedoeling dat men de git repository kan deployen op productie omgeving(tomcat) zonder het eerst te pullen met eclipse en zelf handmatig op de productie omgeving te zetten en builden.

Ik ben vandaag bezig geweest met Jenkins, maar ik vind het best onduidelijk. Het is met veel geklooi gelukt om de git repository te pullen naar Jenkins en het te "bouwen", maar wat is de volgende stap? Hoe draai ik nu de applicatie?

Met deze instellingen heb ik de repo gepulled naar Jenkins:
Afbeeldingslocatie: http://puu.sh/biF3l/cedb91374d.png

Nu heb ik dit:
Afbeeldingslocatie: http://puu.sh/biF8F/b584c372c7.png

Maar hoe start ik het nu?

Ik snap nog het concept van Jenkins niet. Dat is eigenlijk niet gek als ik naar de documentatie kijk :P

Maar wat zijn andere oplossingen?
Kan ik met jenkins ook unit testen bij het builden?
Wat zijn best practices op dit gebied?

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 20-11 15:59

Gerco

Professional Newbie

First of all: Jenkins is niets meer of minder dan een (heel geavanceerde) script runner. Jenkins kan je application niet "draaien", het heeft geen idee wat jouw applicatie is en wat draaien überhaupt betekent voor jouw applicatie.

In het geval van een tomcat applicatie zul je ongeveer de volgende workflow moeten doorlopen om die te deployen op je applicatie server:
  1. Source code inchecken en pushen naar Bitbucket (daar host je je code, kan natuurlijk ook een andere centrale server zijn;
  2. De source code builden en daaruit een .war file verkrijgen;
  3. Die .war file in Tomcat deployen.
Je kunt stap 2 door Jenkins laten doen, hoe dat precies moet is afhankelijk van je project. Als je ant of maven gebruikt is het redelijk eenvoudig aangezien Jenkins al snapt hoe een ant of maven build te draaien. Je moet dan een "build step" toevoegen die de relevante actie voor jouw project uitvoert. Dat kan dus een maven of ant build zijn, maar ook een shell script of wat jouw project ook voor build systeem gebruikt.

Step 3 kun je ook door Jenkins laten doen, misschien in een post-build stap, misschien als onderdeel van je build. Als je ant gebruikt zijn er handige scripts beschikbaar die een .war naar je Tomcat server kunnen uploaden. Voor maven zijn er ook verschillende plugins die dingen naar Tomcat kunnen deployen. Jenkins heeft ook een deploy plugin waarmee je een project naar een Tomcat of andere applicatie server kan deployen.

Je kan via Jenkins ook JUnit (en andere) tests draaien. Gewoon uit laten voeren als onderdeel van je build en het vinkje in Jenkins aanzetten om de resultaten te verzamelen. Jenkins gaat dan grafiekjes maken van het aantal geslaagde tests, etc.

[ Voor 6% gewijzigd door Gerco op 02-09-2014 23:01 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • ObiTewodros
  • Registratie: April 2011
  • Laatst online: 05-04 22:22
Gerco schreef op dinsdag 02 september 2014 @ 23:00:
First of all: Jenkins is niets meer of minder dan een (heel geavanceerde) script runner. Jenkins kan je application niet "draaien", het heeft geen idee wat jouw applicatie is en wat draaien überhaupt betekent voor jouw applicatie.

In het geval van een tomcat applicatie zul je ongeveer de volgende workflow moeten doorlopen om die te deployen op je applicatie server:
  1. Source code inchecken en pushen naar Bitbucket (daar host je je code, kan natuurlijk ook een andere centrale server zijn;
  2. De source code builden en daaruit een .war file verkrijgen;
  3. Die .war file in Tomcat deployen.
Je kunt stap 2 door Jenkins laten doen, hoe dat precies moet is afhankelijk van je project. Als je ant of maven gebruikt is het redelijk eenvoudig aangezien Jenkins al snapt hoe een ant of maven build te draaien. Je moet dan een "build step" toevoegen die de relevante actie voor jouw project uitvoert. Dat kan dus een maven of ant build zijn, maar ook een shell script of wat jouw project ook voor build systeem gebruikt.

Step 3 kun je ook door Jenkins laten doen, misschien in een post-build stap, misschien als onderdeel van je build. Als je ant gebruikt zijn er handige scripts beschikbaar die een .war naar je Tomcat server kunnen uploaden. Voor maven zijn er ook verschillende plugins die dingen naar Tomcat kunnen deployen. Jenkins heeft ook een deploy plugin waarmee je een project naar een Tomcat of andere applicatie server kan deployen.

Je kan via Jenkins ook JUnit (en andere) tests draaien. Gewoon uit laten voeren als onderdeel van je build en het vinkje in Jenkins aanzetten om de resultaten te verzamelen. Jenkins gaat dan grafiekjes maken van het aantal geslaagde tests, etc.
Bedankt. Je verhaal is heel duidelijk. Het is nu duidelijk wat Jenskins doet. Het gebruik van Jenskins nog steeds onduidelijk, maar daar ga ik morgen mee verder. Ik zal me ook verdiepen in maven en ant. Was wel van plan om maven te gebruiken voor dependency management.

  • ObiTewodros
  • Registratie: April 2011
  • Laatst online: 05-04 22:22
Gerco schreef op dinsdag 02 september 2014 @ 23:00:
First of all: Jenkins is niets meer of minder dan een (heel geavanceerde) script runner. Jenkins kan je application niet "draaien", het heeft geen idee wat jouw applicatie is en wat draaien überhaupt betekent voor jouw applicatie.

In het geval van een tomcat applicatie zul je ongeveer de volgende workflow moeten doorlopen om die te deployen op je applicatie server:
  1. Source code inchecken en pushen naar Bitbucket (daar host je je code, kan natuurlijk ook een andere centrale server zijn;
  2. De source code builden en daaruit een .war file verkrijgen;
  3. Die .war file in Tomcat deployen.
Je kunt stap 2 door Jenkins laten doen, hoe dat precies moet is afhankelijk van je project. Als je ant of maven gebruikt is het redelijk eenvoudig aangezien Jenkins al snapt hoe een ant of maven build te draaien. Je moet dan een "build step" toevoegen die de relevante actie voor jouw project uitvoert. Dat kan dus een maven of ant build zijn, maar ook een shell script of wat jouw project ook voor build systeem gebruikt.

Step 3 kun je ook door Jenkins laten doen, misschien in een post-build stap, misschien als onderdeel van je build. Als je ant gebruikt zijn er handige scripts beschikbaar die een .war naar je Tomcat server kunnen uploaden. Voor maven zijn er ook verschillende plugins die dingen naar Tomcat kunnen deployen. Jenkins heeft ook een deploy plugin waarmee je een project naar een Tomcat of andere applicatie server kan deployen.

Je kan via Jenkins ook JUnit (en andere) tests draaien. Gewoon uit laten voeren als onderdeel van je build en het vinkje in Jenkins aanzetten om de resultaten te verzamelen. Jenkins gaat dan grafiekjes maken van het aantal geslaagde tests, etc.
Bij de configuratie van de "Job" heb ik twee dropdown menus: Bouwstappen en Acties na bouwpoging. Bij bouw tappen heb ik keuze tussen Windows batch commando, shell-script en top-niveau Maven taken.

Als ik het goed begrijp moet ik dus zelf een shell script schrijven die de "job" in de juiste map van tomcat server zet en het vervolgens build?

  • Sv3n
  • Registratie: Mei 2002
  • Laatst online: 20:43
Het kan wel met Jenkins maar dan zul je zelf waarschijnlijk wat scripts aan elkaar moeten knopen. Wil je wat meer out of the box mogelijkheden zou je eens kunnen kijken naar Bamboo: https://www.atlassian.com/software/bamboo

Last.fm
Films!


  • ObiTewodros
  • Registratie: April 2011
  • Laatst online: 05-04 22:22
Gerco schreef op dinsdag 02 september 2014 @ 23:00:
First of all: Jenkins is niets meer of minder dan een (heel geavanceerde) script runner. Jenkins kan je application niet "draaien", het heeft geen idee wat jouw applicatie is en wat draaien überhaupt betekent voor jouw applicatie.

In het geval van een tomcat applicatie zul je ongeveer de volgende workflow moeten doorlopen om die te deployen op je applicatie server:
  1. Source code inchecken en pushen naar Bitbucket (daar host je je code, kan natuurlijk ook een andere centrale server zijn;
  2. De source code builden en daaruit een .war file verkrijgen;
  3. Die .war file in Tomcat deployen.
Je kunt stap 2 door Jenkins laten doen, hoe dat precies moet is afhankelijk van je project. Als je ant of maven gebruikt is het redelijk eenvoudig aangezien Jenkins al snapt hoe een ant of maven build te draaien. Je moet dan een "build step" toevoegen die de relevante actie voor jouw project uitvoert. Dat kan dus een maven of ant build zijn, maar ook een shell script of wat jouw project ook voor build systeem gebruikt.

Step 3 kun je ook door Jenkins laten doen, misschien in een post-build stap, misschien als onderdeel van je build. Als je ant gebruikt zijn er handige scripts beschikbaar die een .war naar je Tomcat server kunnen uploaden. Voor maven zijn er ook verschillende plugins die dingen naar Tomcat kunnen deployen. Jenkins heeft ook een deploy plugin waarmee je een project naar een Tomcat of andere applicatie server kan deployen.

Je kan via Jenkins ook JUnit (en andere) tests draaien. Gewoon uit laten voeren als onderdeel van je build en het vinkje in Jenkins aanzetten om de resultaten te verzamelen. Jenkins gaat dan grafiekjes maken van het aantal geslaagde tests, etc.
Ik heb de deploy plugin geinstalleerd en deze tutorial gevolgd:
http://macgyverdev.blogsp...ins-install-packaged.html

Het is niet duidelijk voor mij wat ik bij WAR/EAR files en bij Context path moet invullen. Dit wordt er over gezegd in de tutorial:
In this view make sure the path to the packaged war is relative to the workspace area of the job. Most probably it will be "target/yourapp.war".
Ik weet niet wat ermee bedoel wordt.
Afbeeldingslocatie: http://puu.sh/bjImt/b9142ad01c.png
MavenJankingsGit is de naam van de webapplicatie en niet van de job.

Het builden verloopt wel succevol maar het deployen naar tomcat lijkt overgeslagen te worden.

Zo ziet het einde van mijn console output eruit:
Afbeeldingslocatie: http://puu.sh/bjIxs/4c283147f3.png

Zo hoort het volgens de tutorial uit te zien:
Afbeeldingslocatie: http://puu.sh/bjIIx/f3af16c78d.png

Ik mis dus de stap waarin de .war file naar tomcat gedeployed moet worden.

Ik heb op dit moment tomcat 8 terwijl ik bij de deploy plugin tot 7.x kan gaan. Ik heb dus gekozen voor tomcat 7.x. Kan dit problemen opleveren?

  • mrwiggs
  • Registratie: December 2004
  • Laatst online: 21-11 09:11
Ik gebruik hiervoor Fabric (Python). Ik roep via de command line fab deploy:"msg" aan en het push de repo en zorg dat deze ook op de server gedeployed wordt. Een versimpeld (Django) voorbeeld (local() wordt lokaal uitgevoerd, run() wordt op alle hosts uitgevoerd). Aangezien jij Java gebruikt is dit voorbeeld alleen ter illustratie van het idee (al kun je Fabric wel in jouw geval gebruiken!)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from fabric.api import *

env.hosts = ['myuser@myhost.com:22']

def deploy(msg):
    local('git add -A')
    local('git commit -m "%s"' % msg)

    local("git push origin master")

    with cd("~/webapps/" + APP_NAME + "/repo.git"):
        run('git pull origin master')
        run('GIT_WORK_TREE=../src git checkout -f')
        run('GIT_WORK_TREE=../src git reset HEAD --hard')
    
    return "Deployed"


n.b.: de repo.git op de productieserver mag een bare-repo zijn.

[ Voor 39% gewijzigd door mrwiggs op 07-09-2014 14:22 ]


  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 21-11 15:31

TheNephilim

Wtfuzzle

Je kunt gratis één project deployen met http://ftploy.com, vanaf een Git repo.
Pagina: 1