Aquí hay una cita parcial de una respuesta a la pregunta sobre " ¿Cómo evitar inestabilidades causadas por la integración continua en entornos de prueba? ":
Este entorno generalmente se congela durante las pruebas.
Mi pregunta: ¿cuáles son las implementaciones de muestra de un entorno congelado? Es decir, qué puede hacer para hacer cumplir técnicamente que nadie (excepto si lo permite un usuario autorizado como un administrador de versiones) podrá cambiar cualquier cosa en un entorno tan congelado.
Aclaraciones :
No estoy hablando de lo que (creo) se llama "períodos congelados" durante (por ejemplo) el procesamiento de fin de año en los bancos. Se trata de no poder aplicar ningún cambio (repetir) a los entornos de producción, para reducir el riesgo de que se introduzcan nuevos cambios / arreglos que puedan afectar el procesamiento de fin de año.
Suponga que los usuarios que tienen permiso para aprobar / aplicar cambios de todos modos (como el administrador de versiones en mi ejemplo), solo lo harán en casos excepcionales. Por ejemplo, dónde durante la prueba se encuentra un problema de alta gravedad, para el cual diferir una solución para una próxima versión no es una opción (ya que la producción estaría en riesgo si la versión se activara sin dicha solución).
Esto podría ser solo sobre la suspensión de cualquier actualización automática durante el tiempo de la prueba. El punto es: evite que alguien más actualice una Aplicación A a la versión Y mientras otro equipo todavía está probando la aplicación B en la versión X que depende de la aplicación A. Esto podría significar tener un guardia para evitar que un equipo de prueba requiera una actualización de una dependencia bajo prueba.
fuente
TeamCity tiene una función de compilación de recursos compartidos que le permite definir un recurso del que dependen varias definiciones de compilación. Las definiciones de compilación pueden requerir un bloqueo de lectura o un bloqueo de escritura, también puede definir si estos bloqueos son exclusivos o permiten cierto grado de paralelismo.
Si hacemos las siguientes suposiciones sobre un entorno compartido llamado PreProd :
Por lo tanto, lo siguiente es cierto:
Puede usar un mecanismo similar con Jenkins usando el complemento Exclusion . De hecho, podría incorporar esta funcionalidad en cualquier proceso utilizando bloqueo o semáforo, por ejemplo Apache ZooKeeper o HashiCorp Consul .
fuente
Esto suena como un anti patrón para mí. Creo que todos o nadie debería tener acceso a todos los entornos.
Si los usuarios están subvirtiendo el proceso, analizaría seriamente el proceso para tratar de asegurarme de que no se interponga en el camino de las personas.
Implementar un mecanismo automatizado que haga cumplir un estado específico también es útil para alentar a las personas a hacer las cosas de la manera correcta. Esto puede ser a través de Config Management o destruyendo cualquier instancia inmutable si alguien lo hace
fuente