前言 GITLAB
虽好,但是实在是太吃内存了 所以后面选择GitHub
来作为我的项目代码仓库,最近发现GH Action
一样可以实现 CI CD,下午琢磨了一下,记录如下
整个流程 首先编辑完成项目根目录/.github/workflows/下部署配置文件 如何配置后续讨论 开发人员提交代码到 Github 仓库,GitHub 会按照部署配置文件上选择相应服务器上具体的 Action Runner,接着按照配置文件上执行步骤逐步执行,完成部署任务
配置文件配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 name: deploy env: 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" on: push: branches: [master ] jobs: excute: runs-on: [self-hosted , Linux , X64 ] steps: - name: checkout uses: actions/checkout@master - name: build run: | echo '开始执行zoombar代码编译功能' mvn clean install -Dmaven.test.skip=true mv -f $EUREKA_SERVER_TARGET_DIR/eureka-server-exec.jar /opt/zoombar/eureka.jar mv -f $USER_CENTER_TARGET_DIR/user-center-exec.jar /opt/zoombar/user-center.jar mv -f $GATE_WAY_TARGET_DIR/gateway-exec.jar /opt/zoombar/gateway.jar mv -f $CONTENT_TARGET_DIR/content-exec.jar /opt/zoombar/content.jar mv -f $JOB_TARGET_DIR/job-exec.jar /opt/zoombar/job.jar echo 'build success' - name: deploy run: | echo '构建应用阶段' pm2 restart eureka pm2 restart user-center pm2 restart content pm2 restart gateway pm2 restart job echo 'deploy success'
全量的配置可见官方文档:传送门 配置文件上有几点需要注意
runs-on: [self-hosted, Linux, X64]
该配置表明只在自托管运行器,Linux 环境,64 位都要满足,该配置当你配置完毕 Actions-Runner 时,会提供给你
env
这个标签可以第一级使用,用以表示整个部署环境的环境变量,也可以在每个具体的 Step 中使用,用作局部变量,引用时使$
引用
执行多行脚本需要在run
标签冒号后面空一格,加上竖线表示后续为多行脚本
配置 SSH 访问公钥 如果服务器上已经有了公钥,直接将该 SSH 公钥粘贴到新建的 Secrets 项中来就可以了 我这个服务器上没有需要手动生成
1 2 3 4 5 6 $ cd /home $ mkdir -p ~/.ssh && cd ~/.ssh $ ssh-keygen -t rsa -f mysite ing public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again:
这里一路回车就行,执行完成后,会在~/.ssh
下生成两个文件:mysite
(私钥)和mysite.pub
(公钥)。其中私钥是你的个人登录凭证,不可以分享给他人 ,如果别人得到了你的私钥,就能登录到你的服务器。公钥则需要放到登录的目标服务器上 将公钥mysite.pub
的内容贴到目标服务器的~/.ssh/authorized_keys
中,如果上一步你直接是在服务器中执行,则只要
1 $ cat mysite.pub >> authorized_keys
确保服务器~/.ssh
文件夹的权限低于 711,我这里直接用 600(仅本用户可读写)
安装 Actions-Runner
选择具体的环境,比如我的是 Linux 64
下载相应的执行安装包,直接下非常慢,建议迅雷下好传上去
解压
1 tar -xvf actions-runner-linux-x64-2.273.5.tar.gz
添加用户,并将该目录下文件所有权设置为该用户,后续涉及到修改文件都需要设置所有权
1 2 useradd actions-runner chown -R /home/actions-runner
配置绑定 Github 仓库
这里是现成代码,就不赘述了,直接复制执行即可
后台运行,可以看到连接上了GitHub
1 2 3 4 5 6 7 8 9 10 11 12 # 测试用 $ ./run.sh & # 生产上建议配置为服务 linux环境命令为 $ sudo ./svc.sh install # 启动服务 $ sudo ./svc.sh start # 查看服务状态 $ sudo ./svc.sh status # 停止服务 $ sudo ./svc.sh stop
测试代码提交 当push
代码到master
分支时,可以在Action
选项栏看到具体代码部署的日志
相关
使用 GitHub Actions 实现博客自动化部署