秘钥对使用_使用gitactions持续集成项目实例

前言

在以前,我们发布代码都是在本地先将代码编译打包压缩好好,然后借助 xshell 等工具登录服务器,将压缩好的代码拷贝到服务器目录,解压执行。但是这种方式是繁琐低效的。而且,直接登录服务器进行操作有很大的风险。随着 DevOps 的兴起,出现了持续集成,持续交付(CI/CD)和持续部署的新方法,开发人员只需要通过工具定义好整个软件打包发布的流水线(Pipeline)就可以实现自动化。

那么,通过什么软件去定义这个流水线,就是下面我要介绍的 github 提供的 Actions 模块功能。

actions 配置文件

actions 的配置文件存放在代码仓库的.github/workflows目录。是一个yml文件,名字可以自定义。

配置字段

  • name:工作流(Workflows)的名字,你可以定义多个流水线,名字可以帮助你区分。

  • on:Workflows 触发的时机,一般是 push 和 pr 到指定分支时触发。

  • runs-on:工作流执行的虚拟机环境。

  • job:任务,一个 Workflows 可由一个或多个 job 组成。

  • step:步骤,每个 job 可由一个或多个 step 组成。

  • use:在执行 step 时,你可以使用别人定义好的 actions

  • run:在执行 step 时,执行 run 对应的 shell 命令

下面是我目前配置的 Workflows

name: vpBlog# Controls when the action will run. Triggers the workflow on push or pull request# events but only for the master branchon:  push:    branches: [master]  pull_request:    branches: [master]# A workflow run is made up of one or more jobs that can run sequentially or in paralleljobs:  # This workflow contains a single job called "build"  build:    # The type of runner that the job will run on    runs-on: ubuntu-latest    # Steps represent a sequence of tasks that will be executed as part of the job    steps:      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it      - uses: actions/checkout@v2      - name: Install Node.js        uses: actions/setup-node@v1        with:          node-version: "10.x"      - name: install dependencies        run: npm install      # Runs a single command using the runners shell      - name: build project        run: npm run build      - name: Deploy to Server        uses: easingthemes/ssh-deploy@v2.1.1        env: # 以下为参数          SSH_PRIVATE_KEY: ${{ secrets.DEPLOY_SSH_KEY }}          ARGS: "-rltgoDzvO --delete"          REMOTE_USER: ${{ secrets.DEPLOY_USER }} # 为了用户信息安全对敏感数据可以在secrets中配置          REMOTE_HOST: ${{ secrets.DEPLOY_HOST }}          SOURCE: ".vuepress/dist"          TARGET: "/usr/share/nginx/html

secrets 配置

上面配置中你一定很好奇secrets.DEPLOY_SSH_KEY是如何获取的。下面就可以解答你的疑惑。

相信秘钥,服务器地址这些敏感信息,你一定不希望被别人看到。所以 github 也贴心的提供了 secrets 模块配合 actions 使用。

具体配置方法可以看下图

3afdbdde2e36e299973f8cb80b9b02f5.png

工作流配置

每个人在发布前可能会执行 eslint 检查,或者跑单元测试,然后在执行 build,这里不展开讲了。最终的目的是要将代码发布到指定的服务器上。下面就来说下这步怎么做。

其实也不复杂,是借助了easingthemes/ssh-deploy这个开源的 action,其原理也是使用rsync这个工具实现数据传输。

- name: Deploy to Server    uses: easingthemes/ssh-deploy@v2.1.1    env: # 以下为参数        SSH_PRIVATE_KEY: ${{ secrets.DEPLOY_SSH_KEY }}        ARGS: "-rltgoDzvO --delete"        REMOTE_USER: ${{ secrets.DEPLOY_USER }}        REMOTE_HOST: ${{ secrets.DEPLOY_HOST }}        SOURCE: '.vuepress/dist'        TARGET: '/usr/share/nginx/html'

服务器配置

由于rsync是借助秘钥实现通过 ssh 进行传输。所以在服务器上需要做一些配置。

创建秘钥

ssh-keygen -m PEM -t rsa -b 4096

在服务器上安装公钥

cat .ssh/id_rsa.pub >> .ssh/authorized_keys

编辑 /etc/ssh/sshd_config 文件,开启服务器允许通过秘钥登录

RSAAuthentication yesPubkeyAuthentication yes

因为我是直接使用 root 账号,所以还要开启允许 root 通过 ssh 登录

PermitRootLogin yes

重启 ssh 服务器

service sshd restart

最后将私钥(id_rsa )中的内容保存到 secrets

总结

因为都是静态文件所以直接拷贝到 nginx 目录就可以直接运行了,所以相对比较简单。如果是服务端还需要涉及到执行重启等功能。

下面放一个执行成功的 actions

ad1b0a18f70dacc554041e7e7ee887a1.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值