Tutorial-Diagramm zur Verwendung von Jenkins für die automatisierte Bereitstellung unter Windows

Tutorial-Diagramm zur Verwendung von Jenkins für die automatisierte Bereitstellung unter Windows

Heute werden wir darüber sprechen, wie wir Jenkins+PowerShell-Skripte verwenden, um unsere .NET CORE-Skripte auf dem entsprechenden Server bereitzustellen.

Das von uns hier verwendete Quellcodeverwaltungstool ist TFS. Obwohl der Quellcodemanager relativ alt ist, sind die Prinzipien ähnlich.

1. Installieren Sie Jre. Da unser Jenkins auf Java-Basis entwickelt wurde, müssen Sie zuerst die Java-Laufzeitumgebung auf dem Server installieren.

Der Installationsvorgang ist relativ einfach. Laden Sie JRE von Baidu herunter und installieren Sie es.

Download-Adresse: https://www.java.com/en/download/manual.jsp

2. Laden Sie Jenkins herunter und installieren Sie es. Der Server hier ist Windows, daher ist es am besten, die Windows-Version herunterzuladen. Nach der Installation wird es direkt als Windows-Dienst ausgeführt.

Der Installationsvorgang ist außerdem sehr einfach und es gibt viele Online-Tutorials.

https://jenkins.io/download/

3. Nach der Installation von Jenkins installieren wir bei Bedarf das Berechtigungs-Plugin, um ungenutzte Konten mit nicht genehmigten Berechtigungen zu konfigurieren (dieser Schritt ist optional).

Weitere Einzelheiten finden Sie in diesem Artikel:

https://www.jb51.net/article/161947.htm

4. Der kritischste Schritt ist, wie wir Jenkins verwenden, um unseren Code automatisch bereitzustellen.

Hier gibt es mehrere Punkte. Ich werde den detaillierten Code unten veröffentlichen.

1) Holen Sie sich den neuesten Quellcode in TFS. Hier habe ich den Code nicht über Jenkins erhalten, sondern über den tf-Befehl gezogen.

Der Vorteil hiervon besteht darin, dass ich für alle Jenkins-Aufgaben denselben Quellcode verwenden kann, anstatt für jede Aufgabe eine separate Kopie des Codes abzurufen.

2) Nach dem Abrufen des Codes ist es ganz natürlich, unseren Code über Befehle zu kompilieren. Freunde, die mit .net vertraut sind, sollten wissen, dass es nur wenige Befehle gibt.

3) Nachdem der Code freigegeben wurde, ist es ganz natürlich, ihn auf unsere Site oder unseren Windows-Dienst zu kopieren.

Auch dieser Schritt ist sehr einfach. Sie müssen lediglich die IIS-Site und den Anwendungspool über Befehle stoppen, den Code kopieren, neu starten und die entsprechende Site starten.

Nach einem Satz ist die Arbeit erledigt.

Hier sind einige Screenshots der wichtigsten Schritte:

1. Jenkins erstellt eine Freestyle-Aufgabe

2. Sie müssen nichts weiter auswählen. Solange wir PowerShell-Skripte verwenden, benötigen wir Jenkins, um PowerShell zu unterstützen und Plugins zu installieren.

3. Klicken Sie auf „Speichern“, und Sie sind fertig. Klicken Sie auf „Jetzt erstellen“.

p.s.: Das ausführliche PowerShell-Skript finden Sie weiter unten. Es ist sehr einfach und ich werde hier nicht ins Detail gehen. Sie werden es verstehen, sobald Sie den Code sehen.

