Step Of WorkFlow----感觉工作流(WorkFlow)

本文介绍了工作流的基本概念,包括其定义、简单机制以及特点。通过一个具体的Pizza订购流程示例,详细阐述了工作流中步骤如何依据规则进行决策。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是工作流?

工作流:是一系列的步骤(Step),决策(decisition),规则(Rule)去完成一项特定(Specific)的事务。

简单的例子:在Pizza店里,顾客告诉服务员想要的Pizza,服务员把Pizza有关信息告诉厨师,厨师使用调料制作Pizza。厨师把做好的Pizza给服务员,服务员向顾客收取Pizza钱,并把Pizza给顾客,完成了工作流。

2.那么工作流的简单机制是什么呢?

在工作流中每个步骤(Step)都会检查规则(evaluating rules),做出决策(making decisions)。现在分析一下买Pizza这个工作流中,是否体现了这个规则。

  • 首先是顾客。顾客会想买什么Pizza(检查规则),决定买A种Pizza(做出决策)。
  • 然后是服务员。会查看顾客的订单(Order)是否存在错误(检查规则),决定是否把订单给厨师(做出决策)。
  • 最后是厨师。会查看订单(Order),材料是否可以做Pizza(检查规则),决定是否能做出Pizza(做出决策)。
  • 之后的步骤也会像上面三步一样,检查后做出决策。

3.工作流所具有的特点.

工作流不会总是让人(human)参与的(俗话说:人总是把简单的事情复杂化)。

工作流可以发生在分布式的程序中,因为工作流是按照一定的步骤(Step)和规则(Rule)同步执行。

大部分的工作流具有状态的,而且相关的工作时间长。由于在实际生活中,工作不会按照理想的环境执行的。如上面的例子,在顺利的条件下,顾客也许只需要等待30min。但是,如果当时你订的Pizza调料不够了,而Pizza店要订购调料则又需要30天,那么这三十天的工作流(WorkFlow)的状态(State)一直停留在购买状态。

一个工作流的大部分的时间都是在等待中度过的(等待事件(Event)的发生),如等待Pizza送来,等待付款,等待Pizza做好。而在这些等待的时候,工作流又是什么情况呢?工作流此时是空闲的(idle),而且不会占有任何资源的。

转载于:https://www.cnblogs.com/kelelong/articles/1724504.html

### Workflow-Steps 的使用方法及其在 CI/CD 中的定义 #### 什么是 Workflow-Steps? `steps` 是 GitHub Actions 工作流中的一个重要组成部分,它代表了一组按顺序执行的任务列表。每个 `step` 可以是一个简单的命令行操作,也可以调用一个预定义的动作(Action)。这些步骤构成了作业的主要逻辑部分[^1]。 在一个典型的 CI/CD 流程中,`steps` 被用来完成诸如检出代码、运行构建脚本、执行单元测试以及部署应用程序等功能[^2]。 --- #### 基础语法 下面是一段基本的工作流配置片段展示了如何定义 `steps`: ```yaml jobs: build: runs-on: ubuntu-latest steps: - name: Check out the repository uses: actions/checkout@v4.1.1 - name: Set up Python environment uses: actions/setup-python@v4 with: python-version: '3.x' - name: Install dependencies run: | pip install --upgrade pip pip install -r requirements.txt - name: Run tests run: pytest ``` 在这个例子中: - 第一步 (`Check out the repository`) 使用了一个官方提供的 Action 来克隆仓库的内容。 - 接下来的几步则分别设置了 Python 环境、安装依赖并最终运行测试套件[^3]。 每一步都通过 `- name:` 字段描述其作用,并且要么指定了要使用的 action (`uses:`),要么直接包含了 shell 命令 (`run:`)--- #### Steps 在 CI/CD 中的作用 在持续集成 (CI) 和持续交付/部署 (CD) 场景里,`steps` 主要是用于实现以下目的: 1. **代码拉取**: 利用像 `actions/checkout` 这样的插件把最新的源码同步下来以便后续处理。 2. **环境搭建**: 设置必要的开发工具链比如 JDK、Node.js 或者 PHP 解释器等。 3. **编译打包**: 对项目进行编译或者生成可分发的产品包。 4. **质量保障**: 启动静态分析工具扫描潜在缺陷;启动动态测试框架验证业务功能正确性。 5. **制品上传**: 将成功的产物存放到远程存储库或者其他地方供下游消费。 6. **通知机制**: 当整个流水线结束时向相关人员报告结果状态——成功与否等等信息[^4]。 例如,发送 Slack 消息就是一个常见的实践案例: ```yaml - name: Notify via Slack uses: 8398a7/action-slack@v3 with: status: ${{ job.status }} fields: repo,message,commit,author,action,eventName,ref,workflow,job,took env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} ``` 这里我们看到除了常规参数之外还引入了一些上下文变量 `${{ ... }}` 动态填充实际值给接收端呈现更丰富的细节数据。 --- #### 注意事项 虽然灵活强大但是也需要注意一些最佳实践避免常见陷阱: - 不同类型的 runner 支持的功能有所差异,请确保所选用平台满足需求; - 敏感资料应该妥善保管并通过 secret 方式传递而不是硬编码进 script 内部暴露风险; - 复杂耗时较长的过程考虑拆分成多个独立的小型 task 提升调试便利性和并发性能表现。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值