OpenAPITools / openapi-generator-cli

A node package wrapper for https://github.com/OpenAPITools/openapi-generator
Apache License 2.0
1.47k stars 154 forks source link

Make it easy to use with a private maven repository #835

Open gonzalad opened 1 month ago

gonzalad commented 1 month ago

Hello,

I am using the openapi-generator-cli 2.14.0 with a private maven repository (requiring authentication).

Atm using this cli with this setup involves a few steps and makes it feel a bit quirky.

I was wondering if it's possible make the whole process smoother:

Steps to follow to use the openapi-generator-cli with a private maven repository

Here are the steps I needed to follow to make the openapi-generator-cli work in my corporate environment.

Please note: I am used to have HTTP_PROXY, HTTPS_PROXY and NO_PROXY environment vars setup. The NO_PROXY is set in order to avoid internal http calls to be sent via the proxy.

  1. First run: I get a 503 (returned by my http proxy)
    Ok, this is the issue https://github.com/OpenAPITools/openapi-generator-cli/issues/652 Fix: I remove all HTTP_PROXY, HTTPS_PROXY

  2. Second run: I get a unable to get local issuer certificate. Ok, this is related to https://github.com/OpenAPITools/openapi-generator-cli/issues/130#issuecomment-737277129 Fix: I add NODE_TLS_REJECT_UNAUTHORIZED=0 as environment variable

  3. Third run: Request failed with status code 401 (returned by my private maven repository) Fix: I hardcode my user/pwd credentials in my openapitools.json. I am not too happy with this solution since I'll need to do some pre-processing to be able to others dev in my team to use their credentials (or for the ci to run):

    {
     "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
      "spaces": 2,
      "generator-cli": {
        "version": "7.9.0",
        "repository": {
           "downloadUrl": "https://myuser:mypassword@my.corporate.maven.repo.com/repository/mvn-proxy-group/${groupId}/${artifactId}/${versionName}/${artifactId}-${versionName}.jar"
      }
    }
    }