Зал с контейнерами Windows

Я пытаюсь настроить сервер сборки зала (http://concourse-ci.org/), который поддерживает как можно больше языков/платформ.

Я читал, что начиная с Windows Server 2016 можно будет использовать Windows в качестве контейнеров. Поскольку concourse пишет на своем веб-сайте, что поддерживаются несколько платформ (включая Windows), мне интересно, означает ли это, что можно использовать контейнеры Windows?

Если невозможно запустить контейнеры Windows, могу ли я каким-то образом заставить сборку запускать виртуальные машины вместо контейнеров?


person Nathan Nash    schedule 12.07.2016    source источник
comment
Вы когда-нибудь находили способ заставить это работать? Я спросил, и мне сказали, что это не поддерживается.   -  person Christopher Painter    schedule 24.07.2017


Ответы (2)


К сожалению, есть только страница, которую я могу найти. Я также пробовал его с более простыми конвейерами, такими как hello world, но не смог заставить его работать. Просто поделитесь, возможно, кому-то будет полезно это.

Я пропустил такие части, как генерация ключа ssh, подготовка TSA.

Подготовка Windows Worker

Теперь обратим внимание на наш сервер Windows, который мы будем использовать для работы в Concourse.

Сначала мы хотим создать каталог для размещения наших двоичных файлов для рабочей службы и ее данных, то есть C:\concourse.

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

Теперь загрузите бинарный файл Windows concourse (с именем вроде «concourse_windows_amd64.exe») со страницы загрузки Concourse и поместите его в наш рабочий каталог. Также мы хотим скопировать туда файлы «tsakey.pub» и «workerkey».

Тот факт, что мы предоставим нашему локальному бинарному файлу «tsakey.pub», подтверждает, что мы криптографически доверяем серверу TSA из нашего развертывания.

Теперь мы готовы запустить работника и зарегистрировать его в TSA.

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

Если все пойдет хорошо, мы должны увидеть вывод, похожий на:

{"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":""}}

и новый воркер должен появиться в списке через интерфейс командной строки Concourse как таковой:

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

Проверка вещей

Предполагая, что платформа .NET присутствует в нашем Worker с инструментами сборки на пути, мы могли бы проверить это, создав этот простой проект приложения консоли .NET: https://github.com/chrisumbel/DatDotNet.git..

Рассмотрим конвейер:

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

с задачей сборки:

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

Обратите внимание, что в задаче сборки указана платформа Windows. Это указывает на то, что группа должна поставить задачу на рабочего Windows.

Если все прошло хорошо, мы должны увидеть успешную сборку с выводом, похожим на:

~/ $ 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
person celebi    schedule 06.03.2017
comment
Это приведет к тому, что сборка будет выполняться на рабочем, а не на контейнере рабочего. - person Christopher Painter; 24.07.2017
comment
как отличить конфигурацию Debug и Release? - person sriramsm04; 25.04.2020

Теоретически это должно быть возможно сделать через Garden-Windows, поскольку Concourse делегирует всю работу с контейнерами Садовый API.

Поскольку я никогда не делал этого раньше, я понятия не имел, с чего начать.

person Jacques Chester    schedule 19.08.2016