秘钥对使用_使用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 使用。
具体配置方法可以看下图
工作流配置
每个人在发布前可能会执行 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
秘钥对使用_使用gitactions持续集成项目实例相关推荐
- ci持续集成工程师前景_不要忽视持续集成(CI)/持续交付(CD)的13个优势
原标题:不要忽视持续集成(CI)/持续交付(CD)的13个优势 持续集成(CI)/持续交付(CD)是现代软件开发周期的基础,人们需要了解持续集成(CI)/持续交付(CD)和其管道实施的所有好处. 在传 ...
- windows配置gitlab秘钥并测试_你了解多少Linux系统GitLab安装与环境配置?
Linux系统GitLab安装与环境配置 注意:虚拟机的内存至少2G以上 一. 从GitLab官网获取安装方法和步骤: https://about.gitlab.com/installation/#c ...
- bat窗口大小设置_如何将U盘设置成我们计算机的开机秘钥,对电脑加密。
在日常工作中,当我们电脑中有重要文件的时候,电脑安全就成了我们关注的问题,所以常常我们会给我们的电脑设置开机密码,但是尽管我们设置了口令,但还是不能保证我们电脑不受非法入侵.今天小编教大家用我们的U盘 ...
- python对称加密_【Python】 基于秘钥的对称加密
[Crypto] 关于用python进行信息的加密,类似的解决方案有很多比如用base64编码进行encode,再或者是hashlib来进行hash.但是还缺少一种明明场景很简单的解决方案,就是把利用 ...
- java支付宝当面付接口_支付宝当面付秘钥生成教程(加对接案例)
总是有小伙伴犯愁支付宝当面付的秘钥生成,看着挺高大上,实际上不是很麻烦,给大家分享一下生成过程,以及对接我们伟大的sspanel的方法 准备 开通了支付宝当面付的账号一枚(本人代开,50大洋,地址:联 ...
- exure9 秘钥_AxureRP9.0秘钥(持续更新)
Axure RP 9.0.0.3717-3719 正式版 Axure Enterprise Edition Licensee :Freecrackdownload.com KEY:5vYpJgQZ43 ...
- JAVA_KEYTOOL_生成秘钥_一蓑烟雨任平生
项目场景: 项目中需要秘钥加密,Java开发使用jdk生成最方便 问题描述 生成代码如下 在cmd中执行JDK中keytool的命令: # keytool -genkeypair -alias zha ...
- SSH HTTPS 公钥、秘钥、对称加密、非对称加密、 总结理解
2019独角兽企业重金招聘Python工程师标准>>> 作者:shede333 主页:http://my.oschina.net/shede333 && http:/ ...
- md5加密解密代码_Python内置方法实现基于秘钥的信息加解密
点击关注州的先生 精彩不容错过 在实际编程开发中,我们会使用到各类的加密算法来对数据和信息进行加密.比如密码中比较常见的MD5加密,以及AES加密等等.对于密码认证来说,MD5加密是比较适合的,因为其 ...
最新文章
- 全面分析Web应用程序安全漏洞——《黑客攻防技术宝典:web实战篇》
- 计算机基础课教学心得,计算机基础教学心得
- 大学计算机无线论文范文大全,大学计算机论文范文
- Nginx模拟负载均衡
- 事务的隔离级别(Transaction isolation levels)5
- 艾伟:WM有约(一):你好,CF
- usermod+用户密码管理+mkpasswd
- 微信小程序this.setData如何修改对象、数组中的值
- pp助手苹果版本_PP助手、百度助手相继下线,越狱时代宣告落幕,你曾越狱过吗?...
- VBA InStr 函数
- mui.ajax ie8,IE8+MVVM的适配方案尝试
- 【UV打印机】PrintExp打印软件教程(六)-高级模式(马达)
- 计算机采取二进制的原因,计算机为什么采用二进制
- 《企业管理学》管理理论的产生于发展知识点总结
- Android 7.1 亮度调节之BrightnessController
- 男人副业做什么好?男生适合做啥副业?男士副业都有什么
- with dlz mysql 条件_BIND+DLZ+MYSQL
- 当一个SQL语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序...
- HDU 5148 Cities
- GNN:A Gentle Introduction to Graph Neural Networks