使用GitHub Actions可以在你提交代码后自动将最新代码编译发布部署到你的VPS服务器,这里记录一下配置步骤。
服务没有使用 Docker 部署,直接通过supervisord启动二进制文件,期望每次提交代码后自动完成编译部署发布上线,通过Github Actions可以实现自动化。
由于是使用 ssh 进行部署,需要让github能登录服务器,因此先在VPS服务器上给github actions创建一个ssh key:
cd ~/.ssh ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/github_action ...
将生成的公钥保存到 authorized_keys 文件中:
cat github_action.pub >> authorized_keys
由于部署过程会涉及一些隐私的变量,比如scp、ssh等需要的密钥信息等,可以将这些信息在代码仓库的 Settings/Secrets 中进行配置。如图:
在你的Golang应用的代码库页面进入Settings选择Secrets后,点击右上方的New repository secret
创建Secret变量,Name填变量名,Value填变量值,配置后可以在Actions的配置yml文件中使用${{ secrets.XXX }}
来使用。
你可以直接在代码目录新建配置文件.github/workflows/deploy.yml
,也可以直接在github项目页面点击Actions页面创建并直接编辑提交,如图:
yml文件内容设置如下:
name: deploy go on: push: branches: [ main ] # main分支上push触发部署 pull_request: branches: [ main ] # merge到main分支时触发部署 jobs: build: # 在ubuntu上进行构建操作 runs-on: ubuntu-latest steps: # 拉取代码 - uses: actions/checkout@v2 # 设置你项目的golang版本 - name: Set up Go uses: actions/setup-go@v2 with: go-version: 1.16 # 执行单元测试 - name: Test run: go test -v ./... # 编译二进制 # 注意没有使用cgo的务必加上CGO_ENABLED=0,不然可能编译通过但VPS上没有GLIBC或GLIBC版本不一致会导致无法启动 - name: Build run: CGO_ENABLED=0 go build -o app -tags=jsoniter # 将编译出的二进制文件 scp 到你的VPS服务器 - name: SCP Files uses: appleboy/scp-action@master with: host: ${{ secrets.REMOTE_HOST }} # Secrets中的配置:vps IP地址 username: ${{ secrets.REMOTE_USER }} # Secrets中的配置:vps 登录用户名 port: ${{ secrets.REMOTE_PORT }} # Secrets中的配置:vps 端口 key: ${{ secrets.SERVER_SSH_KEY }} # Secrets中的配置:vps 上创建的ssh key的私钥内容 source: 'app' # 编译出的二进制文件名 target: ${{ secrets.REMOTE_TARGET }} # Secrets中的配置:scp 到 vps 上的的目录 # 通过ssh远程执行命令重启vps上的服务 - name: SSH Remote Commands uses: appleboy/ssh-action@master with: host: ${{ secrets.REMOTE_HOST }} # Secrets中的配置:vps IP地址 username: ${{ secrets.REMOTE_USER }} # Secrets中的配置:vps 登录用户名 port: ${{ secrets.REMOTE_PORT }} # Secrets中的配置:vps 端口 key: ${{ secrets.SERVER_SSH_KEY }} # Secrets中的配置:vps 上创建的ssh key的私钥内容 script: ${{ secrets.AFTER_COMMAND }} # Secrets中的配置:scp二进制文件到vps服务器上后需要执行的相关shell命令重启服务
创建完成后,每次push到main分支就会自动执行steps中设置的步骤完成自动化部署。
网友185.*.*.45[火星]2022-05-26 23:21
网友185.*.*.26[火星]2022-05-26 23:19
网友51.*.*.5[火星]2022-05-26 23:10
网友185.*.*.12[火星]2022-05-26 23:09
发表评论
亲~ 评论内容是必须的哟! o(∩_∩)o
昵称
邮箱
主页
评论