[Fuego] release test issues
Guilherme Camargo
guicc at profusion.mobi
Thu Feb 22 01:59:53 UTC 2018
On Wed, Feb 21, 2018 at 10:19 PM, <Tim.Bird at sony.com> wrote:
>
>
> > -----Original Message-----
> > From: Guilherme Camargo
> >
> > Hello, Tim, thanks for trying it out again and thanks for your time
> > in debugging this issue and providing logs.
> >
> > This problem is happening because we're not using fuego-host-scripts
> > in the derived fuego-release-test, what ends up resulting in the
> > jenkins' user not being properly mapped to the host's user.
> >
> > That's my fault, I forgot that this would be required in the
> > derivate image as well.
> >
> > I temporarily added that logic to build_and_run.sh (as a fixup commit)
> >
> > so that you're able to test it out, please see the patch below:
> >
> > diff --git a/build_and_run.sh b/build_and_run.sh
> > index e448ddf..0134759 100755
> > --- a/build_and_run.sh
> > +++ b/build_and_run.sh
> > @@ -50,6 +50,25 @@ fi
> >
> > if [ "$1" = "up" ]; then
> > if [ -v clean_start ]; then
> > + # FIXME: We should provide a simpler way of mapping jenkins uid
> with
> > + # hosts uid, that does not require the user (that's extending
> > + # fuego-base) to have this logic in his docker build.
> > + #
> > + # Jenkins' uid/gid should probably be given as a docker-run
> variable
> > + # (as http_proxy/https_proxy, and set properly through
> fuego-base
> > + # entrypoint.)
> > + #
> > + if [ "${UID}" == "0" ]; then
> > + uid=$(id -u "${SUDO_USER}")
> > + gid=$(id -g "${SUDO_USER}")
> > + else
> > + uid="${UID}"
> > + gid=$(id -g "${USER}")
> > + fi
> > +
> > + sed -i "s/HOST_UID/${uid}/" ./fuego-ro/conf/fuego.conf
> > + sed -i "s/HOST_GID/${gid}/" ./fuego-ro/conf/fuego.conf
> > +
> > docker build -t "${fuego_rt_image}" .
> > docker rm -f "${fuego_rt_container}"
> > docker run -dit --name ${fuego_rt_container} \
> > diff --git a/fuego-ro/conf/fuego.conf b/fuego-ro/conf/fuego.conf
> > index 0c95eae..96cdcc9 100644
> > --- a/fuego-ro/conf/fuego.conf
> > +++ b/fuego-ro/conf/fuego.conf
> > @@ -1,3 +1,3 @@
> > -docker_jenkins_uid=1000
> > -docker_jenkins_gid=987
> > +docker_jenkins_uid=HOST_UID
> > +docker_jenkins_gid=HOST_GID
> >
> > As I mentioned in my FIXME message, its undesirable to require a derivate
> > image to contain specific build steps (as the one that's replacing the
> id into
> > fuego.conf),
> > so we might need to come up with a better approach to make this work.
> >
> > The patch has already been pushed to
> > <https://bitbucket.org/profusionmobi/fuego-release-test>
> >
> > https://bitbucket.org/profusionmobi/fuego-release-test (master).
> > Can you please re-sync and test again?
>
> The jenkins uid and gid in the container now match those of my host user,
> but I'm getting the same start failure as before.
>
> Even when I explicitly change permissions in the path:
> /var/cache/jenkins/war/META-INF/MANIFEST.MF, I still
> get the same (Permission denied) message shown in the log (as below).
>
> I'm not sure what to try next.
> -- Tim
>
>
Thanks for helping, Tim.
I'm taking a closer look to understand why this is happening.
>
> >
> > Thank you
> >
> > --
> > Guilherme
> >
> >
> > On Wed, Feb 21, 2018 at 11:48 AM, <Tim.Bird at sony.com
> > <mailto:Tim.Bird at sony.com> > wrote:
> >
> >
> > > -----Original Message-----
> > > From: Guilherme Camargo
> > > Tim, please sync the repo again (
> > > <https://bitbucket.org/profusionmobi/fuego-release-test>
> >
> > https://bitbucket.org/profusionmobi/fuego-release-test
> > > <https://bitbucket.org/profusionmobi/fuego-release-test
> > <https://bitbucket.org/profusionmobi/fuego-release-test> > ).
> > > I've force-pushed some changes.
> > >
> > > After that, you can just run `./build_and_run -c up`.
> >
> > My container doesn't start Jenkins. I'm not sure if this is
> > a cascade error from some initial problem, but here is
> > some information about my situation.
> >
> > I removed my repository, and did a new 'git clone' of the
> > fuego-release-test repository. It doesn't appear to me to
> > be updated recently:
> >
> > $ git branch -v
> > * master 9d82c80 Initial commit
> > $ git log
> > commit 9d82c80d66a4de24ab97b38a16c8536849fea5bc
> > Author: Guilherme Campos Camargo <guicc at profusion.mobi
> > <mailto:guicc at profusion.mobi> >
> > Date: Tue Feb 6 02:13:20 2018 -0200
> >
> > Initial commit
> >
> > This repository has been created to store the resources needed
> for
> > the
> > generation of a Docker image, based on fuego-base, that has all
> > the
> > tools needed for the automation of the tests that are required
> for
> > validating a new Fuego release with Fuego itself.
> > ...
> >
> > I see that there are other branches with more recent commits (the
> > 'ppa', and the 'fuego-base' branch. Should I be using one of
> these?
> >
> > Here's the error I saw while trying build_and_run.sh:
> >
> > -----
> > Downloading/unpacking pexpect
> > Downloading/unpacking ptyprocess>=0.5 (from pexpect)
> > Downloading ptyprocess-0.5.2-py2.py3-none-any.whl
> > Installing collected packages: pexpect, ptyprocess
> > Successfully installed pexpect ptyprocess
> > Cleaning up...
> > ---> fd97e25fac02
> > Removing intermediate container 5a3a3638cb21
> > Step 4/7 : RUN echo "jenkins ALL = (root) NOPASSWD:
> > /usr/bin/docker, /bin/sh" >> /etc/sudoers
> > ---> Running in da0a1d824354
> > ---> fb6468918ab5
> > Removing intermediate container da0a1d824354
> > Step 5/7 : COPY fuego-ro /fuego-ro
> > ---> bbe089e90e5f
> > Removing intermediate container 6a4b20b92a4e
> > Step 6/7 : COPY tests /fuego-core/engine/tests
> > ---> 57c7374dd097
> > Removing intermediate container aa6b4c80255c
> > Step 7/7 : COPY fuego-rt-entrypoint.sh /
> > ---> 9ef063ab4a5b
> > Removing intermediate container 32a90a4f3abb
> > Successfully built 9ef063ab4a5b
> > Successfully tagged fuego-rt:latest
> > Error response from daemon: No such container: fuego-rt-container
> > 6f513d49f117300672e1ba8782f0411448ffdf8e5258dd689797895cd79d
> > 8068
> > Waiting for Jenkins on http://localhost:8090/fuego/...
> > Creating job fuego-test.default.Functional.fuegotest
> > fuego-rt-container
> > [FAIL] Starting Jenkins Continuous Integration Server: jenkins
> failed!
> > [ ok ] Starting network benchmark server.
> > root at 6f513d49f117:/#
> >
> > -----
> >
> > And here is some investigation:
> > -----
> > root at 6f513d49f117:/# tail -n 20 /var/log/jenkins/jenkins.log
> > INFO: Winstone shutdown successfully
> > Feb 21, 2018 2:13:22 PM winstone.Logger logInternal
> > SEVERE: Container startup failed
> > java.io.FileNotFoundException: /var/cache/jenkins/war/META-
> > INF/MANIFEST.MF (Permission denied)
> > at java.io.FileOutputStream.open(Native Method)
> > at java.io.FileOutputStream.<init>(FileOutputStream.java:
> 221)
> > at java.io.FileOutputStream.<init>(FileOutputStream.java:
> 171)
> > at
> > winstone.HostConfiguration.getWebRoot(HostConfiguration.java:280)
> > at winstone.HostConfiguration.<
> init>(HostConfiguration.java:83)
> > at winstone.HostGroup.initHost(HostGroup.java:66)
> > at winstone.HostGroup.<init>(HostGroup.java:45)
> > at winstone.Launcher.<init>(Launcher.java:143)
> > at winstone.Launcher.main(Launcher.java:352)
> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > Method)
> > at
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
> > ava:57)
> > at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> > sorImpl.java:43)
> > at java.lang.reflect.Method.invoke(Method.java:606)
> > at Main._main(Main.java:264)
> > at Main.main(Main.java:112)
> >
> > root at 6f513d49f117:/# su - jenkins
> > jenkins at 6f513d49f117:~$ cat /var/cache/jenkins/war/META-
> > INF/MANIFEST.MF
> > cat: /var/cache/jenkins/war/META-INF/MANIFEST.MF: Permission
> > denied
> > jenkins at 6f513d49f117:~$ ls -lad /var /var/cache /var/cache/jenkins
> > /var/cache/jenkins/war /var/cache/jenkins/war/META-INF
> > /var/cache/jenkins/war/META-INF/MANIFEST.MF
> > ls: cannot access /var/cache/jenkins/war: Permission denied
> > ls: cannot access /var/cache/jenkins/war/META-INF: Permission
> > denied
> > ls: cannot access /var/cache/jenkins/war/META-INF/MANIFEST.MF:
> > Permission denied
> > drwxr-xr-x 32 root root 4096 Feb 21 07:12 /var
> > drwxr-xr-x 17 root root 4096 Feb 21 07:12 /var/cache
> > drwxr-x--- 4 jenkins jenkins 4096 Feb 21 07:12 /var/cache/jenkins
> > jenkins at 6f513d49f117:~$ exit
> > logout
> > root at 6f513d49f117:/# ls -lad /var /var/cache /var/cache/jenkins
> > /var/cache/jenkins/war /var/cache/jenkins/war/META-INF
> > /var/cache/jenkins/war/META-INF/MANIFEST.MF
> > drwxr-xr-x 32 root root 4096 Feb 21 07:12 /var
> > drwxr-xr-x 17 root root 4096 Feb 21 07:12 /var/cache
> > drwxr-x--- 4 jenkins jenkins 4096 Feb 21 07:12
> /var/cache/jenkins
> > drwxr-xr-x 18 jenkins jenkins 4096 Feb 21 07:12
> > /var/cache/jenkins/war
> > drwxr-xr-x 4 jenkins jenkins 4096 Feb 21 07:12
> > /var/cache/jenkins/war/META-INF
> > -rw-r--r-- 1 jenkins jenkins 129535 Feb 15 18:56
> > /var/cache/jenkins/war/META-INF/MANIFEST.MF
> > root at 6f513d49f117:/# su - jenkins
> > jenkins at 6f513d49f117:~$ id
> > uid=1000(jenkins) gid=987(jenkins) groups=987(jenkins)
> > jenkins at 6f513d49f117:~$
> > -----
> > For reasons that escape me, it looks like these permissions are not
> > allowing jenkins in the container to access the 'war' directory:
> > drwxr-x--- 4 jenkins jenkins 4096 Feb 21 07:12
> /var/cache/jenkins
> >
> > -----
> > root at 6f513d49f117:/var/cache/jenkins# chmod o+rx .
> > root at 6f513d49f117:/var/cache/jenkins# ls -la
> > total 12
> > drwxr-xr-x 4 jenkins jenkins 4096 Feb 21 07:12 .
> > drwxr-xr-x 17 root root 4096 Feb 21 07:12 ..
> > drwxr-xr-x 18 jenkins jenkins 4096 Feb 21 07:12 war
> > root at 6f513d49f117:/var/cache/jenkins# su - jenkins
> > jenkins at 6f513d49f117:~$ ls -lad /var /var/cache /var/cache/jenkins
> > /var/cache/jenkins/war /var/cache/jenkins/war/META-INF
> > /var/cache/jenkins/war/META-INF/MANIFEST.MF
> > drwxr-xr-x 32 root root 4096 Feb 21 07:12 /var
> > drwxr-xr-x 17 root root 4096 Feb 21 07:12 /var/cache
> > drwxr-xr-x 4 jenkins jenkins 4096 Feb 21 07:12
> /var/cache/jenkins
> > drwxr-xr-x 18 jenkins jenkins 4096 Feb 21 07:12
> > /var/cache/jenkins/war
> > drwxr-xr-x 4 jenkins jenkins 4096 Feb 21 07:12
> > /var/cache/jenkins/war/META-INF
> > -rw-r--r-- 1 jenkins jenkins 129535 Feb 15 18:56
> > /var/cache/jenkins/war/META-INF/MANIFEST.MF
> > -----
> > However, maybe it's not that simple:
> > -----
> >
> > jenkins at 6f513d49f117:~$ exit
> > logout
> > root at 6f513d49f117:/var/cache/jenkins# exit
> > exit
> > 1000072457 at tlinux:~/work/fuego/release-test-2018-02-19/fuego-
> > release-test$ ./build_and_run.sh up
> > [FAIL] Starting Jenkins Continuous Integration Server: jenkins
> failed!
> > [ ok ] Starting network benchmark server.
> > root at 6f513d49f117:/# tail -n 20 /var/log/jenkins/jenkins.log
> > INFO: Winstone shutdown successfully
> > Feb 21, 2018 2:38:41 PM winstone.Logger logInternal
> > SEVERE: Container startup failed
> > java.io.FileNotFoundException: /var/cache/jenkins/war/META-
> > INF/MANIFEST.MF (Permission denied)
> > at java.io.FileOutputStream.open(Native Method)
> > at java.io.FileOutputStream.<init>(FileOutputStream.java:
> 221)
> > at java.io.FileOutputStream.<init>(FileOutputStream.java:
> 171)
> > at
> > winstone.HostConfiguration.getWebRoot(HostConfiguration.java:280)
> > at winstone.HostConfiguration.<
> init>(HostConfiguration.java:83)
> > at winstone.HostGroup.initHost(HostGroup.java:66)
> > at winstone.HostGroup.<init>(HostGroup.java:45)
> > at winstone.Launcher.<init>(Launcher.java:143)
> > at winstone.Launcher.main(Launcher.java:352)
> > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > Method)
> > at
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
> > ava:57)
> > at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
> > sorImpl.java:43)
> > at java.lang.reflect.Method.invoke(Method.java:606)
> > at Main._main(Main.java:264)
> > at Main.main(Main.java:112)
> >
> > root at 6f513d49f117:/# su - jenkins
> > jenkins at 6f513d49f117:~$ ls -lad /var /var/cache /var/cache/jenkins
> > /var/cache/jenkins/war /var/cache/jenkins/war/META-INF
> > /var/cache/jenkins/war/META-INF/MANIFEST.MF
> > ls: cannot access /var/cache/jenkins/war: Permission denied
> > ls: cannot access /var/cache/jenkins/war/META-INF: Permission
> > denied
> > ls: cannot access /var/cache/jenkins/war/META-INF/MANIFEST.MF:
> > Permission denied
> > drwxr-xr-x 32 root root 4096 Feb 21 07:12 /var
> > drwxr-xr-x 17 root root 4096 Feb 21 07:12 /var/cache
> > drwxr-xr-x 4 jenkins jenkins 4096 Feb 21 07:12 /var/cache/jenkins
> >
> > I'm running this on Ubuntu 14.04, with docker 17.05.0-ce
> >
> > -----
> > OK - in summary:
> >
> > - I think I might be running the wrong branch of fuego-release-test
> > - I have weird permission problems in my docker container, for the
> > fuego user and group
> > that are preventing jenkins from starting
> > - the jenkins user id and group id don't match my local user's
> user id
> > and group id
> >
> > Any help would be appreciated.
> > -- Tim
> >
> >
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linuxfoundation.org/pipermail/fuego/attachments/20180221/b6416500/attachment-0001.html>
More information about the Fuego
mailing list