workflow怎么使用workflow工作流程图workflow怎么做




workflow怎么使用workflow工作流程图workflow怎么做

2022-07-20 20:11:59 网络知识 官方管理员

GitHubActions是GitHub于2018年10月推出的持续集成服务。之前我使用的是TravisCI,昨天我体验了一次GitHubActions,感觉功能更强大,可以玩的地方更多,我就介绍一下我初次使用的感受。

GitHubActions是什么

GitHubActions可以参考的同类对象有Jenkins、AzurePelines、CircleCI、TravisCI等,都是持续集成(Continuousintegration,简称CI)服务的提供商,持续集成其实说白了就是根据每次提交的变化不停的在设计、开发、测试、发布这样滚动:

而持续集成的流程是由很多步奏组成的,例如先构建准备运行环境、从Git指定分支拉取代码、编译打包、运行单元测试、登陆远程服务器、发布到第三方等等步奏,GitHub把这些动作都称之为Action,所以由多个Action构成的工作流就被命名为GitHubActions。

为了能让Actions能够复用,GitHub还提供了官方市场,可以搜索其他人提交的Action脚本,还有其他人收集的Action仓库:awesomeactions。

workflow怎么使用(workflow工作流程图)(1)

GitHubActions的构成

GitHubActions是由下面几部分组成的:

  • workflow(工作流程):持续集成一次运行的过程,就是一个workflow。
  • job(任务):一个workflow由一个或多个jobs构成,含义是一次持续集成的运行,可以完成多个任务。
  • step(步骤):每个job由多个step构成,一步步完成。
  • action(动作):每个step可以依次执行一个或多个命令(action)。

GitHubActions工作流文件

想要配置GitHubActions的工作流,我们只需要定义一个YAML文件即可,它存放在代码仓库的.github/workflows目录,例如我的工作流文件:https://github.com/renfei-net/WinterEE/blob/513214d5e7288cee65721c9d05aebdff18d60a04/.github/workflows/build.yml,文件的名字可以自己定义,没有要求。workflow的语法字段非常多,可以参见官方文档。下面是我自己写的工作流文件:

name:buildon:[push,pull_request]jobs:build:name:buildingruns-on:ubuntu-latestservices:mysql:image:mysql:5.7ports:-3306:3306env:MYSQL_ALLOW_EMPTY_PASSWORD:yesMYSQL_DATABASE:wintereeMYSQL_ROOT_PASSWORD:rootoptions:--he alth-cmd="mysqladminping"--he alth-interval=5s--he alth-timeout=2s--he alth-retries=3rabbitmq:image:rabbitmq:3.7.26-management-alpineports:-15672:15672-5672:5672zipkin:image:openzipkin/zipkin:2.21.1ports:-9411:9411redis:image:redis:6.0.1ports:-6379:6379steps:-uses:actions/checkout@v2-name:SetupJDK1.8uses:actions/setup-java@v1with:java-version:1.8-name:VerifyMariaDBConnectionandLoadDataenv:PORT:${{job.services.mysql.ports[3306]}}run:|while!mysqladminping-h"127.0.0.1"-P"$PORT"--silent;dosleep1done-name:LoadingDatabaseenv:PORT:${{job.services.mysql.ports[3306]}}run:mysql-h127.0.0.1-P$PORT-uroot-proot--default-character-set=utf8winteree<environment/db/winteree.sql-name:CacheMavenpackagesuses:actions/cache@v2with:path:~/.m2key:${{runner.os}}-m2-${{hashFiles('**/pom.xml')}}restore-keys:${{runner.os}}-m2-name:BuildwithMavenrun:mvn-Bcleanpackage--filepom.xml-name:UploadCoverallsshell:bashrun:|curl-shttps://codecov.io/bashmvncleantestorg.jacoco:jacoco-maven-plugin:prepare-agentinstallorg.jacoco:jacoco-maven-plugin:reportmvnorg.eluder.coveralls:coveralls-maven-plugin:report-DrepoToken="${{secrets.coveralls_token}}"
  • name:是我给这个工作流起的名字,你可以起一个属于你的名字,这个没有要求。
  • on:是指定触发workflow的条件,通常是某些事件,我这里定义了push和pull_request事件就会触发这个工作流。
  • jobs:是workflow文件的主体,表示要执行的一项或多项任务。
  • jobs.build:是我自己给这个任务起的ID叫”build“,下面我使用<job_id>来代替这个任务ID,你可以给你的任务起一个你自己的任务ID。
  • jobs.<job_id>.name:是我自己给这个任务起的名字叫”building“,你可以给你的任务起一个你自己的任务名称。
  • jobs.<job_id>.runs-on:是指定运行所需要的虚拟机环境。它是必填字段。目前可用的虚拟机有:ubuntu、windows、macOS。
  • jobs.<job_id>.services:是声明运行环境所需要的服务,我这里使用了MySQL、RabbitMQ、Zipkin、Redis。
  • jobs.<job_id>.steps:指定每个Job的运行步骤,可以包含一个或多个步骤。
  • jobs.<job_id>.steps.name:指这个不步奏的名称。
  • jobs.<job_id>.steps.run:指该步骤运行的命令或者action。
  • jobs.<job_id>.steps.env:指该步骤所需的环境变量。
  • GitHubActions中使用密码

    密码是不应该公开在代码仓库里的,所以需要先到项目仓库的Settings->Secrets中添加你的密码,例如我添加了名为”COVERALLS_TOKEN“的密码:

    workflow怎么使用(workflow工作流程图)(2)

    然后在workflow流程文件中使用”${{secrets.coveralls_token}}“这样的格式来使用。

    GitHubActions的徽章图标

    以后,每次修改后推送源码,GitHubActions都会自动运行,那怎么知道运行的结果呢,GitHubActions为我们提供了徽标图标,可以加入到你的项目主页中,图标地址语法如下:

    https://github.com/<OWNER>/<REPOSITORY>/workflows/<WORKFLOW_NAME>/badge.svg?branch=<branch-name>
    • <OWNER>:所有者的用户名
    • <REPOSITORY>:项目仓库名称
    • <WORKFLOW_NAME>:工作流名称
    • <branch-name>:分支名称,如果不写默认是master分支

    所以我的图标地址就是:https://github.com/renfei-net/WinterEE/workflows/build/badge.svg

    我的使用感受

    我之前一直使用的是TravisCI,这次使用了GitHubActions以后感觉速度比TravisCI快很多,而且支持的东西也比TravisCI多,配置起来也不复杂,可玩性非常高,可以实现非常多自动化的东西,以后我主要就使用GitHubActions来做CI/CD了。

    workflow怎么使用(workflow工作流程图)(3)

    发表评论:

    最近发表
    网站分类
    标签列表