Сборка не удалась на Circleci, несмотря на успех на местном - PullRequest
1 голос
/ 11 апреля 2019

Всякий раз, когда я запускаю рабочий процесс в Circleci, это завершается неудачно, давая мне код ошибки 500 HTTP, несмотря на то, что он был проверен и успешен, когда я запускаю его локально.

Когда я запускаю тест локально, я извлекаю изображение из своего хранилища и использую его для выполнения HTTP-запроса, но, поскольку я использую Circleci, я извлекаю изображение с помощью curl, помещаю это изображение в папку, и затем я получаю его для того, чтобы выполнить мой HTTP-запрос, однако, это всегда терпит неудачу при попытке построить на Circleci.

Мне интересно, делаю ли я что-то неправильно, неправильно сохраняя изображение с помощью скручивания и указывая на что-то, что в конечном итоге находится не в нужном месте или может быть чем-то другим. Несмотря на то, что запрос об ошибке HTTP 500 звучит так, как будто у меня возникают проблемы с моим API, я могу подтвердить, что при локальном запуске я не получаю код ошибки HTTP 500, поскольку он возвращает: Время: 6,85 секунды, Память: 28,00 МБ ОК (5 тестов, 8 утверждений).

Я опубликую ниже свой config.yaml и фиктивную функцию тестирования.

class TestDummys extends TestCase
{
        private static $hostId;
        private static $access_token = '';
        private static $user;
        private static $charityId;

    public function testDummy()
    {
        self::$hostId = HostGroup::first()->id;
        self::$access_token = auth()->login(User::first());

        $path = storage_path('testimage.png');
        $name = 'testimage.png';
        $file = new UploadedFile($path, $name, 'image/png', null, null, true);

        $response = $this->withHeaders([
            'Authorization' => 'Bearer ' . self::$access_token,
          ])->json('POST', '/host/' . self::$hostId .'/charity/external', [
              'name' => 'Charity',
              'contact' => 'foo@gmail.com',
              'registration_number' => '12345',
              'account_number' => '12345',
              'sort_code' => '12345',
              'country_code' => 'GB',
              'iban' => '124535',
              'image' => $file
          ]);        

              $response->assertStatus(200);

        }
}

Config.yaml

version: 2
jobs:
  build:
    docker:
      # Specify the version you desire here
      - image: circleci/php:7.3.3
      - image: circleci/python:3.7.3

    steps:
      # Install pip
      - run: sudo apt install python-pip
      # Install aws-cli
      - run:
          name: Install aws-cli
          command: sudo pip install awscli

      # Install sam-cli
      - run:
          name: Install sam-cli
          command: sudo pip install aws-sam-cli

      - checkout

      - run: sudo apt update # PHP CircleCI 2.0 Configuration File# PHP CircleCI 2.0 Configuration File sudo apt install zlib1g-dev libsqlite3-dev
      - run: sudo apt-get update
      - run: sudo apt-get install -y libjpeg62-turbo-dev libpng-dev libfreetype6-dev
      - run: sudo docker-php-ext-install zip pdo mysqli pdo_mysql mbstring tokenizer ctype json bcmath gd
      - run: sudo docker-php-ext-enable pdo_mysql

      # Download and cache dependencies
      - restore_cache:
          keys:
            # "composer.lock" can be used if it is committed to the repo
            - v1-dependencies-{{ checksum "composer.json" }}
            # fallback to using the latest cache if no exact match is found
            - v1-dependencies-

      - run: composer install -n --prefer-dist

      - save_cache:
          key: composer-v1-{{ checksum "composer.json" }}
          paths:
            - ./vendor

      # prepare the database
      - run: touch /tmp/testing.sqlite
      - run: php artisan migrate --database=sqlite --force

      - run: curl https://d3qyaps1yzzqpv.cloudfront.net/images/eb_1554715247_2158207.png -o /tmp/testimage.png

       # run tests with phpunit or codecept
      - run: ./vendor/bin/phpunit

      # delete test database
      - run: sudo rm /tmp/testing.sqlite

      # set environment variables to .env

      - run: ....
      - run: ....
      - run: ....
      - run: ....
      - run: .... 
      - run: ....
      - run: ....
      - run: ....

      # commit to package
      - run: composer install --optimize-autoloader --no-dev
      - run: sudo php artisan cache:clear
      - run: sudo php artisan view:clear
      - run: sudo php artisan config:clear
      - run: sudo php artisan route:clear
      - run: sam package --output-template-file .stack.yaml --s3-bucket ticketpass-api
      - run: sam deploy --template-file .stack.yaml --capabilities CAPABILITY_IAM --stack-name ticketpass-api

1 Ответ

0 голосов
/ 07 мая 2019

Изначально я обнаружил, что из-за ошибки что-то связано с сервером Redis (который я использую), по какой-то причине сервер Redis не работал по умолчанию, поэтому мне пришлось запустить его (обновляя файл config.yaml). После этого я получил другой тип ошибки, связанной с областью моего S3 ведра. Что касается почтового запроса, изображение собиралось сохранить в корзине S3, это жаловалось на его регион. Мне удалось это исправить, создав новую корзину S3 того же региона, откуда поступал запрос. Это исправило мою проблему.

...