关键词:
【中文标题】gitlab CI 管道检查代码格式【英文标题】:gitlab CI pipeline to check for code formatting 【发布时间】:2020-08-04 05:45:15 【问题描述】:我希望在我的几个项目中安装 google-java-formatter
。
但是,在提交代码时,我希望 CI
管道检查是否首先完成了格式化。
我知道我可以在我的根目录中使用.gitlab-ci.yml
文件来完成此操作,但是我非常不确定如何实现检查所有文件是否已正确格式化的目标,谁能帮我解决这个问题请使用google-java-formatter
和gitlab
。
【问题讨论】:
如果您使用 SBT、Maven 或 Gradle,也可以使用 spotless plugin。 【参考方案1】:
google-java-formatter
用于代码格式化
由于google-java-formatter
对代码进行了修改(格式化),因此它会更改要提交的代码。
根据google-java-format源代码:
google-java-format
是一个重新格式化 Java 源代码以符合Google Java Style 的程序。
所以,你需要一个pre-commit
钩子。
例如你可以使用pre-commit - 一个用于管理和维护多语言预提交钩子的框架。
你可以看到here的示例文件
.pre-commit-hooks.yaml:
- id: eclipse-formatter
name: Eclipse Java Formatter
description: This hook formats Java code with the Eclipse formatter.
entry: eclipse-formatter
language: python
types:
- java
- id: google-java-formatter
name: Google Java Formatter
description: This hook formats Java code with Google Java Formatter.
entry: google-java-formatter
language: python
types:
- java
如果您确实想将 git 挂钩与 GitLab
集成,请尝试创建自定义 GitLab Server hook
linters 与格式化程序
如你所说:
在提交代码时,我希望 CI 管道首先检查格式化是否已完成。
你在问什么 - 是 checkstyle linting
不是 formatting
因此,要检查格式化是否已经完成,您可以使用一些 linter。
即from this answer:
SpotBugs(之前的 Findbugs)用于查找现有错误。非常好! PMD 用于查找可能导致错误的模式(例如未使用的变量) Checkstyle 强制执行编码标准和约定(例如空格、Javadoc) Error Prone 直接挂钩到您的应用程序的编译步骤
checkstyle
linter 使用情况
这方面有很多指南,例如:GitLab CI/CD Pipeline for Maven-Based Applications – The Blog of Ivan Krizsan
另外,还有250+ samples of .gitlab-ci.yml
带有`checkstyle。
Client_Checkstyle:
stage: test
script:
- mvn checkstyle:checkstyle
- cat checkstyle-result.xml
allow_failure: false
【讨论】:
我还是有点不确定如何在 gitlab 中使用它,我将这个文件添加到我的根目录,然后管道会接收这个文件吗?如果这对答案有任何影响,我正在使用 inteliJ 添加了一些链接和.gitlab-ci.yml
的示例,请检查Gitlab CI/CD 如何在管道中捕获 curl 响应
】GitlabCI/CD如何在管道中捕获curl响应【英文标题】:GitlabCI/CDhowtocatchcurlresponseinpipeline【发布时间】:2022-01-0901:48:30【问题描述】:我有pipeline启动一些maven/java应用程序,现在我想添加test阶段,我检查应用程序是否成功启动,例... 查看详情
如何从 gitlab CI 管道中推送到仓库?
】如何从gitlabCI管道中推送到仓库?【英文标题】:HowdoIpushtoarepofromwithinagitlabCIpipeline?【发布时间】:2019-01-1321:50:32【问题描述】:在我的CI管道中,我正在生成一个工件public/graph.png,它可以可视化我的代码的某些方面。在后面... 查看详情
Gitlab-ci - 管道无法运行
】Gitlab-ci-管道无法运行【英文标题】:Gitlab-ci-PipelineFailstorun【发布时间】:2021-01-2305:36:38【问题描述】:当我尝试运行管道时出现以下错误sudo:aterminalisrequiredtoreadthepassword;eitherusethe-Soptiontoreadfromstandardinputorconfigureanaskpasshelper这... 查看详情
如何能够将变量传递给 gitlab ci 管道中的规则?
】如何能够将变量传递给gitlabci管道中的规则?【英文标题】:Howtobeabletopassvariabletorulesingitlabcipipeline?【发布时间】:2021-12-2417:30:42【问题描述】:我想在我的GitLabCI管道中使用规则来检查是否从所需的分支提交了提交,以及我... 查看详情
GitLab CI - 保持最后的管道状态
】GitLabCI-保持最后的管道状态【英文标题】:GitLabCI-Keeplastpipelinestatus【发布时间】:2021-12-1509:52:46【问题描述】:在GitLabCI中,当推送时没有作业排队时,是否可以保持最后一个管道状态?我的.gitlab-ci.yml中有这样的changes规则设... 查看详情
GitLab CI 管道阶段超时
】GitLabCI管道阶段超时【英文标题】:GitLabCIPipelineStageTimeout【发布时间】:2016-11-1902:39:41【问题描述】:我正在使用自托管GitLabCIserver(社区版v8.9.5)和gitlab-ci-multi-runner1.2.0来构建项目。我的一个管道阶段(测试)需要一段时间... 查看详情
如何在 Maven GitLab CI/CD 管道中将 JaCoCo 报告 HTML 转换为 PDF
】如何在MavenGitLabCI/CD管道中将JaCoCo报告HTML转换为PDF【英文标题】:HowdoIconvertJaCoCoreportHTMLtoPDFinMavenGitLabCI/CDpipeline【发布时间】:2021-12-2316:39:33【问题描述】:我正在尝试通过在CI/CD管道中转换为PDF格式来存储JaCoCo报告中的index.ht... 查看详情
为合并请求触发的管道运行应用 GitLab CI/CD 管道更改
】为合并请求触发的管道运行应用GitLabCI/CD管道更改【英文标题】:ApplyGitLabCI/CDpipelinechangesforpipelineruntriggeredbymergerequest【发布时间】:2022-01-0715:40:45【问题描述】:我通过一个新项目的repo根目录中的.gitlab-ci.yml文件在GitLab中创... 查看详情
在 GitLab CI 管道中使用 docker-compose
】在GitLabCI管道中使用docker-compose【英文标题】:Usingdocker-composeinaGitLabCIpipeline【发布时间】:2017-07-0620:00:39【问题描述】:我正在尝试使用以下.gitlab-ci.yml文件实现GitLab持续集成(CI)管道:image:docker:latest#Whenusingdind,it\'swisetousetheove... 查看详情
问:Gitlab CI 谁重试旧管道
】问:GitlabCI谁重试旧管道【英文标题】:Q:GitlabCIwhotoretryolderpipeline【发布时间】:2020-11-0419:11:01【问题描述】:我第一次在重试具有4个阶段和1个作业的旧管道时遇到故障,当管道仅重试第4步和第1步作为运行时我的.gitlab-ci.yml... 查看详情
gitlab ci 管道部署 ftp 失败
】gitlabci管道部署ftp失败【英文标题】:gitlabcipipelinefaileddeployftp【发布时间】:2020-06-1400:58:02【问题描述】:我尝试使用gitlab-ci.yml构建和推送我的react构建文件夹构建和测试通过,但部署失败,出现以下错误:如果我在我的语言... 查看详情
未能在 GitLab CI 管道中执行目标
】未能在GitLabCI管道中执行目标【英文标题】:FailedtoexecutegoalinGitLabCIPipeline【发布时间】:2021-11-0519:57:43【问题描述】:当我触发我的应用程序的构建管道时,我收到了未能执行目标错误。但是,当我在本地构建这个应用程序时... 查看详情
GitLab-CI 在管道中获取 pom 版本
】GitLab-CI在管道中获取pom版本【英文标题】:GitLab-CIgetpomversioninpipeline【发布时间】:2019-02-1019:05:39【问题描述】:我想通过gitlabCI以项目的版本作为标签来构建docker镜像:dockerbuild-tdockerimage:VERSION-IN-POM.在詹金斯的管道中,我得... 查看详情
具有复杂子文件夹的 Gitlab CI 父/子管道
】具有复杂子文件夹的GitlabCI父/子管道【英文标题】:GitlabCIparent/childpipelineswithcomplexsubfolders【发布时间】:2021-10-1021:49:23【问题描述】:我的gitlab(社区版,版本14.1.2)CI在我的monorepo上存在复杂管道的问题。我的结构是客户端... 查看详情
Gitlab-CI 又名管道依赖项中的上游触发
】Gitlab-CI又名管道依赖项中的上游触发【英文标题】:UpstreamtriggeringinGitlab-CIakapipelinedependencies【发布时间】:2020-06-1517:22:09【问题描述】:我似乎无法从这样的工具中找到最明显的CI功能:在另一个项目的管道完成后运行项目管... 查看详情
GITLAB CI 管道,仅使用 git 标签运行作业
】GITLABCI管道,仅使用git标签运行作业【英文标题】:GITLABCIpipeline,runjobonlywithgittag【发布时间】:2022-01-0318:28:31【问题描述】:需要GitLab专家的帮助。我在下面有一个以下管道。我希望“sync_s3:prod”作业只有在我推送新的git标签... 查看详情
为我的 GitLab-Server 上的每个存储库激活 CI/CD 管道
】为我的GitLab-Server上的每个存储库激活CI/CD管道【英文标题】:ActivateCI/CDpipelinesforeveryrepoonmyGitLab-Server【发布时间】:2021-07-3116:12:14【问题描述】:我希望GitLab-Server上的每个存储库都有一个特定的CI/CD管道。git/GitLab支持这样的... 查看详情
使用 Gitlab CI 管道时,作业名称中的冒号是啥意思?
】使用GitlabCI管道时,作业名称中的冒号是啥意思?【英文标题】:WhatdoescoloninjobnamemeanswhenusingGitlabCIpipeline?使用GitlabCI管道时,作业名称中的冒号是什么意思?【发布时间】:2022-01-1604:59:43【问题描述】:使用在GitLab上运行的以... 查看详情