#!/bin/bash # 定义文件名、用户名和远程路径 FILE=$1 # Get Git commit hash GIT_COMMIT_HASH=$(git rev-parse HEAD) # Get Git branch name GIT_BRANCH=$(git branch --show-current) # Get build date in YYYYMMDDHHMMSS format BUILD_DATE=$(date +"%Y%m%d%H%M%S") # Output linker flags echo "-X main.GitCommitHash=$GIT_COMMIT_HASH" echo "-X main.GitBranch=$GIT_BRANCH" echo "-X main.BuildDate=$BUILD_DATE" # Set Go environment variables export GOARCH=amd64 export GOOS=linux export CGO_ENABLED=0 #sh build.sh chat # 检查是否提供了两个参数 if [ "$#" -ne 1 ]; then echo "Usage: $0 {login}" exit 1 fi # 检查并创建 bin 目录 if [ ! -d "bin" ]; then mkdir -p bin fi #构建项目的名字 BUILD_DIR=$FILE # 删除旧的编译文件 rm -f bin/$FILE go build -ldflags "-X main.GitBranch=$GIT_BRANCH -X main.GitCommit=$GIT_COMMIT_HASH -X main.BuildDate=$BUILD_DATE" -o bin/$FILE $BUILD_DIR/main.go # 检查编译是否成功 if [ ! -f "bin/$FILE" ]; then echo "build failed." exit 1 else echo "build success." fi Host="114.132.124.145" Username="ubuntu" Password="qq20160101" RemotePath="/home/ubuntu/game" REMOTE_SCRIPT_PATH="/home/ubuntu/game" # 传输文件到远程主机 # 通过expect自动化密码输入 expect -c " spawn scp -o StrictHostKeyChecking=no \"bin/$FILE\" \"$Username@$Host:$RemotePath\" expect \"password:\" send \"$Password\r\" expect eof " if [ $? -eq 0 ]; then echo "文件上传成功" else echo "文件上传失败" exit 1 fi # 传输文件到远程主机 # 通过expect自动化密码输入 expect -c " spawn ssh -o StrictHostKeyChecking=no $Username@$Host \"bash $RemotePath\" expect \"password:\" send \"$Password\r\" expect eof " if [ $? -eq 0 ]; then echo "远程脚本执行成功" else echo "远程脚本执行失败" exit 1 fi