Какой Groovy CMD я могу использовать для рабочей станции Cygwin и Bash за пределами Jenkins? - PullRequest
0 голосов
/ 24 октября 2018

На Jenkins работает конвейер CD с некоторым кодом расшифровки, который использует base64 и gpg2.

Я настроил конвейер так, чтобы скрипты получали и расшифровывали правильные пароли из git с помощью команды оболочки Jenkins, например:

def plainText = sh(script: """#!/bin/sh -e
        echo "$encrypted" | 
        base64 -d -w 0  | 
        gpg2 --batch --decrypt --passphrase $pw """,
    returnStdout: true
    )
println("$key=$plaintext")

Конвейер работает отлично, и теперь я ищупри написании сценария для наших рабочих станций dev, использующего maven-groovy-plugin, чтобы сделать то же самое дешифрование локально, чтобы позволить dev запускать серверы на рабочих станциях

Мое второе требование - я могу запустить свой плагин maven groovy на Jenkins для настройки интеграционного тестирования.

Поэтому я ищу решение, которое можно использовать локально и в сборке.сервер.При необходимости я мог бы переключить скрипт в ОС и выполнить что-то вроде этого:

def cmd = [ 'sh', '-c',
        """echo "$encrypted" | 
           base64 -d -w 0  | 
           gpg2 --batch --decrypt --passphrase $encryptionKey """]
cmd.execute().with {
    def output = new StringWriter()
    def error = new StringWriter()
    //wait for process ended and catch stderr and stdout.
    it.waitForProcessOutput(output, error)
    println "error=$error"
    println "output=$output"
    println "code=${it.exitValue()}"
}

, но я не уверен, как настроить cmd для выполнения с cygwin.

1 Ответ

0 голосов
/ 31 октября 2018

Я включил ОС через встроенный JMX и использовал cygwin или linux:

import java.lang.management.*

def os = ManagementFactory.operatingSystemMXBean
println """OPERATING SYSTEM: 
    \tarchitecture = $os.arch
    \tname = $os.name
    \tversion = $os.version
    \tprocessors = $os.availableProcessors"""
def bash = os.name.contains("Win") ? "c:\\cygwin64\\bin\\bash" : "bash"
def cmd = [ bash, '-c',
         """echo "$encrypted" | 
            /usr/bin/base64 -d -w 0  | 
            /usr/bin/gpg2 --batch --decrypt --passphrase $encryptionKey """]
cmd.execute()...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...