Использование Jenkins API на веб-сайте WP - доступ запрещен - PullRequest
2 голосов
/ 21 мая 2019

Я пытаюсь использовать Jenkins API на моем веб-сайте WordPress через разработку собственного плагина.Что касается моей установки, я использую образы Docker: WordPress, Apache, PHP, Jenkins.Проблема в том, что я не могу получить доступ к своему API Jenkins со своего WP-сайта, и я все еще сталкиваюсь с ошибкой «отказано в доступе».

Для моей установки Docker я нахожусь за корпоративным прокси http://proxy:8080, и яустановить локальную сеть докеров Итак, здесь мой docker-compose.yml:

version: '2'
services:
  web:
    build: 
      context: './docker/'
      dockerfile: './httpd/Dockerfile'
    depends_on:
      - db
      - php
    ports:
      - "80:80"
    networks:
      test4exoplatform_local-network:
        ipv4_address: 199.20.0.6
    volumes:
      - ./html/:/var/www/html/
    container_name: web

  db:
    build: 
      context: './docker/db/'
    ports: 
      - "3306:80"
    networks:
      test4exoplatform_local-network:
        ipv4_address: 199.20.0.9
    volumes:
       - ./db_data:/var/lib/mysql
    restart: always
    container_name: db

 wordpress:
    build:
      context: './docker/wordpress/'
    environment:
      WP_PROXY_HOST: http://proxy
      WP_PROXY_PORT: 8080
    ports:
      - "3362:80"
    links:
      - db
    volumes:
      - ./wp-content:/var/www/html/html/pages/wp-content
      - ./wp-config.php:/var/www/html/html/pages/wp-config.php
    networks:
      test4exoplatform_local-network:
        ipv4_address: 199.20.0.5
    container_name: wordpress

  php:
    build: 
      context: './docker/php/'
    ports:
      - "9999:80"
    networks:
      test4exoplatform_local-network:
        ipv4_address: 199.20.0.4
    volumes:
      - ./:/var/www/html/
    container_name: php

  jenkins:
    build:
      context: './docker/jenkins/'
    user: root
    ports:
      - "9091:8080"
    networks:
      test4exoplatform_local-network:
        ipv4_address: 199.20.0.7
    container_name: jenkins
    volumes:
      - /tmp/jenkins:/var/jenkins_home

networks:
  test4exoplatform_local-network:
    external: true

Внутри моего изображения WordPress я могу получить доступ к образу Jenkins (через telnet jenkins 8080).

В jenkins я установила также настройки прокси.

Вот мой код в моем плагине WP для доступа к API Jenkins:

$username = 'username';
$api_token = 'token';
$url = 'http://localhost:9091';
$jobName = 'test';

ch = curl_init();    

curl_setopt($ch, CURLOPT_PROXY, "proxy:8080");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false ); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false ); 
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $api_token); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_URL, $url . '/job/' . $jobName . '/build?token=' . $api_token);
$result = executeCurl($ch);
var_dump($result);

Это выдает мне эту ошибку, и я действительно не знаю, какчтобы продолжить:

The following error was encountered while trying to retrieve the URL: http://localhost:9091/job/test/build?...

    Access Denied.

Токен и имя пользователя верны, потому что когда я вхожу в браузер по ссылке (http://localhost:9091/job/test/build?token=token), она работает и запускает сборку jenkins.

Я пыталсяа также использовать IP-адрес, который я установил для своего образа докера jenkins (199.20.0.7) для ссылки для доступа к API (как 199.20.0.7/job/test/build?token=token), но у меня есть ошибка: The requested URL could not be retrieved

Couldэто сетевая ошибка?

РЕДАКТИРОВАТЬ

ОК Я внес некоторые изменения, которые могут быть полезны, я идуБольше информации о моих ошибках, но я до сих пор не понимаю ... Поэтому я удалил IP-адрес, указанный в файле docker-compose.yml (потому что я думаю, что он блокировал мои запросы).Теперь, когда я пытаюсь запустить сборку jenkins через мой сайт WP, логи php выдают меня:

php          | * Hostname was NOT found in DNS cache
php          | *   Trying 193.56.47.20...
php          | * Connected to proxy (193.56.47.20) port 8080 (#0)
php          | * Server auth using Basic with user 'username'
php          | > POST http://localhost:9091/job/test/build?token=token HTTP/1.1
php          | Host: localhost:9091
php          | 
php          | < HTTP/1.1 403 Forbidden
php          | * Server squid/3.5.20 is not blacklisted
php          | < Server: squid/3.5.20
php          | < X-Squid-Error: ERR_ACCESS_DENIED 0

Я не понимаю, мой прокси-сервер по какой-то причине блокирует мой запрос?

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