- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Gitlab 中有一个场景,当 MR 在 Gitlab 中第一次打开时,我想 ping 一个特定的 Slack channel 。当源为 merge_request_event
时,我尝试使用 rules
进行触发,但不幸的是,当推送新提交时,这也触发了我的工作到开放的 MR。
是否有可能在 MR 最初打开时一次运行 Gitlab CI 作业,并且在那之后再也不会运行,即使新的提交被添加到 MR?
ping:
stage: .pre
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
script:
- 'curl to slack url'
最佳答案
对于您的用例,您将无法使用 GitLab CI/CD,因为合并请求管道在打开合并请求时启动,提交被推送到 源分支合并请求,或者如果有人从合并请求的管道选项卡中点击运行管道按钮。
这些是启动合并请求管道的唯一方法,但其中任何一个都将始终启动管道。
最好不要在 CI/CD 中执行此操作,而是创建一个可以监听 GitLab Webhook 的小型应用程序,并专门对 action
字段为 的合并请求事件使用react打开
。这是来自 the docs 的合并请求打开事件示例.
{
"object_kind": "merge_request",
"user": {
"id": 1,
"name": "Administrator",
"username": "root",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40\u0026d=identicon",
"email": "admin@example.com"
},
"project": {
"id": 1,
"name":"Gitlab Test",
"description":"Aut reprehenderit ut est.",
"web_url":"http://example.com/gitlabhq/gitlab-test",
"avatar_url":null,
"git_ssh_url":"git@example.com:gitlabhq/gitlab-test.git",
"git_http_url":"http://example.com/gitlabhq/gitlab-test.git",
"namespace":"GitlabHQ",
"visibility_level":20,
"path_with_namespace":"gitlabhq/gitlab-test",
"default_branch":"master",
"homepage":"http://example.com/gitlabhq/gitlab-test",
"url":"http://example.com/gitlabhq/gitlab-test.git",
"ssh_url":"git@example.com:gitlabhq/gitlab-test.git",
"http_url":"http://example.com/gitlabhq/gitlab-test.git"
},
"repository": {
"name": "Gitlab Test",
"url": "http://example.com/gitlabhq/gitlab-test.git",
"description": "Aut reprehenderit ut est.",
"homepage": "http://example.com/gitlabhq/gitlab-test"
},
"object_attributes": {
"id": 99,
"target_branch": "master",
"source_branch": "ms-viewport",
"source_project_id": 14,
"author_id": 51,
"assignee_id": 6,
"title": "MS-Viewport",
"created_at": "2013-12-03T17:23:34Z",
"updated_at": "2013-12-03T17:23:34Z",
"milestone_id": null,
"state": "opened",
"merge_status": "unchecked",
"target_project_id": 14,
"iid": 1,
"description": "",
"source": {
"name":"Awesome Project",
"description":"Aut reprehenderit ut est.",
"web_url":"http://example.com/awesome_space/awesome_project",
"avatar_url":null,
"git_ssh_url":"git@example.com:awesome_space/awesome_project.git",
"git_http_url":"http://example.com/awesome_space/awesome_project.git",
"namespace":"Awesome Space",
"visibility_level":20,
"path_with_namespace":"awesome_space/awesome_project",
"default_branch":"master",
"homepage":"http://example.com/awesome_space/awesome_project",
"url":"http://example.com/awesome_space/awesome_project.git",
"ssh_url":"git@example.com:awesome_space/awesome_project.git",
"http_url":"http://example.com/awesome_space/awesome_project.git"
},
"target": {
"name":"Awesome Project",
"description":"Aut reprehenderit ut est.",
"web_url":"http://example.com/awesome_space/awesome_project",
"avatar_url":null,
"git_ssh_url":"git@example.com:awesome_space/awesome_project.git",
"git_http_url":"http://example.com/awesome_space/awesome_project.git",
"namespace":"Awesome Space",
"visibility_level":20,
"path_with_namespace":"awesome_space/awesome_project",
"default_branch":"master",
"homepage":"http://example.com/awesome_space/awesome_project",
"url":"http://example.com/awesome_space/awesome_project.git",
"ssh_url":"git@example.com:awesome_space/awesome_project.git",
"http_url":"http://example.com/awesome_space/awesome_project.git"
},
"last_commit": {
"id": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
"message": "fixed readme",
"timestamp": "2012-01-03T23:36:29+02:00",
"url": "http://example.com/awesome_space/awesome_project/commits/da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
"author": {
"name": "GitLab dev user",
"email": "gitlabdev@dv6700.(none)"
}
},
"work_in_progress": false,
"url": "http://example.com/diaspora/merge_requests/1",
"action": "open",
"assignee": {
"name": "User1",
"username": "user1",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40\u0026d=identicon"
}
},
"labels": [{
"id": 206,
"title": "API",
"color": "#ffffff",
"project_id": 14,
"created_at": "2013-12-03T17:15:43Z",
"updated_at": "2013-12-03T17:15:43Z",
"template": false,
"description": "API related issues",
"type": "ProjectLabel",
"group_id": 41
}],
"changes": {
"updated_by_id": {
"previous": null,
"current": 1
},
"updated_at": {
"previous": "2017-09-15 16:50:55 UTC",
"current":"2017-09-15 16:52:00 UTC"
},
"labels": {
"previous": [{
"id": 206,
"title": "API",
"color": "#ffffff",
"project_id": 14,
"created_at": "2013-12-03T17:15:43Z",
"updated_at": "2013-12-03T17:15:43Z",
"template": false,
"description": "API related issues",
"type": "ProjectLabel",
"group_id": 41
}],
"current": [{
"id": 205,
"title": "Platform",
"color": "#123123",
"project_id": 14,
"created_at": "2013-12-03T17:15:43Z",
"updated_at": "2013-12-03T17:15:43Z",
"template": false,
"description": "Platform related issues",
"type": "ProjectLabel",
"group_id": 41
}]
}
}
}
这里的关键是顶部的 object_kind
字段,因为这将是 issue
、merge_request
、push
、tag_push
等,我们可以对 merge_request
进行过滤。接下来,action
字段将告诉我们合并请求发生了什么。在此示例中,值为 open
,这意味着合并请求已打开。其他值为 close
、reopen
、update
、approved
、unapproved
和 合并
。
目前,这是确定合并请求是否在没有启动合并请求管道的其他事件的情况下打开的唯一方法。
关于gitlab - MR 打开时只运行一次 Gitlab CI 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69381640/
我正在使用 grep 将“先生”和“夫人”替换为“先生”。和“夫人”,但每当我输入 gsub("Mr", "Mr.", data$Title) 它还会导致所有“夫人”变成“先生”,这不完全是我正在寻找
我在一台远程机器(四核超线程)上安装了 Hadoop 1.2.1,并且正在用 1GB 的文件(一个文件,未压缩)测试 MR 的性能 当我将拆分大小设置为大约 250MB 时,我有四个映射器。在输出文件
我正在尝试了解 MR 作业经历的各个阶段。我阅读了相同的在线文档。 据此,我对序列的理解如下: map() -> Partitioner -> Sorting (mapper machine) ->
我在HDFS中的数据上运行三种不同类型的作业。 在当前情况下,这三个作业必须分别运行。 现在,we want to run the three jobs together by piping the
我有几个 MR-3020,我用 OpenWRT 刷过,并在上面安装了一个 16GB ext4 USB 驱动器。启动时,将启动一个守护进程 shell 脚本,它会做两件事: 1) 它不断查看我的主程序是
我有 9 个文件,每个文件的大小都等于集群的 BlockLength,存储在 hadoop 中。我需要获取文件所在的数据节点的地址。复制因子为 3 。 是否有任何 hadoop API 可以执行此操作
我是 HIVE 和 HADOOP 的新手,在这里我试图在 hive 中加入两个示例表,其中表没有任何主外键关系只是为了练习:- 表格如下 Employees table:-
据我所知,在将文件复制到 HDFS 时进行文件拆分和在文件上为映射器输入进行输入拆分是完全两种不同的方法。 这是我的问题-- 假设我的 File1 大小是 128MB,它被分成两个 block 并存储
我是 Hadoop 的新手,这是我的第一个映射器程序,我正在通过 MR 单元对其进行单元测试。 我正在传递我通过配置对象设置的参数(年份) Configuration config =new
我使用 Sqoop、Hive 和 Pig 操作创建了一个简单的 Oozie 工作流。对于其中的每一个 Action ,Oozie 都会启动一个 MR 启动器,然后由它启动 Action (Sqoop/
我正在运行 MR ( myrepos ) 并尝试运行全局配置。我曾尝试使用 .mrconfig 中的 DEFAULT 部分,但无济于事: [DEFAULT] clean = git clean -df
我们都知道kloxo这个国外非常著名的开源的服务器管理系统,虽然kloxo在国内使用起来会遇到不少的问题,但是由于kloxo可以与whmcs等整合,还是得到了不少朋友的喜爱。本文要介绍的klox
本文整理了Java中org.elasticsearch.hadoop.mr.WritableValueWriter类的一些代码示例,展示了WritableValueWriter类的具体用法。这些代码示
Create PROCEDURE [dbo].[K_RT_FixedAsset] @fromdate datetime, @todate datetime AS BEGIN SET NOCOUNT O
我正在尝试在Hadoop集群上运行MR作业。一旦尝试成功,但是从昨天开始,我将无法运行同一命令,因为它找不到输入路径 这是跟踪: [esb99usr@SBT-IPO-078 ~]$ yarn jar
我正在尝试通过独立的HBase(0.94.11)执行MR代码。 我已经阅读了HBase api,并修改了MR代码以读取数据并向HBase表写入结果,并且在reduce阶段遇到异常。提供部分代码(不包括
我创建了一个正则表达式,可以提取包含匹配单词的句子。 [^.|?|!]*\[^.|!|?]*[\"!?:\.] 但是,它不适用于句子中含有先生/夫人/博士等的情况。 例如: The adventure
我是 MRJob 和 MR 的新手,我想知道 MRJob MR 的传统字数统计 python 示例: from mrjob.job import MRJob class MRWordCounter(M
我试图编写正则表达式来识别以开头的名称 Mr.|Mrs. 例如 Mr. A, Mrs. B. 我尝试了几种表达方式。这些正则表达式已在在线工具 pythonregex.com 上进行检查。 。使用的测
我知道这可能非常简单或其他什么,但最近几个小时我一直在思考这个问题。我搞不清楚了。我有一个看起来像这样的集合(每个文档结构都是相同的) { "_id": "736722976", "val
我是一名优秀的程序员,十分优秀!