Почему codebuild. sh не запускается моя локальная сборка? - PullRequest
1 голос
/ 16 января 2020

Я пытаюсь локально протестировать мою сборку без необходимости постоянно загружать мой код. Поэтому я загрузил codebuild.sh в свой компьютер с Ubuntu и поместил в ~/.local/bin/codebuild_build.

Затем я сделал его исполняемым через:

chmod +x ~/.local/bin/codebuild_build

И с следующий buildspec.yml:

version: 0.2
phases:
  install:
    runtime-versions:
      docker: 18
  pre_build:
   commands:
     - docker login -u $USER -p $TOKEN
  build:
    commands:
     - docker build -f ./dockerfiles/7.0.8/Dockerfile -t myapp/php7.0.8:$(cat VERSION_PHP_708) -t myapp/php7.0.8:latest .
     - docker build -f ./dockerfiles/7.0.8/Dockerfile_develop -t myapp/php7.0.8-dev:$(cat VERSION_PHP_708) -t myapp/php7.0.8-dev:latest .
     - docker build -f ./dockerfiles/7.2/Dockerfile -t myapp/php7.0.8:$(cat VERSION_PHP_72) -t myapp/php7.0.8:latest .
     - docker build -f ./dockerfiles/7.2/Dockerfile_develop -t myapp/php7.0.8-dev:$(cat VERSION_PHP_708) -t myapp/php7.0.8-dev:latest .
  post_build:
    commands:
      - docker push etable/php7.2
      - docker push etable/php7.2-dev
      - docker push etable/php7.0.8
      - docker push etable/php7.0.8-dev

Я пытался выполнить свою команду следующим образом:

codebuild_build -i amazon/aws-codebuild-local -a /tmp/artifacts/docker-php -e .codebuild -c ~/.aws

Но я получаю следующий вывод:

Build Command:

docker run -it -v /var/run/docker.sock:/var/run/docker.sock -e "IMAGE_NAME=amazon/aws-codebuild-local" -e "ARTIFACTS=/tmp/artifacts/docker-php" -e "SOURCE=/home/pcmagas/Kwdikas/docker-php" -v "/home/pcmagas/Kwdikas/docker-php:/LocalBuild/envFile/" -e "ENV_VAR_FILE=.codebuild" -e "AWS_CONFIGURATION=/home/pcmagas/.aws" -e "INITIATOR=pcmagas" amazon/aws-codebuild-local:latest

Removing agent-resources_build_1 ... done
Removing agent-resources_agent_1 ... done
Removing network agent-resources_default
Removing volume agent-resources_source_volume
Removing volume agent-resources_user_volume
Creating network "agent-resources_default" with the default driver
Creating volume "agent-resources_source_volume" with local driver
Creating volume "agent-resources_user_volume" with local driver
Creating agent-resources_agent_1 ... done
Creating agent-resources_build_1 ... done
Attaching to agent-resources_agent_1, agent-resources_build_1
build_1  | 2020/01/16 14:43:58 Unable to initialize (*errors.errorString: AgentAuth was not specified)
agent-resources_build_1 exited with code 10
Stopping agent-resources_agent_1 ... done
Aborting on container exit...

My ~ /.aws имеет следующие файлы:

$ ls -l /home/pcmagas/.aws
σύνολο 8
-rw------- 1 pcmagas pcmagas  32 Αυγ   8 17:29 config
-rw------- 1 pcmagas pcmagas 116 Αυγ   8 17:34 credentials

. В то время как конфигурация имеет следующее:

[default]
region = eu-central-1

И ~/.aws/credentials имеет следующий формат:

[default]
aws_access_key_id = ^KEY_ID_CENSORED^
aws_secret_access_key = ^ACCESS_KEY_CENSORED^

Также в .codebuild содержатся необходимые параметры docker -login:

USER=^CENCORED^
TOKEN=^CENCORED^

Следовательно, я могу получить параметры, необходимые для docker -login.

У вас есть идеи, почему сборка не запускается локально?

Ответы [ 2 ]

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

Измените имя переменной среды в файле .codebuild, например:

DOCKER_USER=^CENCORED^
DOCKER_TOKEN=^CENCORED^

Кажется, что агент CodeBuild интерпретирует саму переменную среды TOKEN.

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

На этапе предварительной сборки есть команда, которая регистрирует вас как docker

docker login -u $USER -p $TOKEN

Убедитесь, что вы включили docker учетные данные для входа в локальный файл файловой среды.

...