Доступ к API Jenkins с использованием Javascript - PullRequest
0 голосов
/ 17 января 2020

Как указано,

Я пытался получить доступ к API Jenkins (последняя версия Jenkins, версия 2.204.1), используя библиотеку Jenkins . Я попытался позвонить, чтобы получить журнал сборки, используя следующий код в React

import Jenkins from 'jenkins'

// ngrok is used to expose Jenkins's URL to the internet, so that Github webhooks can connect properly to the Jenkins.
const jenkinsConfig = {
    baseUrl : 'http://username:password@URLToMyJenkins.ngrok.io', 
    crumbIssuer: true
};
const _jenkins = Jenkins(jenkinsConfig);

useEffect(() => {
    const getBuildLog = () => {
        runner.build.get({
                name: 'jobname',
                number: 1
            }, (err, data) => {
            if (err){
                console.log('Its on err!!! ::: ', err);
            } 

            console.log('Can i see what is the data ::: ', data);
        });
    }
}, []);

Когда я запускаю приведенный выше код, он выдает ошибку CORS, но на консоли ngrok я вижу, что API был успешно вызван (статус 200)

OPTIONS /job/GHTest2/1/api/json                                           200 OK

В веб-консоли

Access to fetch at 'http://URLToMyJenkins.ngrok.io/job/GHTest2/1/api/json' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

Я установил Jenkins CORS-Filter-Plugin и поместил в него следующие настройки

Access-Control-Allow-Origins - http://localhost:3000, http://URLToMyJenkins.ngrok.io
Access-Control-Allow-Methods - GET, PUT, OPTIONS
Access-Control-Allow-Headers - origin, Content-Type, X-Requested-With
Access-Control-Expose-Headers - origin, *
Access-Control-Max-Age - 999

И даже отключить защиту и защиту от CSRF в Jenkins, все равно не сработало и продолжает выдавать ошибку CORS.

Я что-то здесь сделал не так, или API Jenkins просто не доступен со стороны интерфейса, используя Javascript?

1 Ответ

0 голосов
/ 17 января 2020

Удалось решить эту проблему, установив следующее в конфигурации CORS Дженкинса

Access-Control-Allow-Headers - Authorization

При этом все приведенные выше коды наконец-то могут работать как положено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...