Resolved - The Pip Inspector tree parse failed to produce output

Details

Failure: PIP - Pip Inspector
The Pip Inspector tree parse failed to produce output.

Overall Status: FAILURE_DETECTOR - Detect had one or more detector failures while extracting dependencies.

For more output please click to expand.

👉 Click to see more output 👈
[main] --- ======== Detect Issues ========
[main] ---
[main] --- DETECTORS:
[main] --- Detector Issue
[main] --- /workdir/test
[main] --- Failure: PIP - Pip Inspector
[main] --- The Pip Inspector tree parse failed to produce output.
[main] ---
[main] --- ======== Detect Result ========
[main] ---
[main] --- Black Duck Project BOM: https://org.blackducksoftware.com/api/projects/246c8952-7cb8-40e9-9987-35f7d4602ae1/versions/e1cb4204-42d0-4445-8675-978df62b150d/components
[main] ---
[main] --- ======== Detect Status ========
[main] ---
[main] --- GIT: SUCCESS
[main] --- PIP: FAILURE
[main] ---
[main] --- Signature scan / Snippet scan on /workdir/test: SUCCESS
[main] --- Overall Status: FAILURE_DETECTOR - Detect had one or more detector failures while extracting dependencies. Check that all projects build and your environment is configured correctly.
[main] ---
[main] --- If you need help troubleshooting this problem, generate a diagnostic zip file by adding '-d' to the command line, and provide it to Synopsys Technical Support. See 'Diagnostic Mode' in the Detect documentation for more information.
[main] ---
[main] --- ===============================
[main] ---
[main] --- Detect duration: 00h 00m 54s 951ms
[main] --- Exiting with code 5 - FAILURE_DETECTOR

ENVIRONMENT:

  • Product: synopsys-detect-7.11.1.jar
  • Others: OpenJDK 11, Python 3.6 and Python 2.7.5

Root cause

Read More

2022 年最值得关注的 DevOps 趋势和问答

DevOps 是 IT 界最近几年的一个热门话题,而且还会越来越热。

最近有幸和一位做传播咨询的读者朋友交流关于 2022 年最值得关注的 DevOps 趋势以及一些问题和回答,分享给大家。

行业趋势

趋势一:转向无服务器计算

无服务器计算是一种新兴趋势,实际上已经存在了十多年。企业购买无服务器框架需要一段时间,主要是因为对行业支持和对投资回报的担忧。

无服务器具有许多越来越难以忽视的优势,主要的两个最大好处是效率和可靠性。没有基础设施管理的负担,企业可以将资源集中在正重要的事项上。此外,无服务器还降低了传统框架可能出现的潜在维护问题的风险。

无服务器提供固有的可扩展性和可靠性并自动化开发人员不喜欢的日常操作任务,2022 年无服务器计算会经历下一次发展。

趋势二:微服务架构增长

随着无服务器计算在 2022 年的发展,微服务也将如此。

微服务架构是将单体应用分化为小的独立单元,或服务,从而为大型团队提供了更大的灵活性。它有以下优势:

  • 为企业提供比单体应用程序更好的可扩展性和敏捷性
  • 开发人员可以使用他们熟悉的编程语言和工具,消除传统应用程序开发的局限
  • 开发人员能够在不破坏整个代码库的情况下部署小的特性或功能
  • DevOps 团队可以根据业务需求来扩展每个应用部分,而不是一次性扩展整个应用
  • 出现问题微服务可以轻松控制问题,而不会中断整个应用程序

当然也必须认识到微服务的一个弊端,如果实施不佳可能导致严重问题,包括数据丢失、可靠性差和安全风险。

趋势三:Kubernetes 成为基础架构

Read More

从QA到DEV到DEVOPS,码字五年有哪些收获

在写博客和公众号这件事上,不知不觉已经是我的第五个年头了,没想过能这么久。

借此分享一下这些年我的职业线路的变化,以及写博客&公众号有什么收获,算是自己过去的一个总结,如果能有点共鸣和帮助就更好了。

从QA到DEV到DEVOPS

最早关注我公众号读者朋友大概都是因为软件测试而结缘的。是的,我做了近 10 的软件测试工作,先后在 SIMcom、东软、京东商城、外企从事过功能&自动化&性能测试工作。

从功能测试入行开始,我慢慢地感受到编程不是开发的独门武功,它也是测试工程师的必备技能,只有具备良好的编码能力,才能去做自动化、Unittest、以及测试开发等工作。

