Come garantire la distribuzione di TeamCity tramite il servizio Web Deploy?

Il mio team utilizza TeamCity per una continua integrazione. Costruirà, testerà e distribuirà applicazioni web tramite Web Deploy a dev e qa server web. La parte difficile sta distribuendo a un server web di produzione – la nostra politica impone agli sviluppatori di non distribuire alla produzione, solo un amministratore di sistema può.

Il nostro approccio attuale è che TeamCity costruisca un pacchetto di distribuzione web, che l'amministratore può scaricare e installare sul server web di produzione. Tuttavia, vorremmo consentire loro di fare semplicemente clic su "Esegui" in una configuration di generazione, ma non sappiamo come proteggere quel button.

  • Tastiera su schermo con agente di authentication RSA su WIndows
  • Spiegazione di nodev e nosuid in fstab
  • Servizio per indurire un server Ubuntu
  • pstools / pskill - Usa la logging?
  • Sono sotto DDoS. Cosa posso fare?
  • L'utente www-data ha bisogno di un vero e proprio shell?
  • Potremmo creare un progetto TeamCity che solo gli amministratori hanno accesso, ma dobbiamo anche affrontare la sicurezza di Web Deploy. Il servizio di distribuzione Web deve essere autenticato con un account amministratore locale sul server di produzione. Non vogliamo che gli sviluppatori abbiano accesso al nome utente / password in uno script di generazione, né vogliamo che each agente di generazione esegua come questo account poiché gli sviluppatori potrebbero creare una build che lo utilizza per distribuirla alla produzione.

    Non ho avuto molta fortuna trovando risorse sulle pratiche migliori di TeamCity per la sicurezza / implementazione, ma non posso immaginare di essere l'unica azienda in questa situazione. Come gli altri gestiscono la sicurezza di distribuzione automatizzata?

    2 Solutions collect form web for “Come garantire la distribuzione di TeamCity tramite il servizio Web Deploy?”

    Utilizzando i ruoli e le autorizzazioni in Teamcity, puoi avere un progetto che solo il tuo team di distribuzione può accedere. Può avere una dipendenza da artefatti sulla costruzione principale e puoi anche usarla come "ultima creazione", in modo che gli sviluppatori possano controllare ciò che è ancora disponibile.

    Vorrei installare un agente di build che è in grado di distribuire al sistema di destinazione e quindi utilizzare la funzionalità "build compatibili" di tale agente nell'interface utente di TeamCity per renderla compatibile solo con la creazione della distribuzione di distribuzione. (Naturalmente, inoltre, desideri che i tuoi sviluppatori non dispongano di autorizzazioni per modificare la configuration dell'agente.)

    Questo è un problema di Teamcity che utilizza le opzioni di configuration compatibili con gli agenti: se lasciate gli altri agenti di build come compatibili con tutte le build, la distribuzione di produzione può essere tentata da uno di loro se è libera. L'unica soluzione che so di metterli tutti per eseguire solo "build specificati" e aggiungere tutte le altre build all'altro agente. Il dolore è se si aggiunge una nuova build, non sarà in grado di eseguire da nessuna parte finché non lo aggiunti specificamente come compatibile.


    Esistono altri modi diversi per limitare la build da eseguire solo su agenti specifici utilizzando i requisiti di agente nella configuration di generazione.

    Si deve aggiungere un requisito che il teamcity.agent.name uguale al nome dell'agente che si desidera eseguire. (o viceversa, non è uguale a quella che non si desidera eseguire).

    Un altro è aggiungere un requisito per una variabile di ambiente (esiste o con un valore specifico) e quindi impostare solo quella variabile di ambiente sugli agenti che si desidera eseguire quella build.


    Un'altra ansible soluzione è avere due installazioni di Teamcity, in quanto effettivamente esistono due diversi gruppi di utenti. Ovviamente non è ansible utilizzare una dipendenza dagli artefatti, ma puoi sempre arrivare agli ultimi artefatti di una determinata build usando un URL come: * http://teamcity.server/repository/download/bt41/latest.lastSuccessful/setupfile.exe

    where:

    • bt41 è l'ID di creazione in Teamcity (si può trovare nell'URL quando si naviga a qualsiasi build)
    • latest.lastSuccessful può anche essere lastest.lastPinned , `latest.lastFinished, o il numero di costruzione esatto
    • setupfile.exe è il file che si desidera afferrare dall'output degli artefatti (questo può anche essere un path se non è pubblicato nel livello superiore)

    Per proteggere il process di distribuzione web, se si è in un dominio, è ansible configurare la distribuzione di Web per accettare l'authentication di Windows e quindi eseguire l'agente di creazione di teamcity come utente di dominio che ha l'authorization per la distribuzione in IIS. Ho le cose impostate in questo modo e non hai bisogno di alcun tipo di password nello script di distribuzione web.

    Impostazione dell'authentication delle windows per la distribuzione del sito web: http://blogs.iis.net/carlosag/archive/2011/12/13/using-windows-authentication-with-web-deploy-and-wmsvc.aspx

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.