Установка Linux Homebrew в AWS CodeBuild контейнер - PullRequest
2 голосов
/ 20 января 2020

У меня есть AWS проект CodeBuild, и мне нужно вызвать SAM CLI внутри моего контейнера CodeBuild. На этапе build я добавил команду для установки Linux Homebrew, чтобы я мог установить SAM CLI из AWS Homebrew tap, согласно документации.

Однако после запуска этой команды , Я получаю сообщение об ошибке ниже.

[Container] 2020/01/20 05:29:26 Running command bash -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
-e:196: warning: Insecure world writable dir /go/bin in PATH, mode 040777
Don't run this as root!

[Container] 2020/01/20 05:29:28 Command did not exit successfully bash -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)" exit status 1
[Container] 2020/01/20 05:29:28 Phase complete: BUILD State: FAILED
[Container] 2020/01/20 05:29:28 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: bash -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)". Reason: exit status 1

Я использую стандартную среду сборки Ubuntu "3.0", которую AWS предоставляет.

buildspe c .yml

version: 0.2
phases:
  install:
    runtime-versions:
      docker: 18
      nodejs: 10
      python: 3.8
  build:
    commands:
      - echo Installing SAM CLI
      - sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
      - brew tap aws/tap
      - brew install aws-sam-cli
      - sam version

Вопрос : Как мне успешно установить Linux Homebrew внутри AWS проекта CodeBuild?

1 Ответ

1 голос
/ 22 января 2020

Первый и рекомендуемый вариант - создать собственный код сборки с помощью CodeBuild, например, использовать [1], который включает в себя aws sam cli.

Второй и более сложный вариант - установить SAM CLI самостоятельно. Поскольку brew нельзя использовать как root, а контейнер сборки CodeBuild работает как root, это будет сложно. Ниже приведена сборка c, которую я протестировал и могу подтвердить, установит aws sam cli:

Buildspe c:

version: 0.2

phases:
    install:
        commands:
            - curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh > /tmp/install.sh
            - cat /tmp/install.sh
            - chmod +x /tmp/install.sh
            - useradd -m brewuser
            - echo "brewuser:brewuser" | chpasswd 
            - adduser brewuser sudo
            - /bin/su -c /tmp/install.sh - brewuser
            - /bin/su -c '/home/brewuser/.linuxbrew/bin/brew tap aws/tap' - brewuser
            - /bin/su -c '/home/brewuser/.linuxbrew/bin/brew install aws-sam-cli' - brewuser

build:
    commands:
        - PATH=/home/brewuser/.linuxbrew/bin:$PATH
        - sam --version

Примечание. Согласно моему тесты, Python 3.8 не включает в себя sam cli.

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