Estoy ejecutando un comando de docker login de sesión de Docker como parte del trabajo de compilación de Bamboo. El texto del comando se obtiene mediante una llamada aws ecr get-login y se ejecuta en un subshell.
Este comando falla con Error saving credentials: error storing credentials - err: exit status 1, out: write permissions error cuando se ejecutó como parte de la compilación de Bamboo, pero exactamente el mismo comando se ejecutó en la Terminal en la Mac que es el agente de compilación , tiene éxito.
Usando Terminal:
aws ecr get-login tiene éxito y devuelve el texto del comando de inicio de docker logindocker login -u ... -p ... -e none ... tiene éxito e inicia sesión~/.docker/config.jsonUsando bambú:
aws ecr get-login tiene éxito y devuelve el texto del comando de inicio de docker logindocker login -u ... -p ... -e none ... falla con el error anteriorchmod 777 ~/.docker/config.json no hace ninguna diferencia Tanto la compilación de Bamboo como la sesión de Terminal se llevan a cabo bajo el mismo usuario- builduser . whoami es el mismo para ambos. stat ~/.docker/config.json es el mismo para ambos, se puede escribir para ambos.
¿Puedes pensar en otras formas de descubrir las diferencias entre el contexto en el que Bamboo ejecuta la compilación y yo en la terminal? El error anterior, textualmente, relacionado con el inicio de docker login no se encuentra en línea.
Tuve que eliminar mi archivo config.json existente. No sobrescribiría ni modificaría el que tenía.
Encontré esta pregunta al intentar usar ECR para ejecutar un contenedor Docker dentro de una canalización de Jenkins en una instancia de AWS EC2 con un perfil de instancia de IAM. Encontré mucha información sobre cómo crear, enviar y extraer instancias de ECR, pero no ejecutarlas.
El objetivo es un contenedor Docker con las versiones específicas de Ruby y Ansible instaladas, con todas las diversas dependencias, como los archivos Gem.
Encontré que el siguiente Jenkinsfile funcionó:
pipeline { agent any environment { DOCKER_CONFIG = "${WORKSPACE}/docker.config" } stages { stage('Build') { steps { sh("rm -rf ${DOCKER_CONFIG}") sh("eval \$(aws ecr get-login --no-include-email | sed 's|https://||')") withDockerContainer(args: '-v ${WORKSPACE}:/scripts -v ${HOME}/.aws:/root/.aws', image: 'image_name:latest') { sh("ruby script.rb") } } } } }Notas:
Puede eliminar el archivo docker-credential-osxkeychain :
$ sudo rm /usr/local/bin/docker-credential-osxkeychain