В течение многих лет мне удавалось делать сборку с использованием системы непрерывной сборки, такой как Jenkins , а затем удаленно развертывать мои приложения на различных Unix серверах. Я могу использовать команды ssh
и scp
, чтобы делать ставки.
Теперь у меня есть сборка .NET, которую я делаю. Я выполнил сборку с использованием Jenkins и теперь хотел бы развернуть ее на удаленном сервере .NET. Мне нужно закрыть приложение, скопировать файлы, а затем перезапустить приложение. Я должен быть в состоянии сделать это удаленно и с помощью инструментов командной строки (без инструментов с графическим интерфейсом). Я нахожусь на нескольких машинах, которые заблокированы и не могут развернуть вещи, особенно на производственных машинах.
Существует ли механизм, который позволит мне удаленно завершить работу сервера, развернуть новый набор файлов и перезапустить приложение?
БОНУСНЫЙ ВОПРОС
Я понимаю, что файл *.cab
чем-то похож на файл Java *.jar
. То есть вы можете развернуть один файл *.cab
на сервере, и сервер будет обрабатывать его так, как если бы это был набор файлов в каталоге.
- Это правильно? Если это так, я бы хотел развернуть вещи, используя файл cab.
- Существует файл
webapp.config
, который является частью моей сборки и отличается для каждого сервера. Я бы предпочел создать файл cab, который не содержит файл webapp.config
, таким образом, имеющийся у меня файл cab можно развернуть на любой машине без его изменения (нужно изменить только файл webapp.config).
Спасибо
Добавление
Я просто не могу победить ...
У меня есть сборка на machine02, и мне нужно выполнить развертывание на machine06. Machine06 находится в демилитаризованной зоне, поэтому я не могу добавить в нее пользователя домена. Я могу создавать только локальные учетные записи.
С помощью sc
я могу получить доступ к удаленным системам, но учетная запись, с которой я работаю sc
, также должна существовать в удаленной системе. Поскольку я не могу создать учетную запись домена на machine06 и не могу добавить локальную учетную запись компьютера в другую систему Windows (т. Е. Сделать machine06 \ user администратором на machine02), я не могу использовать sc
.
Я попробовал команды lp от Sysinternals. Они позволяют мне указать имя пользователя и пароль (который я предполагаю, что для другой системы. Однако я получаю следующую ошибку:
C:\Windows\system32>pslist \\machine02 -user remuser02 -password Swordfish
pslist v1.29 - Sysinternals PsList
Copyright (C) 2000-2009 Mark Russinovich
Sysinternals
Cannot connect to remote registry on MACHINE02:
Access is denied.
Failed to take process snapshot on MACHINE02.
Make sure that the Remote Registry service is running on the remote system,
that you havefirewall ports allow RPC access, and your account has read
access the following key on the remote system:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Perflib
C:\Windows\system32>
Поскольку этот пользователь является администратором на machine02, я уверен, что у пользователя есть доступ на чтение к разделу реестра Windows, и я проверил, что удаленный доступ к реестру включен. Я подозреваю, что маршрутизатор блокирует вызовы RPC.
Итак, sc
отсутствует, поскольку я не могу указать учетную запись для использования. Инструменты Sysinternals PS отсутствуют. Я не могу добавить sshd
на сервер.