1.安装好压软件,下载地址作为压缩包的解压和iso的虚拟光驱工具
http://haozip.2345.cc/
2.安装openssh
下载openssh
https://github.com/PowerShell/Win32-OpenSSH/releases
https://github.com/PowerShell/Win32-OpenSSH/releases/download/v8.1.0.0p1-Beta/OpenSSH-Win64.zip
本次是直接解压到c:openssh目录
到C:WindowsSystem32WindowsPowerShellv1.0目录下,管理员身份运行powershell.exe,执行以下命令进行安装openssh
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
sc config ssh start=auto
要在cmd下安装服务
把ssh安装成服务后,打开隐藏目录选项
可以看到在 C:ProgramDatassh 目录下生成了配置文件,如果想配置免秘钥登录windows的openssh下的administrator账号
- 在c:/users/administrator创建.ssh目录(命令行),并在其中把centos下的账号公钥拷贝到authorized_keys 这个文件中(因为本次我们使用了jenkins的publish over ssh功能,直接输入账号密码不需要配置免秘钥登录
b. 修改配置C:ProgramDatasshsshd_config
注释掉:
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
jenkins配置部分
ftp下载传输的配置:
添加防火墙规则,对指定的ip ssh端口放行(主要是用来jenkins和windows之间进行代码传输)
查看端口是否开启成功
这是配置Jenkins服务器免秘钥登录windows2019后的效果
jenkins编译golang代码的配置
jenkins中配置golang环境 wget https://golang.org/dl/go1.15.2.linux-amd64.tar.gz tar xf go1.15.2.linux-amd64.tar.gz -C /usr/local vim /etc/profile export PATH=$PATH:/usr/local/go/bin [root@jenkins_server:/usr/local/go]# source /etc/profile [root@jenkins_server:/usr/local/go]# go version go version go1.15.2 linux/amd64 jenkins中编译golang的脚本 /data/jenkins_home/workspace/chinasoft.com.api.chinasoft.com_prod]# more init.sh #!/bin/bash -l ENV=$1 # 复制环境变量 cp .env.$ENV .env # 处理依赖 go mod tidy go mod vendor # 构建启动程序 GOARCH=amd64 GOOS=windows go build -o api.exe main.go # 退出 exit 0 # golan g主配置文件 [root@jenkins_server:/data/jenkins_home/workspace/chinasoft.com.api.chinasoft.com_prod]# more main.go package main import ( "api-golang/cache" "api-golang/conf" "api-golang/lib/logger" "api-golang/model" "api-golang/router" "context" "log" "net/http" "os" "os/signal" "time" ) func init() { // 配置初始化 conf.Init() // 初始化日志 logger.Init() // 初始化db model.Init() // 初始化缓存 cache.Init() } func main() { // 装载路由 r := router.Init() srv := &http.Server{ Addr: ":8700", Handler: r, } go func() { // 服务连接 if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Fatalf("listen: %s ", err) } }() // 等待中断信号以优雅地关闭服务器(设置 5 秒的超时时间) quit := make(chan os.Signal) signal.Notify(quit, os.Interrupt) <-quit log.Println("Shutdown Server ...") ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() if err := srv.Shutdown(ctx); err != nil { log.Fatal("Server Shutdown:", err) } log.Println("Server exiting") }
windows server2019下相关的bat脚本C:UsersAdministratorwwwrootgo.chinasoft.comash auto.bat @echo off cd /d %~dp0 echo 1 >Temp.txt exit automonitor.bat @echo off cd /d %~dp0 setlocal enabledelayedexpansion for /f %%a in (Temp.txt) do ( set value=%%a if "!value!"=="1" ( call autorun.bat echo 0 >Temp.txt ) ) exit autorun.bat @echo off cd /d %~dp0 :: C:wwwrootgo.chinasoft.com.exewinapi.exe stop ping 127.1 -n 3 >nul 2>nu :: xcopy C:wwwrootgo.chinasoft.comconf* C:wwwrootgo.chinasoft.com.execonf* /s /e /y /d xcopy C:wwwrootgo.chinasoft.comapi.exe C:wwwrootgo.chinasoft.com.exeapi.exe /y /d xcopy C:wwwrootgo.chinasoft.com.env C:wwwrootgo.chinasoft.com.exe.env /y /d xcopy C:wwwrootgo.chinasoft.comwinapi.xml C:\wwwrootgo.chinasoft.com.exewinapi.xml /y /d :: C:wwwrootgo.chinasoft.com.exewinapi.exe start