Netzstopp Test1Job
C:\Windows\System32\inetsrv\appcmd.exe Site „Test1.test.com“ stoppen
C:\Windows\System32\inetsrv\appcmd.exe Site beenden Test1.api.test.com
C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:"test1.test.com"
C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:"Test1.api.test.com"
dir "$PSScriptRoot\lib" -Filter "*.ps1" | foreach {
 . $_.vollständigerName
 Write-Host "Importieren Sie $($_.fullName)"
}
#1. Holen Sie sich den Quellcode D:\test\tools\get_tfs.bat
#2. Kompilieren Sie den Quellcode dotnet build D:\test\Source\MTools\Source-Promotion\Test.API.csproj -nowarn:msb3202,nu1503,cs1591 #--no-restore
Echo-API OK
dotnet build D:\test\Source\MTools\Source-Promotion\Test.Web.csproj -nowarn:msb3202,nu1503,cs1591 #--no-restore
echo WEB OK
dotnet build D:\test\Source\MTools\Source-Promotion\Test.Job.WindowsService.csproj -nowarn:msb3202,nu1503,cs1591 #--no-restore -vq
Echo-Job OK
Schlafen 20
#3. CCopy freigeben D:\test\Source\MTools\Test.\Source-Promotion\Test.API\bin\Debug\netcoreapp2.1 D:\Test\Test1\api
Kopiere D:\test\Source\MTools\Test.\Source-Promotion\Test.Web\bin\Debug\netcoreapp2.1 D:\Test\Test1\web
Kopiere D:\test\Source\MTools\Test.\Source-Promotion\Test.Web\wwwroot D:\Test\Test1\web\wwwroot
Kopiere D:\test\Source\MTools\Test.\Source-Promotion\Test.Job.WindowsService\bin\Debug\netcoreapp2.1\win-x64 D:\Test\Test1\job
net start Test1Job
C:\Windows\System32\inetsrv\appcmd.exe Startseite Test1.test.com
C:\Windows\System32\inetsrv\appcmd.exe Startseite Test1.api.test.com
C:\Windows\System32\inetsrv\appcmd.exe starte Apppool /apppool.name:"test1.test.com"
C:\Windows\System32\inetsrv\appcmd.exe starte Apppool /apppool.name:"Test1.api.test.com"
Write-Host „erfolgreich“
Datum abrufen
Funktion CCopy($Ordner_a_Pfad,$Ordner_b_Pfad)
{
 if(!(Testpfad $Ordner_b_Pfad))
 {
 md $Ordner_b_Pfad
 }
 #Alle Dateien im Quellordner durchlaufen $folders_a = gci $folders_a_path -Recurse
 foreach ($Ordner_a in $Ordner_a)
 {
 wenn($folder_a.fullname -like "*appsettings.json*")
 {
 weitermachen
 }
 #Holen Sie sich den vollständigen Pfadnamen der Zieldatei, indem Sie ihn durch $b = $folder_a.fullname.replace($folder_a_path,$folder_b_path) ersetzen. 
 #Beurteilen Sie, ob die Zieldatei vorhanden ist. Wenn sie vorhanden ist, beurteilen Sie zuerst, ob sie neu oder alt ist. Wenn (Testpfad $ b)
 {
  #Beurteilen Sie, ob das Ziel ein Verzeichnis ist. Wenn es ein Verzeichnis ist, überspringen Sie es. Wenn nicht, erstellen Sie ein leeres Verzeichnis der ersten Ebene. Wenn (!((gi $b).PSIsContainer))
  {
  #Beurteilen Sie die Neuheit der Zieldatei und der Quelldatei. Wenn die Änderungszeit der Zieldatei vor der der Quelldatei liegt, kopieren Sie sie erneut und überschreiben Sie sie. Wenn ((gci $b).lastwritetime -lt $folder_a.lastwritetime)
  {
  Kopiere Element $folder_a.fullname $b -force
  }
  }
 }
 #Wenn die Zieldatei nicht existiert, kopieren Sie sie direkt. Andernfalls
 {
  Kopiere Element $folder_a.fullname $b
 }
 }
}

Wenn Sie nach der Fertigstellung eines Bastelsets Anmerkungen oder Vorschläge haben, lassen Sie es uns bitte wissen~

Später werden wir weiter schreiben, um das Programm über PowerShell auf anderen Servern zu veröffentlichen und nach Abschluss der Veröffentlichung die Ergebnisse per E-Mail zu senden

fortgesetzt werden...

Zusammenfassen

Oben finden Sie ein Tutorial zur Verwendung von Jenkins für die automatische Bereitstellung unter Windows. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • So installieren Sie Jenkins auf einer Windows-Plattform
  • Detaillierte Erklärung zur Installation von Jenkins unter Windows
  • Detailliertes Tutorial zum Bereitstellen von Jenkins in einer Windows-Umgebung
  • Ändern der Jenkins-Portnummer unter Windows

<<:  Tutorial zur Installation und Kennwortkonfiguration von MySQL 5.7.21

>>:  Implementierung des Vue 3.x-Projekts basierend auf Vite2.x

Artikel empfehlen

So begrenzen Sie den Wertebereich von Objektschlüsseln in TypeScript

Wenn wir TypeScript verwenden, möchten wir das vo...

So kapseln Sie die Rich-Text-Komponente von WangEditor in Angular

Die Rich-Text-Komponente ist eine sehr häufig ver...

Der Unterschied zwischen Löschen, Abschneiden und Löschen und wie man wählt

Vorwort Letzte Woche fragte mich ein Kollege: „Br...

MySQL-Serie 15: Allgemeine MySQL-Konfiguration und Leistungsstresstest

1. Allgemeine MySQL-Konfiguration Alle folgenden ...

IE8 Beta 1 hat zwei Bereiche, die Ihre Aufmerksamkeit erfordern

<br />Verwandte Artikel: Web-Kenntnisse: Lös...

Organisieren Sie die allgemeinen Wissenspunkte von CocosCreator

Inhaltsverzeichnis 1. Szene laden 2. Knoten suche...

So richten Sie eine automatische tägliche Datenbanksicherung in Linux ein

Dieser Artikel verwendet das Centos7.6-System und...

Detaillierte Erklärung der Meta-Tags und ihrer Verwendung in HTML

Ich werde keine weitere Zeit mit Unsinnsgerede ve...

Optimierung des MySQL Thread_Stack-Verbindungsthreads

MySQL kann nicht nur über das Netzwerk, sondern a...