2016-04-08 17 views
2

'da çalıştı. Aylardır büyük bir baş ağrısıyla yaşadım. Sürekli bir entegrasyon boru hattı ile çalışıyoruz ve adımlardan biri npm testinin tetiklediği, jenkin'in bir docker konteynerinde çalışan slave içinde gerçekleşecek otomatik bir testtir, Jenkins'in kendisi başka bir konteynırdadır. Çıktı böyle kırıldı göstererek edilir kurar sırasında : o Googling tarafındanJenkins tarafından tetiklenen npm test çıkışında kırık kodlama docker

[email protected] node_modules/node-schedule 
��������� [email protected] 

Bu unix sisteminde an issue caused by not setting the locale olduğunu gördük. Dockerfile'da Ortam değişkenleri eklemeyi denedim, ancak yine de hiç şansım olmadı. Ayrıca yerel-gen çalışan denedim ve komut bulunamadı hatası alıyorum:

RUN locale-gen ${LANGUAGE} 

ben yüklemeden deneyin buldum hiçbir aday paket alır.

RUN apt-get install locales 

İşte kölenin Dockerfile.

# NODEJS SLAVE 
# Pull base image. 
FROM node:0.10.42 

ENV LANG_WHICH en 
ENV LANG_WHERE US 
ENV ENCODING UTF-8 
ENV LANGUAGE ${LANG_WHICH}_${LANG_WHERE}.${ENCODING} 
ENV LANG ${LANGUAGE} 
RUN dpkg-reconfigure --frontend noninteractive locales \ 
    && apt-get update -qqy \ 
    && apt-get -qqy install \ 
    language-pack-en \ 

RUN apt-get install -y nano openssh-server openjdk-7-jdk \ 
    && apt-get -y upgrade 

EXPOSE 8080 

<... ssh stuff...> 

COPY package.json /src/package.json 
RUN npm install -g npm 

# Standard SSH port 
EXPOSE 22 

CMD ["/usr/sbin/sshd", "-D"] 

Ve bu Jenkins master kabın Dockerfile

# JENKINS MASTER 
# Set the base image to Ubuntu 
FROM jenkins:latest 

ENV LANG_WHICH en 
ENV LANG_WHERE US 
ENV ENCODING UTF-8 
ENV LANGUAGE ${LANG_WHICH}_${LANG_WHERE}.${ENCODING} 
ENV LANG ${LANGUAGE} 
RUN localedef en_US.UTF-8 -i en_US -fUTF-8 
RUN dpkg-reconfigure --frontend noninteractive locales \ 
    && apt-get update -qqy \ 
    && apt-get -qqy install \ 
    language-pack-en \ 

USER jenkins 
ENV LANG en_US.UTF-8 
ENV LANGUAGE en_US:en 
ENV LC_ALL en_US.UTF-8 

COPY plugins.txt /usr/share/jenkins/plugins.txt 
COPY executors.groovy /usr/share/jenkins/ref/init.groovy.d/executors.groovy 

RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt 

herkes bu sorunun çözümü hakkında bazı bilgiler vermektedir miyim?

GÜNCELLEME: Xenial:

Ben ubuntu için temel görüntü değiştirerek yerel-gen kullanmayı başardı. Ama bu da işe yaramadı. Görünüşe göre jenkins, non-interactive shell aracılığıyla slave'lere bağlanır ve bu da gerekli yapılandırmaların yüklenmemesine neden olur (/etc/profile ve /etc/default/locale). Ben de ekleyerek denedim:

USER jenkins 
RUN echo "export=LC_ALL=en_US.UTF-8" >> /etc/.bashrc 

Ama bu da çalıştı olmadı. HERE, şu anda kullanıyorum tam Dockerfile.

+0

Try bulunabilir, doğru YOL değişken kümesi olmayabilir. –

+0

denedi ... Ayrıca başka bir temel görüntü ile Dockerfile inşa ... ubunto: xenial ... ve anlaşma yok –

cevap

1

Benzer bir sorunu bir kez yaşadığımda, birlikte bulabildiğim tüm çözümleri kullanarak sona erdim.

Aşağıdakileri kullanmak benim için işe yaradı, bunların hepsine ihtiyaç yoktur, ancak çalıştıktan sonra, artık denemek istemedim.

RUN echo "en_US UTF-8" >> /etc/locale.gen 
RUN dpkg-reconfigure locales 
RUN locale-gen en_US.UTF-8 
RUN localedef -c -i en_US -f UTF-8 en_US.UTF-8 
ENV LANG en_US.UTF-8 
ENV LANGUAGE en_US:en 
ENV LC_ALL en_US.UTF-8 

tam Dockerfile

mutlak yolu ile yerel-gen çalıştırmak için https://github.com/evolution7/nodejs-bower-grunt

+0

Henüz bir anlaşma @Arjen, mocha 'çıkışı hala dağınık 'consumer tüketici için bir oturum başlatmalı (pathId: 1): 286ms –