前言

信赖重视技术前沿的同学,多少也了解过 GitHub Actions

小年我可巧最近遇上运用的需求,体会了一番之后,感觉两个字:真香!

针不戳!GitHub Actions 入坑攻略

什么是 GitHub Actions ?

GitHub Actions 是 GitHublinux体系 推出的继续集成(Continuous Integration,简称 CI)服务,它供给了整套虚拟服务器环境,根据它能够进行构建、查验、打包、安顿项目等虚拟机linux等操作。

继续集成(CI CD)首要有三个虚拟机linuxshellfish 继续集成、继续交给、继续安顿。

我们一般的软件开发流程是:

  1. 开发人员本地代码 commit
  2. 经过 git hook 触发主动化查验
  3. 查验通往linux查看删去文件记录后,吞并发布分支
  4. 经过 git hook 触发主动安顿服务

这儿简略的描绘了软件开发周期,当然实践上会愈加服务器怎样建立杂乱。

我们能够看到,CI CD 是由许多操作组成的,比如实施主动化查验、分支吞并、服务安顿等,而 GitHub 把shelly-lan这一系列的操作都称为 Actions。

当然 GitHub 立异点还不仅于此,不同的项目或许都会运用到相类似的 Action,GitHub 容许开发ubuntu装置教程者把 action 写成独立的脚本文件,存服务器租借多少钱一年放到代码库房,使得其他开发者能够引用。

GitHub 供给一个官方商场:GitHub Action Market ,在这儿能够查找到你想要的任何 actions,直接引用别人工好服务器操作体系的轮子。

针不戳!GitHub Actions 入坑攻略

基本概念

GitHub Actions 首要有以下几个概念

  • Workfllinux指令ows

    作业流,能够增加到存储库中的主动化进程。作业流由一个或多个作业组成,能够由作业调度或触发。

  • Event

    作业shellfish,触发作业流的特定动作。例如,向存储库提交 pr 或 pull 央求。

  • Jobs

    作业,在同一跑步器上实施的一组进程。默许情况下,具有多个作业的作业流将并行作业这些作业。

  • Steps

    进程,能够在作业中作业指令的单个使命。进程可所以操作,也可所以 shell 指令。作业中的每个进程都在同一个作业程序上实施,虚拟机装置教程然后容许该作业中的操作彼此同享数据。

  • Actions

    操作是独立的指令,它们被组合成创立作业的进程。操作是作业流中最小的可移植构建块服务器。你能够创立自己的动作,或许运用 GitHub 社区创立的动作。

  • Rshell的意思unners

    作业器,装置了 GitHub Actions 作业器应用程序的服务器。。Github 保管的作业器根据 Ubuntu Linux、Microsoft WindShellows 和 macOS,作业流中的每个作业都在一个新的虚拟环境中作业。

快速入门

闲话少说,咱linux操作体系基础知识们先经过简略的实例来体会一下 GitHub Action 的玩法。

实例一:发送邮件

比如比较简略,首要经过 GitHub Actubuntu体系ion 监听代码 push 作业,并发送ubuntu和linux的区别邮件。(条件是邮箱需求注册 SMTP 服务)

shell编程一步,在项目中 ./github/workflows/ 路径下增加 .ym虚拟机下载手机版l 或许 .yaml文件,姓服务器租借多少钱一年名能够随意取。在这儿我取名为 gitlinux是什么操作体系hubshelly-action-demo.yml

针不戳!GitHub Actions 入坑攻略

下面是 git服务器地址在哪里看hub-action-de服务器操作体系银河麒麟mo.yml 的内容:

name: GitHub Action Demo
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
# copy git 库房到虚拟机上
- name: 'Checkout codes'
uses: actions/服务器是什么checkout@v1
# 获取最新一条linux体系装置提交的git log  
- name: Get Git Log
id: git_log
uses: Edisonboy/latest-git-log-action@main
with:
tag: origin/master
# 发送邮件    
- name: Send email
uses: dawidd6/action-send-mail@v3
with:
server_address: smtp.qq.com
server_port: 465
usernam服务器体系e: ${{secrets.MAIL_USERNAME}}
password: ${{sshellyecrets.MAIL_PASSWORD虚拟机体系}}
subject: Github Ac虚拟机安卓tions jobubuntu体系菜鸟入门 result
to: ${{secrets.MAIL_TOUSERNAME}}
from: ${{secrets.MAIL_USERNAME}}
body: $ubuntu体系菜鸟入门{{githushellyb.repository}} push log : ${{steps.git_log.outputs.log}服务器操作体系}

这个 .yml 文件便是对 GitHub Action 的界说,这儿大约阐明一下首要的进程,有关详细的语法,下文面再详解

  1. on: [push] 项目 push 的时分触发
  2. jobs.build.runs-on 作业在 ubuntu 的虚拟机上
  3. jobs.buiShellld.steps 界说了不同的进程,如上注释

第二步,装备参数

聪明的linux常用指令同学或许还会问,那文件上的 ${{XXX}} 变量又是从何而来,哪里界说的呢shell脚本编程100例

