tags: [Github]
categories: [CI CD]
前言
GITLAB虽好,但是实在是太吃内存了
所以后面选择GitHub来作为我的项目代码仓库,最近发现GH Action一样可以实现CI CD,下午琢磨了一下,记录如下
整个流程
首先编辑完成项目根目录/.github/workflows/下部署配置文件
如何配置后续讨论
开发人员提交代码到Github仓库,GitHub会按照部署配置文件上选择相应服务器上具体的Action Runner,接着按照配置文件上执行步骤逐步执行,完成部署任务
配置文件配置
# zoombar后端部署服务name: deployenv:EUREKA_SERVER_TARGET_DIR: '/home/actions-runner/_work/zoombar/zoombar/EurekaServer/target'USER_CENTER_TARGET_DIR: '/home/actions-runner/_work/zoombar/zoombar/UserCenter/target'GATE_WAY_TARGET_DIR: '/home/actions-runner/_work/zoombar/zoombar/GateWay/target'CONFIG_TARGET_DIR: '/home/actions-runner/_work/zoombar/zoombar/Config/target'CONTENT_TARGET_DIR: '/home/actions-runner/_work/zoombar/zoombar/ContentService/target'JOB_TARGET_DIR: '/home/actions-runner/_work/zoombar/zoombar/Job/target'# push触发# 绑定master分支on:push:branches: [ master ]# 构建步骤jobs:# 编译excute:# 指定运行环境 self-hosted 标签来选择任何自托管运行器 linux为附属标签runs-on: [self-hosted, Linux, X64]# 步骤steps:# 检出代码# 这个是官方的用于拉取代码的actions# `@` 后面可以跟指定的分支或者 release 的版本或者特定的commit- name: checkoutuses: actions/checkout@master# with: # 当前 actions 的一些配置 需要2.8以上git支持# submodules: true # 如果项目有依赖 Git 子项目时可以设为 true,拉取的时候会一并拉取下来# 编译- name: buildrun: |echo '开始执行zoombar代码编译功能'mvn clean install -Dmaven.test.skip=truemv -f $EUREKA_SERVER_TARGET_DIR/eureka-server-exec.jar /opt/zoombar/eureka.jarmv -f $USER_CENTER_TARGET_DIR/user-center-exec.jar /opt/zoombar/user-center.jarmv -f $GATE_WAY_TARGET_DIR/gateway-exec.jar /opt/zoombar/gateway.jarmv -f $CONTENT_TARGET_DIR/content-exec.jar /opt/zoombar/content.jarmv -f $JOB_TARGET_DIR/job-exec.jar /opt/zoombar/job.jarecho 'build success'- name: deployrun: |echo '构建应用阶段'pm2 restart eurekapm2 restart user-centerpm2 restart contentpm2 restart gatewaypm2 restart jobecho 'deploy success'
全量的配置可见官方文档:[传送门](https://docs.github.com/cn/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions)<br />配置文件上有几点需要注意
runs-on: [self-hosted, Linux, X64]该配置表明只在自托管运行器,Linux环境,64位都要满足,该配置当你配置完毕Actions-Runner时,会提供给你env这个标签可以第一级使用,用以表示整个部署环境的环境变量,也可以在每个具体的Step中使用,用作局部变量,引用时使$引用- 执行多行脚本需要在
run标签冒号后面空一格,加上竖线表示后续为多行脚本
配置SSH访问公钥
如果服务器上已经有了公钥,直接将该SSH公钥粘贴到新建的Secrets项中来就可以了
我这个服务器上没有需要手动生成
$ cd /home$ mkdir -p ~/.ssh && cd ~/.ssh$ ssh-keygen -t rsa -f mysiteing public/private rsa key pair.Enter passphrase (empty for no passphrase):Enter same passphrase again:
这里一路回车就行,执行完成后,会在~/.ssh下生成两个文件:mysite(私钥)和mysite.pub(公钥)。其中私钥是你的个人登录凭证,不可以分享给他人,如果别人得到了你的私钥,就能登录到你的服务器。公钥则需要放到登录的目标服务器上
将公钥mysite.pub的内容贴到目标服务器的~/.ssh/authorized_keys中,如果上一步你直接是在服务器中执行,则只要
$ cat mysite.pub >> authorized_keys
确保服务器~/.ssh文件夹的权限低于711,我这里直接用600(仅本用户可读写)
$ chmod 600 -R ~/.ssh

安装Actions-Runner
- 选择具体的环境,比如我的是Linux 64

- 下载相应的执行安装包,直接下非常慢,建议迅雷下好传上去
解压
tar -xvf actions-runner-linux-x64-2.273.5.tar.gz
添加用户,并将该目录下文件所有权设置为该用户,后续涉及到修改文件都需要设置所有权
useradd actions-runnerchown -R /home/actions-runner
配置绑定Github仓库
这里是现成代码,就不赘述了,直接复制执行即可
启动服务
$ sudo ./svc.sh start
查看服务状态
$ sudo ./svc.sh status
停止服务
$ sudo ./svc.sh stop
```
测试代码提交
当push代码到master分支时,可以在Action选项栏看到具体代码部署的日志

