Развертывание артефактов на физическом компьютере с помощью Azure Pipelines

У меня есть проект, созданный с помощью лазурного конвейера, артефакты отправляются как в файловый ресурс, так и в Azure DevOps. Самостоятельный агент в настоящее время используется для конвейера, который строит мой проект. Теперь я хочу развернуть свои артефакты на физическом компьютере в сети моей компании. Артефакты - это установочные файлы, которые поддерживают «режим автоматической установки», поэтому я могу установить все, выполнив соответствующие файлы с помощью PowerShell.

У меня вопрос: что мне делать, чтобы достичь своей цели? Я считал, что просто создам конвейер выпуска (я использую классический редактор пользовательского интерфейса Microsoft для конвейеров) и добавлю необходимые задачи. В итоге все будет выглядеть примерно так:

  1. Скопируйте артефакты с компьютера, на котором был собран продукт (A), на компьютер, на котором продукт должен быть установлен (B).
  2. Выполните установку сервисов, необходимых для основного приложения.
  3. Выполните установку из основного приложения. Это правильный курс действий или мне следует выбрать что-то другое?

Еще один вопрос. Мне не совсем понятно, как я должен разделить этапы развертывания, потому что: Шаг 1 все еще выполняется агентом на компьютере A. Шаги 2 и 3 уже должны выполнять другой агент. Следовательно, агент также должен присутствовать на компьютере B (всего мне нужно два агента, один для конвейера сборки на компьютере A и один на целевом компьютере B). Это верно?


person deralbert    schedule 28.04.2020    source источник
comment
@ LeoLiu-MSFT Да, ваш ответ мне помог, большое спасибо. Я обязательно попробую удаленную установку с помощью PowerShell. Тем не менее, я обычно ждал два или три дня с момента получения первого ответа, так что у других людей все еще есть мотивация писать свое мнение. Если до сегодняшнего вечера никто не напишет ответа, я отмечаю лучший ответ.   -  person deralbert    schedule 30.04.2020


Ответы (2)


Развертывание артефактов на физическом компьютере с помощью Azure Pipelines

Я думаю, что вы очень близки к ответу, но я не уверен, является ли мой совет лучшим, потому что это скорее вопрос вкуса, вы можете проверить мои предложения ниже.

Этого можно добиться с помощью одного агента на компьютере A:

В этом случае нам не нужно создавать новый агент на компьютере B, а также не нужно разделять этапы развертывания.

Надеюсь это поможет.

person Leo Liu-MSFT    schedule 29.04.2020
comment
Привет, Лео! Я хотел бы знать, есть ли хороший способ сделать это, загрузить zip-файл (артефакты сборки) с сервера сборки Windows на целевой компьютер, которым является Linux. Похоже, что все эти ответы находятся от окон к окнам. Есть ли хороший способ скопировать заархивированные артефакты сборки из Windows на сервер Linux с помощью конвейера выпуска Devops? - person Paul Carlton; 20.11.2020
comment
@PaulCarlton, не могли бы вы открыть новую тему со своим вопросом? Поскольку мы заархивировали эту ветку, спасибо. - person Leo Liu-MSFT; 20.11.2020
comment
Я открыл новый вопрос: stackoverflow.com/questions/64923146/ Спасибо! - person Paul Carlton; 20.11.2020

У нас есть веб-приложение, к которому предъявляются аналогичные требования, нам нужно включить файлы, зависящие от местоположения, при развертывании нашего приложения в этом месте.

Я не уверен, что это лучший вариант, но мы включили использование Ansible в наш конвейер развертывания. Наша книга воспроизведения Ansible использует файл hosts, который содержит переменные для местоположения и версии jar, которая будет развернута.

Опять же, у нас другая ситуация, но должно работать то же самое.

Например, у вас может получиться что-то вроде этого ...

Ваш файл инвентаря Ansible (hosts) может выглядеть следующим образом

[servers]
xxx.xxx.xxx.xxx

[all:vars]
app_name=mfgweb
env=qa
app_version=2020.03.4

*** If your artifact is a jar file
jar_group=com.somegroup
jar_name=some_jar <-- note: no extentsion
jar_version=2019.11.3

Ваш playbook может выглядеть примерно так

---
- hosts: localhost
  connection: local

  tasks:
  - name: Find  old working directories
    find:
        paths: /tmp
        patterns: 'ansible.*'
        file_type: directory
        age: 2d
    register: tmp_dirs

  - name: Cleanup old working directories
    file:
        path: "{{ item }}"
        state: absent
    loop: "{{ tmp_dirs.files | map(attribute='path') | list }}"

  - name: Create working directory
    tempfile:
        state: directory
        suffix: work
    register: workdir

  - name: Download artifact
    maven_artifact:
        group_id: "{{ jar_group }}"
        artifact_id: "{{ jar_name }}"
        version: "{{ jar_version }}"
        repository_url: "{{ artifacts_url }}"
        username: "{{ artifacts_user }}"
        password: "{{ artifacts_password }}"
        verify_checksum: never
        dest: "{{ workdir.path }}/{{ app_name }}/"

Это всего лишь образец, но вы сможете установить необходимое программное обеспечение в свой playbook с помощью yum и / или pip.

Ansible Documentation очень хорошая и полная. Также вы можете найти здесь много справки по SO.

Надеюсь, это даст вам представление о том, как продолжить

person Paul Stoner    schedule 28.04.2020