package script /** * Скрипт для начальной конфигурации SSH профиля для деплоя * Создает профиль для подключения к стенду, а также настраивает пользователя для этих целей. */ @GrabResolver(name='gitea', root='https://git.tswf.io/api/packages/public-repos/maven') @Grapes([ @Grab(group='io.tswf.groovy.better-groovy', module='better-groovy-scripting-shell', version='2.0.2-SNAPSHOT', changing = true), @Grab(group='io.tswf.groovy.better-groovy', module='better-groovy-scripting-gitea', version='2.0.2-SNAPSHOT', changing = true) ]) import util.GlobalProperties import util.ScriptLog println """ ############################################################################# SSH Profile Setup Script ############################################################################# """ GlobalProperties.loadGlobalProperties() ScriptLog.printf "Creating .ssh directory..." def sshDir = new File("${System.getProperty("user.home")}/.ssh") sshDir.mkdirsUnsafe() // Записываем приватный ключ ScriptLog.printf "Writing ssh private key..." def sshPrivateKey = sshDir.subFile("id_rsa") //TODO: может быть тут посолить? def sshPrivateKeyBase64Content = System.getGlobalProperty("ci.deploy.ssh.profile.private-key-base64").removeAll(' ') def sshPrivateKeyDecodedContent = Base64.decoder.decode(sshPrivateKeyBase64Content) sshPrivateKey.bytes = sshPrivateKeyDecodedContent sh 'chmod 400 ~/.ssh/id_rsa' // Записываем ssh config ScriptLog.printf "Writing ssh config..." def sshProfileName = System.getGlobalProperty("ci.deploy.ssh.profile") def sshHost = System.getGlobalProperty("ci.deploy.ssh.host") def sshPort = System.getGlobalProperty("ci.deploy.ssh.port") def sshUsername = System.getGlobalProperty("ci.deploy.ssh.username") def sshConfigFile = sshDir.subFile("config") sshConfigFile.text = """ Host ${sshProfileName} HostName ${sshHost} User ${sshUsername} Port ${sshPort} """.stripIndent(false) // Выполняем тестовое подключение к SSH, чтобы убедиться в корректности настройки. ScriptLog.printf "Validating ssh configuration..." sh "ssh ${sshProfileName} -o StrictHostKeyChecking=no -tt 'echo Testing connection!'" ScriptLog.printf "SSH profile configured successfully!"