使用 GitHub Actions 和 Qodana 传递环境变量

使用 GitHub Actions 和 Qodana 传递环境变量

本文档旨在解决在使用 gitHub Actions 运行 Qodana 代码质量检查时,如何正确传递环境变量,特别是当项目依赖于私有 maven 仓库并需要身份验证凭据时。通过修改 github Actions workflow 文件中的 args 参数,确保环境变量正确传递给 Qodana 扫描器,从而避免构建失败的问题。

使用 GitHub Actions 运行 Qodana 并传递环境变量

在使用 GitHub Actions 运行 JetBrains 的 Qodana 代码质量检查工具时,有时需要传递环境变量,例如访问私有 Maven 仓库所需的用户名和密码。本教程将介绍如何正确地将这些环境变量传递给 Qodana,以避免构建失败。

问题描述

在 GitHub Actions workflow 文件中使用 JetBrains/qodana-action 时,尝试通过 args 参数传递环境变量,但构建失败,提示缺少 gradle 属性,即使这些属性已作为环境变量传递。

解决方法

问题在于 args 参数的格式。args 参数中的环境变量之间需要使用逗号 , 分隔,而不是空格。

正确配置示例

以下是正确的 GitHub Actions workflow 文件配置示例:

name: Qodana on:   workflow_dispatch:   pull_request:   push:     branches:       - '[0-9]+.[0-9]+.x'  jobs:   qodana:     runs-on: ubuntu-latest     steps:       - uses: actions/checkout@v3         with:           fetch-depth: 0       - name: 'Qodana Scan'         uses: JetBrains/qodana-action@v2024         with:           args: -e,ORG_GRADLE_PROJECT_onstructiveUsername=${{ secrets.M2_USER }},-e,ORG_GRADLE_PROJECT_onstructivePassword=${{ secrets.M2_PWD }}

错误配置示例

以下是错误的配置示例,会导致构建失败:

name: Qodana on:   workflow_dispatch:   pull_request:   push:     branches:       - '[0-9]+.[0-9]+.x'  jobs:   qodana:     runs-on: ubuntu-latest     steps:       - uses: actions/checkout@v3         with:           fetch-depth: 0       - name: 'Qodana Scan'         uses: JetBrains/qodana-action@v2024         with:           args: -e ORG_GRADLE_PROJECT_onstructiveUsername=${{ secrets.M2_USER }},-e ORG_GRADLE_PROJECT_onstructivePassword=${{ secrets.M2_PWD }}

解释

在正确的配置中,-e 选项用于设置环境变量,每个环境变量的定义之间使用逗号分隔。 ORG_GRADLE_PROJECT_onstructiveUsername 和 ORG_GRADLE_PROJECT_onstructivePassword 是 Gradle 项目中用于访问私有 Maven 仓库的属性。${{ secrets.M2_USER }} 和 ${{ secrets.M2_PWD }} 是 GitHub Secrets 中存储的用户名和密码,用于保护敏感信息。

注意事项

  • 确保在 GitHub 仓库的 Secrets 中正确配置了 M2_USER 和 M2_PWD。
  • 如果环境变量名称中包含特殊字符,请确保进行适当的转义。
  • 在本地使用 docker 运行 Qodana 时,可以使用 -e 选项直接设置环境变量,例如:
docker run --rm -it -p 8080:8080    -v /src:/data/project/    -v /src/build/results:/data/results/    -e ORG_GRADLE_PROJECT_onstructiveUsername=user    -e ORG_GRADLE_PROJECT_onstructivePassword=password    jetbrains/qodana-jvm-community:latest --show-report

总结

正确使用逗号分隔 args 参数中的环境变量,是成功传递环境变量给 Qodana 的关键。通过本教程,你应该能够解决在使用 GitHub Actions 运行 Qodana 时环境变量传递失败的问题,从而顺利进行代码质量检查。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享