Включить экспериментальные функции на изображениях рабочих процессов github - PullRequest
0 голосов
/ 11 февраля 2020

Мы пытаемся включить экспериментальные функции на последнем образе ubuntu в рабочих процессах github, поскольку хотели бы использовать squash для уменьшения размера изображения. Однако это невозможно, поскольку мы получаем следующую ошибку:

/ home / runner / work / _temp / 59d363d1-0231-4d54-bffe-1e3205bf6bf3. sh: строка 3: / etc / docker / daemon. json: Отказано в доступе

для следующего рабочего процесса:

- name: Build, tag, and push TOING image to Amazon ECR
  id: build-image
  env:
    ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
    ECR_REPOSITORY: TOING/TOING/TOING_REPO
    IMAGE_TAG: TOING_TEST
    DOCKER_CLI_EXPERIMENTAL: enabled
  run: |
    #build and push images
    sudo rm -rf /etc/docker/daemon.json
    sudo echo '{"experimental": true}' >> /etc/docker/daemon.json
    sudo systemctl restart docker
    docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG -f core/TOING/Dockerfile .
    docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
    echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"

Мы убедились, что файл демона. json правильно обновлен, а также использовал sudo для наших команд, как показано.

Мы также открыли проблему на github , но пока не получили ответа. Я был бы признателен за любую помощь.

PS : Мы попробовали оба "experimental": true и "experimental": "enabled".

1 Ответ

1 голос
/ 28 февраля 2020

Мы убедились, что файл демона. json правильно обновлен

Похоже, он не должным образом обновлен на основе вашего сообщения об ошибке:

/ home / runner / work / _temp / 59d363d1-0231-4d54-bffe-1e3205bf6bf3. sh: строка 3: /etc/docker/daemon.json: в доступе отказано

Что здесь происходит? Ну, команда sudo будет запускать данную команду как root. Но вы делаете перенаправление оболочки, которая обрабатывается самой оболочкой, а не sudo. Другими словами, вы перенаправляете вывод sudo .

Если вы хотите записать в файл как root, тогда вам нужно будет на самом деле запустите команду, которая записывает файл, а затем запустите , что , используя sudo . Например:

echo '{"experimental": true}' | sudo tee -a /etc/docker/daemon.json
...