GitHub也能CI/CD了 如何使用GitHub的Action?
GitHub也能CI/CD了!如何使用GitHub的Action?
一,什么是CI/CD
见另一篇文章
二,GitHub的Action
GitHub的Action是一种自动化的CI/CD工具,可以让你在GitHub上自动执行一些指令,比如构建、部署、推送代码等。
不光如此,在触发action之后,相当于我们有了一个暂时的服务器,用这个甚至可以白嫖一些计算资源
三,GitHub Actions 的使用方法
- 建立目录文件
.github/workflows/
在这个目录下建立一个名为name.yml的文件,内容如下:
name: Node.js CIon:push:branches: [ master ]
jobs:build:runs-on: ubuntu-lateststrategy:matrix:node-version: [ 16.x]# See supported Node.js release schedule at https://nodejs.org/en/about/releases/steps:- uses: actions/checkout@v2- name: Use Node.js ${{ matrix.node-version }}uses: actions/setup-node@v2with:node-version: ${{ matrix.node-version }}cache: 'npm'- run: npm ci- run: npm publish
这个脚本会在每次git push 时自动执行“npm publish”
下面会解释一下用法
on
on 指的是在哪个事件触发时执行,这里是在master git push 时执行
其他常见的还有 pull_request 等等
jobs
jobs 是一系列动作的集合
这里定义了一个build的动作
之后又对build进行了描述
runs-on 指定了这个动作在哪个系统上执行
strategy:matrix:node-version: [ 16.x]
这些定义了一个预定义的环境,在这个环境中有node,可以运行node命令
steps
steps具体描述了该怎么执行脚本
而use是使用了别人已经预先定义好的脚本,这里的actions/checkout@v2就是一个把仓库拉取到最新的脚本
我们将仓库拉到最新后就直接运行
npm ci
npm publish
这样,就会在每次git tag 时自动执行npm publish
四,GitHub Actions的常见流程
一般的CI/CD流程是:
拉取代码 -> 构建 -> 测试 -> 推送代码或者部署
这里提供几个常用的
拉取
- uses: actions/checkout@v2
部署
- name: Deploy to Staging serveruses: easingthemes/ssh-deploy@mainenv:SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}SOURCE: "docs/.vuepress/dist/"REMOTE_HOST: ${{ secrets.DEPLOY_HOST }}REMOTE_USER: ${{ secrets.DEPLOY_USER }}TARGET: ${{ secrets.DEPLOY_REMOTE_DIR }}
发送Http请求
- name: Axios Request# You may pin to the exact commit or the version.# uses: potaesm/github-actions-request@7c5145f0b707e9a1d7b7e71cf1812fcec2228fb5uses: potaesm/github-actions-request@1.0.7with:# `url` is the server URL that will be used for the requesturl: ${{ secrets.REQUEST_URI }}${{ job.status }}# `method` is the request method to be used when making the requestmethod: get
五,Action的Security
当我们需要执行一些设计账号密码的操作的时候,就需要把这些信息隐藏起来。因为yml文件别人是可以看到的。
这时就需要secrets了
打开Github仓库页面,进入Setting
找到Secrets选项,在这个页面中,我们可以添加一个secret,这个secret就是我们需要的密码,
可以自定义名称和内容,这个内容别人是看不到的
之后,我们就可以在脚本中引入
- name: Deploy to Staging serveruses: easingthemes/ssh-deploy@mainenv:SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}SOURCE: "docs/.vuepress/dist/"REMOTE_HOST: ${{ secrets.DEPLOY_HOST }}REMOTE_USER: ${{ secrets.DEPLOY_USER }}TARGET: ${{ secrets.DEPLOY_REMOTE_DIR }}
这里使用了一个别人写好的脚本,可以把构建好的部署到服务器上,就是deploy的过程
${{ secrets.SERVER_SSH_KEY }}就是我们的私钥,这个私钥是我们在github上添加的,
${{ secrets.DEPLOY_HOST }}就是服务器的地址,
这样,我们可以在代码tag之后,就自动把构建产物部署到服务器上!
Last But Not Least
别忘了关注➕,点赞
GitHub也能CI/CD了 如何使用GitHub的Action?相关推荐
- 如何能在git bash中使用mvn命令_使用Github Actions完成CI/CD工作
在本文中,我们将介绍如何使用 Github Actions 自动化开发部署工作流,使版本控制和 CI/CD 平台在同一个地方完成. 自2019年开始,github便提供了CI/CD工具,对于publi ...
- github使用指南_所有开源项目免费使用,GitHub 内置 CI/CD 终于来了
2019 年 8 月 8 日,GitHub 官方博客发文称,程序员期待已久的功能来了,Github Actions 终于支持内置 CI/CD 了,并对所有开源项目免费!目前该功能可以在 Beta 版本 ...
- 所有开源项目免费使用,GitHub 内置 CI/CD 终于来了!
作者丨田晓旭 来源丨InfoQ 2019 年 8 月 8 日,GitHub 官方博客发文称,程序员期待已久的功能来了,Github Actions 终于支持内置 CI/CD 了,并对所有开源项目免费! ...
- GitHub免费支持CI/CD了,开发测试部署高度自动化,支持各种语言,网友:第三方凉凉...
郭一璞 栗子 发自 凹非寺 量子位 出品 | 公众号 QbitAI GitHub激动地宣布,终于支持CI/CD了. CI\CD,全称:持续集成 (Continuous Integration) ,持续 ...
- 【壹个小技巧】一看就会的CI/CD :Github Actions
什么是 CI/CD? 我这里先不说概念,先说一个平时开发的场景问题: 我们平时开发一个项目,经常会遇到这些"小"问题: 就是如何保证自己的项目是正确的,至少拿给别人的时候,可以编译 ...
- 最佳实践 | 如何基于GitHub Actions创建 DolphinScheduler Python API的CI/CD?
点亮 ⭐️ Star · 照亮开源之路 https://github.com/apache/dolphinscheduler 01. DolphinScheduler 和 Python API 介绍 ...
- SAP 电商云 Spartacus UI 的单元测试和端到端测试,以及 CI/CD 相关话题
单元测试 在项目根目录的 package.json 下面,定义了测试相关的 script: 可以直接 npm run test:libs, 启动所有库的单元测试: 也可以手动执行单个库的单元测试,例如 ...
- 单元测试 CI/CD
目录 前言 1 CI/CD 1.1 什么是 CI 1.2 什么是 CD 1.3 CI/CD 流程 2 CI 平台选择 2.1 Github Actions 2.2 Jenkins 2.3 Github ...
- 基于 GitLab CI 的前端工程CI/CD实践
CI/CD 是 Gitlab 提供的一整套持续集成.持续交付解决方案. 概念:「持续集成(Continuous Integration)」.「持续交付(Continuous Delivery)」和「持 ...
最新文章
- iscroll 滚动刷新
- [git/svn]Git和SVN差异
- 云原生应用如何做到低成本获得高稳定?
- C++ BUILDER 消息处理的深入探索
- 给中国学生的第五封信 – 你有选择的权利
- 机器学习笔记(十二):聚类
- maven 公共模块依赖_idea 创建多模块依赖Maven项目
- nvidia.dali:深度学习加速神器!
- css-bootstrap的安装与使用
- 帮助罕见病患者买得到药 京东健康上线“罕见病关爱中心”
- 2021年,开发者们如何拥抱 5G 消息?
- excel文件修复工具_psd文件修复工具下载|Recovery Toolbox for ps 最新版v2.3.1.0 下载
- 2021年MEMS传感器产业链变化与趋势
- 解决Jenkins一直用户名或密码错误
- UE4 Spline
- SYSLINUX 6.03不支持64bit的ext4
- Android10支持ntfs格式u盘
- 一文到胃------合并(归并)排序原理
- Java中的Enum的简单使用
- python猴子分桃问题_用python实现【五猴分桃】问题