gpt4 book ai didi

gitlab - 如何访问以前的 GitLab CI 工件,处理它们并将文件保存在 "main"存储库中?

转载 作者:行者123 更新时间:2023-12-05 06:48:42 29 4
gpt4 key购买 nike

我的应用是可视化我的软件的性能。因此,我简要描述了我在做什么以及我被困在哪里。

  1. 我在 GitLab 中有我的源代码
  2. 在 CI 中为每次提交编译并运行一些测试
  3. 测量测试运行所花费的时间并将其保存到文件
  4. 上传带有时间的文件

--------- 从这里开始我不知道如何实现它。

  1. 运行一些新作业,读取先前工件的所有计时文件
  2. 绘制时间,可能使用 Python,并将图像保存为“主”存储库中的 SVG
  3. 在 GitLab 起始页上显示图片(README.md 应该包含它)
  4. 现在我可以看到哪些提交对我的软件性能有哪些影响

不知道我是否在要求不可能的事情。我希望有人能帮助我,因为我不是 CI 专家。也许一个表达式就足以在谷歌上搜索解决方案,但我什至不知道如何表述。

谢谢大家:)

最佳答案

将图像提交到 Main

您不能仅将 SVG 图像从管道作业保存到主存储库。你需要做出 promise 。这不仅会污染您的 git 历史并增加您的存储库,而且还会触发新的管道,从而导致无限循环。

有很多方法可以绕过无限循环,例如通过控制哪些源/分支触发管道或通过在提交消息前加上 [skip ci] 前缀,但这可能会变得复杂并且可能不值得。事实上,GitLab 无法完全按照您的意愿行事,因此您将不得不在某个地方做出妥协。

从工件生成指标图

您可以从 CSV 文件中的过去管道收集指标并将其保存为工件。

将其添加到名为 add_metrics.sh 的可重用脚本中:

#!/bin/bash
HTTP_HEADER="PRIVATE-TOKEN: $YOUR_ACCESS_TOKEN"
URL_START="https://gitlab.example.com/api/v4/projects/$CI_PROJECT_ID/jobs/artifacts"
URL_END="raw/<path/to/artifact>/metrics.csv?job=$CI_JOB_NAME"

COLUMN_HEADERS=Date,Time,Branch,Commit SHA,Test Time(s),Code Coverage (%)

# download latest artifact
if curl --location --header $HTTP_HEADER $URL_START/$CI_COMMIT_BRANCH/$URL_END
then echo "Feature branch artifact downloaded."
elif curl --location --header $HTTP_HEADER $URL_START/master/$URL_END
then echo "Master branch artifact downloaded."
else echo $COLUMN_HEADERS >> metrics.csv
fi

# add data sample row to CSV
NOW_DATE=$(date +"%F")
NOW_TIME=$(date +"%T")
echo $NOW_DATE,$NOW_TIME,$CI_COMMIT_BRANCH,$CI_COMMIT_SHA,$TEST_TIME,$CODE_COVERAGE >> metrics.csv

# keep last 50 lines
echo "$(tail -50 metrics.csv)" > metrics.csv

然后在 gitlab-ci.yml 的管道中调用它:

job_name:
script:
- TEST_TIME=10
- CODE_COVERAGE=85
- chmod +x add_metrics.sh
- bash add_metrics.sh
artifacts:
paths:
- metrics.csv
expire_in: 1 month

Note: You will have to create a personal token and add it to a masked variable. I will also leave it up to you to populate the data metrics, like test time, code coverage, etc.

代码解释

  1. 下载latest artifact对于当前分支。
  2. 功能分支的第一次提交不会找到“最新”工件。如果发生这种情况,请从 master 下载最新的工件。
  3. 脚本第一次运行时,master 甚至没有“最新”工件,因此创建一个新的 CSV 文件。
  4. 将当前示例附加到 CSV 文件的末尾。删除旧样本以保留固定数量的数据点。您可以添加日期、管道 ID 和其他指标。
  5. 存储更新后的工件。
  6. 要查看图表,请从 GitLab 用户界面下载工件并在电子表格应用中查看。

发布到页面

使用 Python(pandas、matplotlib),您可以生成绘图的图像并将其发布到 Gitlab Pages来自您的 master 分支管道。您可以在存储库中有一个引用相同图像文件名的静态 HTML 页面,并不断替换管道中的相同图像。您还可以添加更多有用的指标,例如代码覆盖率。

关于gitlab - 如何访问以前的 GitLab CI 工件,处理它们并将文件保存在 "main"存储库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66770140/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com