nginx 发送gitlab中生成的HTML报告

iklwldmw  于 2023-10-17  发布在  Nginx
关注(0)|答案(1)|浏览(175)

我已经为给定的作业在artifacts文件夹下生成了HTML报告,现在我想让HTML报告在Nginx托管的Web服务器之一(http://some_domain_name:8080)中可用。
我的.yml文件如下所示:

job:
    artifacts:
      name: "artifact_name"
      paths:
        - artifacts
      expire_in: 7 days

我想我可以使用下面的API下载工件并提取html报告:

curl --location --output artifacts.zip --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts"

有没有一种方法可以让我们配置.yml文件,使来自artifacts文件夹的html文件在nginx web服务器上可用?
提前感谢!

qyswt5oh

qyswt5oh1#

我假设你正在使用self-manager runners的内部GitLab示例,考虑到你的GitLab运行器需要网络访问(例如,SSH访问)到你的NGiNX服务器。
如果是这样的话,那么在下载工件之后,您确实可以:

  • 解压缩并提取文物。
  • 将HTML文件上传到Nginx服务器,例如使用scprsync等工具将HTML文件从GitLab运行器移动到Nginx服务器。
  • 确保文件权限和所有权在Nginx服务器上设置正确,以便Web服务器可以读取和服务该文件。
stages:
  - deploy

deploy_to_nginx:
  stage: deploy
  script:
    - apt-get update -y && apt-get install -y unzip curl rsync
    - curl --location --output artifacts.zip --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs/42/artifacts"
    - unzip artifacts.zip
    - rsync -avz -e "ssh -o StrictHostKeyChecking=no" ./artifacts/report.html username@nginx_server_ip:/path/to/nginx/root/directory/
  only:
    - main  # or whichever branch you want to deploy from

这个流水线步骤应该在您当前的产生工件的作业之后执行,或者您可以将上面的步骤添加到您当前的作业脚本中。
您需要替换:

  • username@nginx_server_ip应该替换为Nginx服务器的实际用户名和IP地址(或域)。
  • /path/to/nginx/root/directory/应该替换为Nginx提供静态文件的实际路径。

您需要将runner的公钥添加到Nginx服务器上目标用户的~/.ssh/authorized_keys文件中。
添加StrictHostKeyChecking=no是为了避免手动验证Nginx服务器的指纹。虽然这简化了过程,但这是用于 * 测试 *,因为它可能存在安全风险。提前将Nginx服务器的SSH指纹添加到GitLab runner的已知主机中更安全(如Pablo Daniel González中的“GitLab CI — SSH with Passphrase deploy example”)。

相关问题