8

Ich versuche, einen Build-Server für den Bahnhof einzurichten (http://concourse-ci.org/), der so viele Sprachen/Plattformen wie möglich unterstützt.Bahnhofshalle mit Windows Containern

Ich habe gelesen, dass es mit Windows Server 2016 möglich ist, Windows als Container zu haben. Da Concourse auf seiner Website schreibt, dass mehrere Plattformen unterstützt werden (einschließlich Windows), frage ich mich, ob dies bedeutet, dass es möglich ist, Windows-Container zu verwenden?

Wenn es nicht möglich ist, Windows-Container auszuführen, kann ich irgendwie VMCs anstelle von Containern zusammenstellen?

+0

Haben Sie jemals einen Weg finden, diese Arbeit zu machen? Ich fragte und wurde gesagt, dass es nicht unterstützt wird. –

Antwort

0

Theoretisch sollte es möglich sein, dies durch Garden-Windows zu tun, da Concourse alle Container in die Garden API delegiert.

Hätte ich das noch nie gemacht, hätte ich keine Ahnung, wo ich anfangen soll.

4

Leider gibt es nur eine Seite, die ich finden kann. Ich versuchte es auch mit einfacheren Pipelines wie Hallo Welt, aber ich konnte es nicht funktionieren. Nur teilen kann vielleicht jemand von it profitieren.

Ich habe Teile wie das Erzeugen von ssh-Schlüssel, Vorbereitung von TSA weggelassen.

Vorbereiten des Windows-Worker

Nun wenden wir unsere Aufmerksamkeit auf unseren Windows-Server, in der wir einen Concourse Arbeiter drehen werden.

Zuerst wir wollen ein Verzeichnis etablieren unsere Binärdateien für den Arbeiter-Dienst und seine Daten Hause dh C: \ concourse

C:\> mkdir concourse 
C:\> cd concourse 
C:\concourse> 

nun den Windows-concourse binären herunterladen (mit dem Namen etwas wie „concourse_windows_amd64.exe ") von der Concourse-Download-Seite und legen Sie sie in unser Arbeitsverzeichnis. Außerdem werden wir auch die Dateien "tsakey.pub" und "workerkey" kopieren.

Die Tatsache, dass wir unsere lokale Verbindungs-Binärdatei mit "tsakey.pub" bereitstellen, stellt fest, dass wir den TSA-Server kryptografisch von unserer Bereitstellung aus vertrauen.

Wir sind jetzt bereit, den Arbeiter zu starten und sich bei der TSA registrieren zu lassen.

C:\concourse> .\concourse_windows_amd64.exe worker \ 
/work-dir .\work /tsa-host <IP of the TSA> \ 
/tsa-public-key .\tsakey.pub \ 
/tsa-worker-private-key .\workerkey 

Wenn alles gut geht sollten wir Ausgabe sehen ähnlich wie:

{"timestamp":"1478361158.394949198","source":"tsa","message":"tsa.connection.forward-worker.register.done","log_level":1 
,"data":{"remote":"<IP:SOURCE-PORT of the TSA>","session":"3.1.4","worker-address":"<IP:PORT of this worker>","worker-platform":"windows", 
"worker-tags":""}} 

und der neue Arbeiter in der Liste über die Concourse CLI als solche erscheinen:

~/ $ fly -t ci workers 
name   containers platform tags team 
2a334e70-c75c 3   linux  none none 
WORKERSHOSTNAME 0   windows none none 

Testing Things Out

Angenommen, das .NET-Framework ist auf unserem Worker mit den Build-Tools im Pfad wir c Testen Sie dies, indem Sie dieses einfache .NET Console-App-Projekt erstellen: https://github.com/chrisumbel/DatDotNet.git.

Betrachten Sie die Pipeline:

resources: 
    - name: code 
    type: git 
    source: 
     uri: https://github.com/chrisumbel/DatDotNet.git 
     branch: master 
jobs: 
    - name: build 
    plan: 
    - aggregate: 
     - get: code 
     trigger: true 
    - task: compile 
     privileged: true 
     file: code/Pipeline/compile.yml 

mit der Build-Task:

platform: windows  
inputs: 
    - name: code 
run: 
    dir: code 
    path: msbuild 

Beachten Sie, dass die Plattform in der Build-Task angegeben ist "Fenster". Dies weist die Halle an, die Aufgabe einem Windows-Mitarbeiter zuzuweisen.

Wenn alles gut gegangen ist sollten wir einen erfolgreichen Build mit Ausgabe ähnlich sehen:

~/ $ fly -t ci trigger-job -j datdotnet/build --watch 
started datdotnet/build #8 

using version of resource found in cache 
initializing 
running msbuild 
Microsoft (R) Build Engine version 4.6.1085.0 
[Microsoft .NET Framework, version 4.0.30319.42000] 
Copyright (C) Microsoft Corporation. All rights reserved. 

Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch. 
Build started 11/5/2016 4:04:00 PM. 
... 
nces, or take a dependency on references with a processor architecture that matches the targeted processor architecture of your project. [C:\concourse\work\containers\00000arl2se\tmp\build\36d0981b\code\DatDotNet\DatDotNet.csproj] 

    3 Warning(s) 
    0 Error(s) 

Time Elapsed 00:00:00.22 
succeeded 
+1

@TobySpeight danke, repariere es! – celebi

+0

Dies würde dazu führen, dass der Build auf dem Worker und nicht auf dem Container auf dem Worker ausgeführt wird. –