当我做了自动化测试工程师,我又发现相对于“发现”问题,“解决”问题更令我愉悦。我开始梦想有机会能去做开发,这样不但可以提高自己的编程能力,另外开发、测试都懂也能为自己今后的职业发展找到更多可能性。

最终是因为有这样的机会+自己的主动+编码过得去,我从测试转到了开发。起初的艰难和压力都是我工作近 10 年来前所未有的,白天看代码、晚上看代码、周末看代码… 天天如此。经过了半年多的努力,才终于上岸,可以做 C/C++ 项目的 Bugfix 了。

也正是因为有开发、自动化、持续集成的经验,在团队需要一名 Build/Release 工程师的时候,我知道这就是我最适合的岗位,负责产品的自动化构建、发布、基础设施建设、CI/CD 以及提高研发效能的相关开发工作。

就这样我从 QA 到 DEV 到 DEVOPS。公众号的更名记录也记录了我的职业路线变化:

  • 2019年07月28日 “软件测试与开发”改名“DevOps攻城狮”
  • 2018年12月29日 “DevQA”改名“软件测试与开发”
  • 2018年12月26日 “软件测试QA”改名“DevQA”
  • 2017年08月01日 注册“软件测试QA”

写作五年有哪些收获

写作是一项长期收益远超短期收益的事情

对于绝大多数人在短期内几乎不会有什么实质性的收益,还会花费大量的业余时间,妥妥的是用爱在发电。从金钱角度来衡量这件事,这是一件投入和产出完全不成比例的事情,很难坚持。

如果从长期来看,坚持写作一定会带来价值的,我总结有以五个方面的好处:

  1. 好记性不如烂笔头 - 当我们弄明白了一个技术难题,虽然当时明白了,但如果没记录下来,很有可能以后遇到同样的问题又不知道该如何解决。
  2. 让别人听懂才是真的懂 - 有时候对于一个问题我们认为自己明白了,当分享给别人的时候,才发现其中有的逻辑说不通,因此不得不继续思考并彻底搞清楚。
  3. 打造学习飞轮 - 当你坚持分享并有人关注到你并与你互动的时候,你就会有动力继续分享,学习新的知识然后再分享,一旦学习的飞轮造好了,坚持下去就变得容易。
  4. 间接收益 - 但凡坚持写点东西,对于以后找工作都或多或少会有些帮助,至少说明你是一个爱学习的人。如果你的分享让同行、未来你的面试官觉得很不错,很可能会给你带来一次新的工作机会。
  5. 直接收益 - 直接利益包括平台流量和广告收益、以及卖专栏、做咨询等。这要求就很高了,不但需要会自媒体运营,还有要超强的输出功力,这背后就是比别人更多的付出。

Read More

Vagrant 和 Docker 的区别,该如何选?

关于 Vagrant 的介绍,可以参看前一篇文章:什么是 Vagrant? Vagrant 和 VirtualBox 的区别

什么是 Vagrant

关于 Vagrant 的介绍,可以参看前一篇文章:什么是 Vagrant? Vagrant 和 VirtualBox 的区别

Vagrant 和 Docker 区别

关于 Vagrant 被问到最多的问题:Vagrant 和 Docker 之间有什么区别。

如果不分场景的直接比对 Vagrant 和 Docker 是不恰当的。在一些简单场景中,它们的作用是重复的,但在更多场景中,它们是无法相互替代的。

那么什么情况下应该用 Vagrant,什么情况下用 Docker 呢?

所以如果你仅仅是想管理虚拟机,那么你应该使用 Vagrant;如果你想快速开发和部署应用,那么应该使用 Docker。

下面具体来说说为什么。

Read More

什么是 Vagrant? Vagrant 和 VirtualBox 的区别

什么是 Vagrant

Vagrant 是一种开源软件产品,用来方便构建和维护虚拟软件开发环境。

例如,它可以基于 VirtualBox、VMware、KVM、Hyper-V 和 AWS 甚至是 Docker 等提供商来构建开发环境。它通过简化虚拟化的软件配置管理,来提高开发效率。

Vagrant 是用 Ruby 语言开发的,但它的生态系统支持使用其他几种语言进行开发。

简单来说 Vagrant 是对传统虚拟机的一层封装,能够让你更方便的使用虚拟开发环境。

Vagrant 的发展史

Read More

什么是 Go ?Go 的优势和现状。初学者应该学习 Python 还是 Go?

