Comments (6)
Looks like we've now hit the 50 min maximum timeout for an individual job:
I'm guessing it will be hard to improve things from here. The options as I see them are:
- figure out why Armbian builds are slow on Travis, and make them faster
- break up the Armbian build into several individual jobs
- don't add Armbian builds to Travis CI
To be clear, I believe switching the Armbian OS builds from VirtualBox+Vagrant to Docker still has advantages, and since we don't have CI configured for building these artifacts right now, there's no regression by not getting it working on Travis. I'll look around a bit more, then clean up and prep a PR that switches to Dockerized Armbian builds.
from bitbox-base.
Armbian build has been moved to Docker completely. Integration of nightly builds in CI system is a separate topic.
from bitbox-base.
I tried making the changes to armbian/build.sh
to switch to Docker-based builds for Armbian OS images in 6fbda4c.
The branch seems to build fine locally, and produces an .img
file that boots on a RockPro64 board and which seems functional on cursory examination, however on Travis the build errors:
The symptom seen on Travis builds is:
[...]
# Successfully built b1561d8cbb3b
# Successfully tagged armbian:latest
# [ o.k. ] Running the container
# docker: Error response from daemon: create ./: "./" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.
# See 'docker run --help'.
# [ error ] Docker command failed, check syntax or version support. Error code: [ 125 ]
The part of the build that fails seems to be L79 in config-docker.conf
, where the Armbian script tries to run:
docker run "${DOCKER_FLAGS[@]}" -it armbian docker-guest "$@"
The error from the Travis logs seems to indicate a syntax error in the arguments to docker run
. It's a bit tricky to get more information as this script is checked out by our build.sh script during the Travis build..
I'll try finding out what the full docker run
command is during local builds to start with, and then look for options for figuring out what's different / what's going wrong when Travis runs the build.
from bitbox-base.
In a branch, I've added the entire armbian repo in a commit, to be able to debug the issue with building using Docker that was seen on Travis builds.
I found that config-docker.conf on L79 tries to run a command like:
$ docker run --cap-add=SYS_ADMIN --cap-add=MKNOD --cap-add=SYS_PTRACE --security-opt=apparmor:unconfined --device=/dev/loop0 --device=/dev/loop1 --device=/dev/loop2 --device=/dev/loop3 --device=/dev/loop4 --device=/dev/loop5 --device=/dev/loop6 --device=/dev/loop7 --device=/dev/loop-control --device-cgroup-rule='b 7:* rmw' --device-cgroup-rule='b 259:* rmw' -v /dev:/tmp/dev:ro -v=.:/root/armbian/ -v=armbian-cache:/root/armbian/cache -v=armbian-ccache:/root/.ccache -it armbian docker-guest BOARD=rockpro64 KERNEL_ONLY=no KERNEL_CONFIGURE=no RELEASE=stretch BRANCH=default BUILD_DESKTOP=no WIREGUARD=no LIB_TAG=sunxi-4.20
This fails with the error message seen earlier:
# docker: Error response from daemon: create ./: "./" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.
The failure seems to be due to SRC
having the value .
, whereas the -v
/ --volume
arguments to Docker need to hold the absolute path. If I patch config-docker.conf
to set it to the value of $(pwd)
instead as in 40704ff, this issue no longer is seen.
I have as of yet not followed the logic of where the SRC
variable gets its value, and why this issue is only seen when running on Travis, but this might represent a genuine issue / room for improvement for the armbian project.
from bitbox-base.
As another update, I noticed a further potential issue when running on Travis.
Without the hkjn@3ba9c6f commit, the command inside config-docker.conf
would run docker run -it <...>
. As seen in e.g this build, that led to the command erroring with the input device is not a TTY
. Removing the -t
seems to allow the build to proceed.
The current issue is that the build fails abruptly, seemingly due to the Travis timeout:
[...]
LD net/vmw_vsock/built-in.o
CC [M] net/vmw_vsock/af_vsock.o
CC [M] drivers/net/ipvlan/ipvlan_main.o
The command "travis_wait 40 ./scripts/travis-ci.sh" exited with 137.
I've been progressively bumping the timeout using the travis_wait
wrapper script to find a value that allows Travis to finish the build process.
from bitbox-base.
The work for this issue has been mostly addressed, and we have switched over to using the Dockerized Armbian builds by default when we're running make
at this point.
We'll leave this issue open for now, until we've sent PRs for the upstream fixes to the Armbian project that were mentioned earlier in #39 (comment).
Even after upstreaming those fixes, we likely won't pursue switching Travis over due to the timeout issue, but it does seem good to clear the path for doing so by addressing the other two problems.
from bitbox-base.
Related Issues (18)
- Bitbox latest firmware doesn't work with tokens on MyEtherWallet HOT 1
- tor hidden service HOT 1
- Question: LIB_TAG sunxi-4.20 HOT 6
- Implement Base Supervisor HOT 3
- Regtest setup for c-lightning, bitcoind, electrs and middleware HOT 2
- Armbian build fails when writing image to /loop0p1
- Mender's image won't boot from SD card HOT 8
- Confusing option BASE_LOGINPW HOT 4
- Don't bundle "random" keys in armbian/base/config/ssh/authorized_keys HOT 1
- Mender alternatives HOT 2
- Base keeps trying to reconnect with online peer w/o success HOT 2
- master branch of mender-convert no longer works HOT 1
- Add integration tests to CI HOT 3
- De-dupe configs and systemd units between docs and source code HOT 3
- /bin/bash no such file or directory HOT 13
- Decide on main CI system HOT 8
- Allow compiling Go binaries outside of GOPATH without Docker HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bitbox-base.