2017-07-25 16 views
0

現在、組み込みプラットフォーム用のSDイメージを作成するプロセスを自動化しています。私はGitLab CIを使って、特にDockerのランナーを使ってこれを行います。私のシステムではローカルで動作しますが、GitLab CIで動作するときには、奇妙なエラーがあります。ここでgitlab-ci-docker-runner内でDockerランナーchrootが動作しない

はプロセスです:

  • 私はbuild.shを実行ドッカーコンテナを、開始します。
  • build.shは、取り付けられたイメージ上でchrootを実行し、provision.shを実行します。

詳細

私が最初にこのようにドッキングウィンドウを実行します。

docker run --rm -it --privileged=true -v `pwd`:"/wd" -w="/wd" ubuntu:xenial-20170710 /bin/bash build.sh 

ファイルbuild.shは次のようになります。あなたはそれができる、画像に興味がある場合には

apt-get update 
apt-get install qemu-user-static pixz -y 
pixz -d ubuntu-16.04.2-minimal-odroid-xu4-20170516.img.xz ubuntu- 16.04.2-minimal-odroid-xu4-20170516.img 
md5sum -c ubuntu-16.04.2-minimal-odroid-xu4-20170516.img.md5 
limits=$(sfdisk -l --bytes ubuntu-16.04.2-minimal-odroid-xu4-20170516.img | tail -n 1) 
loopdev=$(losetup -f --show -o $((512 * $(awk '{print $2}' <<< "$limits"))) --sizelimit $(awk '{print $5}' <<< "$limits") ubuntu-16.04.2-minimal-odroid-xu4-20170516.img) 

mkdir /mnt/rna 
mount $loopdev /mnt/rna 
mount -t proc proc /mnt/rna/proc/ 
mount -t sysfs sys /mnt/rna/sys/ 
mount -o bind /dev /mnt/rna/dev/ 
echo 'nameserver 8.8.4.4' >> /mnt/rna/etc/resolv.conf 

cp $(which qemu-arm-static) /mnt/rna/usr/bin 
cp provision.sh /mnt/rna/root 
chroot /mnt/rna qemu-arm-static /bin/bash -l /root/provision.sh 

mv ubuntu-16.04.2-minimal-odroid-xu4-20170516.img rna.img 
pixz rna.img rna.img.xz 

losetup -d $loopdev 

ここにある:https://odroid.in/ubuntu_16.04lts/ubuntu-16.04.2-minimal-odroid-xu4-20170516.img.xz

provision.shは以下のん:

pwd 
env 
ls -la 

apt-get update 
apt-get install tmux -y 

問題

ローカルで、すべてが正常に動作し、apt-getのインストールは、画像内で実行されています。

image: ubuntu:xenial-20170710 

build: 
    tags: 
    - privileged 
    artifacts: 
    expire_in: "1h" 
    paths: 
     - rna.img.xz 
    script: 
    - ./build.sh 

をしかし、私はこのGitLab CIを実行すると、私は次のメッセージを取得します(スタートmd5sumチェックbuild.sh内部です:

ubuntu-16.04.2-minimal-odroid-xu4-20170516.img: OK 
ubuntu-16.04.2-minimal-odroid-xu4-20170516.img.xz: OK 
/root/.profile: line 9: /usr/bin/mesg: No such file or directory 
/
/root/provision.sh: line 2: /usr/bin/env: No such file or directory 
/root/provision.sh: line 3: /bin/ls: No such file or directory 
/root/provision.sh: line 5: /usr/bin/apt-get: No such file or directory 
/root/provision.sh: line 6: /usr/bin/apt-get: No such file or directory 

docker-次のように

.gitlab-ci.ymlに見えますランナーはprivilegedモードで動作し、chrootmountが働いていることを確認します。

答えて

0

私は今働いている。これはgitlab-runner内のいくつかのキャッシング問題でした。

関連する問題