Go 是一种开源编程语言,可以轻松构建简单、可靠和高效的软件。

Go 还是 Golang

先问一个大多数人可能会忽略的问题:Google 的这门开源编程语言叫 Go 还是 Golang?还是两个都行?给你三秒钟想一下 …

Google 说:它叫 Go。之所以有人称它为 Golang 是由于之前的 Go 语言官网是 golang.org(因为 go.org 已经被别人用了),因此有人将 Golang 和 Go 混用了。

现在输入 golang.org 会直接跳转到 go.dev 这个网址,这也算是彻底给自家孩子正个名。

Go 语言有哪些优势

官网是这样介绍 Go 语言的:

  • Go 适合大规模快速构建,可靠、高效的软件
  • Go 是 Google 在背后支持的一门开源编程语言
  • 易于学习和入门
  • 内置并发和强大的标准库
  • 不断发展的合作伙伴、社区和工具生态系统

今天,Go 被用于各种应用程序:

Read More

你一定要了解这 17 条 Docker 最佳实践!

本篇分享在编写 Dockerfiles 和使用 Docker 时应遵循的一些最佳实践。篇幅较长,建议先收藏慢慢看,保证看完会很有收获。

文章目录

Dockerfile 最佳实践

  1. 使用多阶段的构建
  2. 调整 Dockerfile 命令的顺序
  3. 使用小型 Docker 基础镜像
  4. 尽量减少层的数量
  5. 使用无特权的容器
  6. 优先选择 COPY 而不是 ADD
  7. Python 包缓存到 Docker 主机上
  8. 每个容器只运行一个进程
  9. 优先选择数组而不是字符串语法
  10. 理解 ENTRYPOINTCMD 之间的区别
  11. 添加健康检查 HEALTHCHECK

Docker 镜像最佳实践

  1. Docker 镜像的版本
  2. 不要在镜像中存储密钥
  3. 使用 .dockerignore 文件
  4. 检查和扫描你的 Docker 文件和镜像
  5. 签署和验证镜像

Dockerfile 最佳实践

1. 使用多阶段的构建

利用多阶段构建的优势来创建更精简、更安全的Docker镜像。多阶段 Docker 构建(multi-stage builds)允许你将你的 Dockerfile 分成几个阶段。

例如,你可以有一个阶段用于编译和构建你的应用程序,然后可以复制到后续阶段。由于只有最后一个阶段被用来创建镜像,与构建应用程序相关的依赖关系和工具就会被丢弃,因此可以留下一个精简的、模块化的、可用于生产的镜像。

Web 开发示例:

Read More

2022年序员如何选择显示器?1080p还是2K? 单屏还是多屏?

工作十几年用过了不少显示器,从最初的 17寸,到后来的 23寸、27寸、32寸、再到现在的 34 寸,根据我自己的使用体验,来个主观推荐:

第一名,一个34寸曲面显示器
第二名,一个27寸 + 一个23寸的双屏组合
第三名,一个32寸 + 一个23寸的双屏组合
第三名,两个 23 寸的双屏组合(并列第三名)

以上这些屏幕推荐购买 2K 及以上的分辨率,1080p 的分辨率不推荐。

下面我就按照时间轴说说我用过的那些显示器。

Read More

组织内如何评估 CI/CD 成熟度

问题

在一个组织内,不同的团队之间可能会有不同的维度来评估 CI/CD 的成熟度。这使得对衡量每个团队的 CI/CD 的表现变得困难。

如何快速评估哪些项目遵循最佳实践?如何更容易地构建高质量的安全软件?组织内需要建立一个由团队成员一起讨论出来的最佳实践来帮助团队建立明确的努力方向。

如何评估

这里我参考了开源项目 CII 最佳实践徽章计划,这是 Linux 基金会 (LF) 发起的一个开源项目。它提供一系列自由/开源软件 (FLOSS) 项目的最佳实践方法。参照这些最佳实践标准的项目可以进行自认证, 以获得核心基础设施促进会(CII)徽章。要做到这点无需任何费用,你的项目可以使用 Web 应用(BadgeApp) 来证明是如何符合这些实践标准的以及其详细状况。

这些最佳实践标准可以用来:

  • 鼓励项目遵循最佳实践。
  • 帮助新的项目找到那些它们要遵循的最佳实践
  • 帮助用户了解哪些项目遵循了最佳实践(这样用户可以更倾向于选择此类项目)。

最佳实践包含以下五个标准:基本,变更控制,报告,质量,安全,分析。