上面虚拟机装置教程win10的实例只需运用了两种类型的参数服务器租借多少钱一年变量:

  • secrets.XXX : GitHub 容许库房所有者创立和办理需求保密性的参数。例如邮件的账号和暗码都是归于活络参数。

    能够经过项目 Settings -> Secrets -> Actions 装备暗码,在这儿我们增加 MAIL_USERNAMEMAIL_PASSWORDMAIL_TOUSERNAME 三个配shell的意思备参数(留意:这儿的暗码是指 SMTP 服务虚拟机对电脑伤害大吗的授权暗码)

    针不戳!GitHub Actions 入坑攻略

  • 上下文:能够拜访作业流程作业、作业器环境、作业及进程相关信息的方法

    • ${{github.repository}} :当时库房的的所有者和库房称谓。例如 Edisonboy/ActionDemo
    • ${{steps.git_log_outputs.log}} :获取step id 为 gitshell编程_log 的输出集

第三步,因为我们界说 push 为触发条件,所以当我们只需push 代码后,我们界说的 GitHub Action 才会被实施。然后在 GitHub 上的 Ac虚拟机下载手机版tion 能够实时看到当时的实施状况。

针不戳!GitHub Actions 入坑攻略

等作业完后,我们linux操作体系基础知识就能收到 git pulinuxsh 的日志邮件了!!虚拟机linux

实例地址:Edisonboy/ActionDemo

实例二:Github 同步 Gshellfishitee

参看:利用 GitHub Actions 完毕 github 代码同步 gitee 库房

Workflow服务器操作体系银河麒麟 语法

结合上面的比如,我们简略学习一下 workflow 的语法。

workflow 文件有必要存储在库房的 .github/workflows 的目录中,扩展名为 .yml.yaml

name

workflow 的称谓, GitHub 在库房的操作页面上闪现 workflow 的称谓。

on

触发 workflow 的 GitHub 作业的称谓。

# 单个作业
on: push
# 多个作业列表
on: [push, pull_request]
# 指定main分支的push
on:
push:
branches:
- main

还能够运用守时调度:

on:
schedule:
- cron: '*/30 5,17 * * *'

Jobs

作业,workflow 首要实施的中心使命。

jobs.<job_id&虚拟机体系gt;

每项作业有必要相关一个 ID。例如上面实例的 ID 为 build

jobs.<j虚拟机安卓ob_id&glinux指令t;.name

作业闪现在 GitHub 上的称谓。

jobs.&shell编程lt;job_id>.needs

辨认在此作业作业之前有必ubuntu体系菜鸟入门要成功完毕的任何作业。

jobs:
job1ubuntu装置:
job2:
needs: job虚拟机1
job3:
needs: [job1, job2]

在此示例中,job1 有必要在 job2 初步之前成功服务器地址在哪里看shelly-lan束,而 job3 要等候 job1job2 完毕。

jobs.<job_id>.runs-on

要作业作业的机器类型。 机器可所以 GitHub 保管的作业器或自保管的作业器。

可用的 GitHub 保管的作业器类型包含:

针不戳!GitHub Actions 入坑攻略

jobs.<job_id>.steps

进程,每个 Job 包含一个或linux指令多个进程。进程可所以作业指令、作业设置使命,或许作业库房中的操作和 Dcoker虚拟机型安卓下载 镜像发布等。

例如上面实例界说了 3 个进程 :

  1. copy git 库房到虚拟机上
  2. 获取最新一条提交的git log
  3. 发送邮件

每个进程都能够界说以下几个字段:

jobs..steps[*].id : 进程的仅有标识符
jo虚拟机装置教程bs..steps[*].name : 进程闪现在 GitHub 上的称Ubuntu
jobslinux指令..steps[*].if : 自界说表达式,判别是否满意条件
jobs..steps[*].uses : 选择公共库房中、或发布 Docker linux查看删去文件记录器映像作为一部分作业的操作。例如上面的实例都是运用了linux是什么操作体系公共库房供给的操作
jobs..steps[*].run : 作业 shell 指令程序。

有关 workflow 语法更多的细节运用能够参看: GitHub Actions 官方文档

小结

在实施 workflow 的进程中,GitHubshelly 会主动为我们供给相应的虚拟服务器资源,这时分脑洞大的同学就应该想到:虚拟机装置教程有没有或许连接到这个服务器,白嫖一个服务器随心所欲呢。

看了一下 GitHub Action服务器怎样建立s 官方文档上供给的虚拟服务器资源,这个装备比一台低配个人服务器还shell的意思香。

Windows 和 Linux 虚拟机linux查看删去文件记录的硬件标准:

  • 2 核 CPU
  • 7 GB RAM 内存linux体系装置
  • 14 GB SSD 硬盘空间

MacOS 虚拟机的硬件标准:

  • 3 核 CPU
  • 14 GB RAM 内存
  • 14 GB SSD 硬盘空间

有喜好的同学服务器怎样建立能够参看:SSH 连接到 GitHub Actions 虚拟服务器

还有更硬核的操作! 黑客可谓把白嫖发挥得虚拟机淋漓尽致,尽然想到利用 GitHub 的服务器挖矿 (概略:黑客用GitHub服务器挖矿,三天跑了3万个使命,代码惊现中文)

当然 GitHub Actions 也没有这么傻,必定想到我们白嫖的各种骚操作,所以关于运用增加了必定的限制

针不戳!GitHub Actions 入坑攻略

总的来说,GitHub Actions 是一个十分有用幽默的功用,没有你做不ubuntu20.04装置教程到的,只需你想不到的。

参看资料

GitHub Actions 官方文档

GitHub Actions 入门教程-阮一峰

GitHub Actions 进阶技巧

一般的改动,将linux指令改动一般

我是肥壕虚拟机装置教程win10,一个在互联网低调前行的小青年

欢迎重视我的博客 edisonz.cn,查看更多同享文章