cii

更多关于标准的细分可以参考 CII 中文文档CII 英文文档

已经很多知名的项目比如 Kubernetes, Node.js 等在使用这个最佳实践徽章计划

badge-owners

如果你的项目在 GitHub 上或是你可以按照上述的徽章计划进行评估,就可以使用它来评估你项目的最佳实践,并可以在项目主页的 README 上显示徽章结果。

badge-result

定制最佳实践标准

如果上述项目不能满足你的评估要求,结合我的实践,制定了如下“最佳实践标准”并分配了相应的成熟度徽章,供参考。

计算规则

  1. 每个最佳实践标准都有分数,通常一般的标准是10分,重要的标准是20分
  2. 带有🔰的最佳实践标准表示“一定要有”
  3. 带有👍的最佳实践标准表示“应当有”
  4. 每个项目的最佳实践标准分数之和落在的区间获得对应的徽章

徽章分数对照表

徽章 分数 描述
🚩WIP < 100 小于100分获得 🚩Work In Progress 徽章
✔️PASSING = 100 等于100分获得 ✔️PASSING 徽章
🥈SILVER > 100 && <= 150 大于100,小于等于150分获得🥈银牌徽章
🥇GOLD > 150 大于等于150分获得🥇金牌徽章

注:这个分数区间可调整。

最佳实践标准和分数

类别 最佳实践标准 分数 描述
基本 🔰构建任何分支 20 Jenkins:支持任何分支构建
🔰构建任何PR 20 Jenkins:支持对任何 Pull Request 在 Merge 之前进行构建
🔰上传制品 10 Jenkins:构建产物上传到制品仓库保存
👍容器化构建 10 推荐使用容器化技术实现Pipeline
质量 🔰自动化测试 20 Jenkins:支持触发冒烟/单元/回归测试
👍性能测试 10 Jenkins:支持触发性能测试
👍代码覆盖率收集 10 Jenkins:支持获得代码覆盖率
安全 🔰漏洞扫描 10 Jenkins:支持触发漏洞扫描
🔰License扫描 10 Jenkins:支持触发证书扫描
分析 👍Code Lint 10 Jenkins:支持对PR进行代码格式检查
👍静态代码分析 10 Jenkins:支持对PR进行静态代码分析
👍动态代码分析 10 Jenkins:支持对PR进行动态代码分析
报告 🔰Email或Slack通知 10 支持通过Email或Slack等方式通知

注:以Jenkins为例。

最终的结果

No Repository Name 实现的最佳实践标准 徽章
1 project-a 🔰构建任何分支
🔰构建任何PR
🔰上传制品
🔰自动化测试
🔰Email或Slack通知
🚩WIP
2 project-b 🔰构建任何分支
🔰构建任何PR
🔰上传制品
🔰自动化测试
🔰漏洞扫描
🔰License扫描
🔰Email或Slack通知
✔️PASSING
3 project-c 🔰构建任何分支
🔰构建任何PR
🔰上传制品
👍容器化构建
🔰自动化测试
🔰漏洞扫描
🔰License扫描
🔰Email或Slack通知
🥈SILVER
4 project-d 🔰构建任何分支
🔰构建任何PR
🔰上传制品
👍容器化构建
🔰自动化测试
👍性能测试
👍代码覆盖率收集
🔰漏洞扫描
🔰License扫描
👍Code Lint
👍静态代码分析
👍动态代码分析
🔰Email或Slack通知
🥇GOLD

Q&A

Q: 为什么使用徽章而不是分数?
A: 使用徽章能更好的帮助团队朝着目标而不是分数努力。

Q: 建立最佳实践标准还有哪些帮助?
A: 团队之间容易进行技术共享,更容易地构建高质量的安全软件,保持团队之间在统一的高水准。

GitHub Actions 还能这么玩?自动将发布的博客文章更新到 GitHub 个人主页

最近实现了一个很有意思的 Workflow,就是通过 GitHub Actions 自动将每次最新发布的文章自动同步到我的 GitHub 首页。

就像这样在首页显示最近发布的博客文章。

最终效果

要实现这样的工作流需要了解以下这几点:

  1. 需要创建一个与 GitHub 同名的个人仓库,这个仓库的 README.md 信息会显示在首页
  2. 通过 GitHub Actions 自动获取博客的最新文章并更新 README.md
  3. 只有当有新的文章发布的时候才触发自动获取、更新文章 GitHub Action

Read More