mirror of
https://github.com/rancher/os.git
synced 2025-09-01 14:48:55 +00:00
Use drone-0.4 for CI and migrate build to dapper
This commit is contained in:
@@ -1,3 +1,6 @@
|
|||||||
image: rancher/dind:v1.9.1-rancher1
|
build:
|
||||||
script:
|
image: rancher/dapper:1.9.1
|
||||||
- ./scripts/ci
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
commands:
|
||||||
|
- dapper -k -O make DEV_BUILD=1 test
|
||||||
|
@@ -1,4 +0,0 @@
|
|||||||
FROM ros-build-base
|
|
||||||
|
|
||||||
COPY . ./
|
|
||||||
COPY .dockerignore.docker .dockerignore
|
|
@@ -1,24 +1,26 @@
|
|||||||
FROM debian:jessie
|
FROM debian:jessie
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get -y dist-upgrade && \
|
|
||||||
apt-get -y install locales sudo vim less curl wget git rsync build-essential syslinux isolinux xorriso \
|
apt-get -y install locales sudo vim less curl wget git rsync build-essential syslinux isolinux xorriso \
|
||||||
libblkid-dev libmount-dev libselinux1-dev cpio genisoimage qemu-kvm python-pip ca-certificates
|
libblkid-dev libmount-dev libselinux1-dev cpio genisoimage qemu-kvm python-pip ca-certificates && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
RUN ln -s /usr/bin/genisoimage /usr/bin/mkisofs
|
RUN ln -s /usr/bin/genisoimage /usr/bin/mkisofs
|
||||||
RUN locale-gen en_US.UTF-8
|
RUN locale-gen en_US.UTF-8
|
||||||
ENV LANG en_US.UTF-8
|
ENV LANG en_US.UTF-8
|
||||||
ENV LC_ALL en_US.UTF-8
|
|
||||||
ENV TERM xterm
|
|
||||||
RUN curl -sL https://get.docker.com/builds/Linux/x86_64/docker-1.9.1 > /usr/bin/docker
|
|
||||||
RUN chmod +x /usr/bin/docker
|
|
||||||
|
|
||||||
RUN pip install tox
|
|
||||||
|
|
||||||
RUN curl -sSL https://storage.googleapis.com/golang/go1.5.2.linux-amd64.tar.gz | tar -xz -C /usr/local
|
|
||||||
ENV PATH $PATH:/usr/local/go/bin
|
ENV PATH $PATH:/usr/local/go/bin
|
||||||
|
|
||||||
RUN mkdir -p /go/src /go/bin && chmod -R 777 /go
|
RUN mkdir -p /go/src /go/bin && chmod -R 777 /go
|
||||||
ENV GOPATH /go
|
ENV GOPATH /go
|
||||||
ENV PATH /go/bin:$PATH
|
ENV PATH /go/bin:$PATH
|
||||||
ENV GO15VENDOREXPERIMENT 1
|
ENV GO15VENDOREXPERIMENT 1
|
||||||
|
|
||||||
WORKDIR /go/src/github.com/rancher/os
|
RUN pip install tox
|
||||||
|
RUN curl -sSL https://storage.googleapis.com/golang/go1.5.2.linux-amd64.tar.gz | tar -xz -C /usr/local
|
||||||
|
RUN curl -sL https://get.docker.com/builds/Linux/x86_64/docker-1.9.1 > /usr/bin/docker
|
||||||
|
RUN chmod +x /usr/bin/docker
|
||||||
|
|
||||||
|
ENV DAPPER_SOURCE /go/src/github.com/rancher/os
|
||||||
|
ENV DAPPER_OUTPUT ./bin ./dist
|
||||||
|
ENV DAPPER_RUN_ARGS --privileged
|
||||||
|
ENV SHELL /bin/bash
|
||||||
|
WORKDIR ${DAPPER_SOURCE}
|
||||||
|
|
||||||
|
COPY .dockerignore.docker .dockerignore
|
61
Makefile
61
Makefile
@@ -3,45 +3,62 @@ FORCE_PULL := 0
|
|||||||
DEV_BUILD := 0
|
DEV_BUILD := 0
|
||||||
|
|
||||||
|
|
||||||
compile: bin/rancheros
|
installer: minimal
|
||||||
|
docker build -t $(IMAGE_NAME):$(VERSION) .
|
||||||
|
|
||||||
|
bin/rancheros:
|
||||||
|
mkdir -p $(dir $@)
|
||||||
|
go build -tags netgo -installsuffix netgo -ldflags "-X github.com/rancher/os/config.VERSION=$(VERSION) -linkmode external -extldflags -static" -o $@
|
||||||
|
strip --strip-all $@
|
||||||
|
|
||||||
|
|
||||||
all: clean ros-build-base build-all
|
pwd := $(shell pwd)
|
||||||
|
include scripts/build-common
|
||||||
|
|
||||||
|
|
||||||
ros-build-base:
|
assets/docker:
|
||||||
docker build -t ros-build-base -f Dockerfile.build-base .
|
mkdir -p $(dir $@)
|
||||||
|
curl -L "$(DOCKER_BINARY_URL)" > $@
|
||||||
|
chmod +x $@
|
||||||
|
|
||||||
|
|
||||||
ros-build-image:
|
$(DIST)/artifacts/vmlinuz: $(BUILD)/kernel/
|
||||||
docker build -t ros-build -f Dockerfile.build .
|
mkdir -p $(dir $@)
|
||||||
|
mv $(BUILD)/kernel/boot/vmlinuz* $@
|
||||||
|
|
||||||
|
|
||||||
bin/rancheros: ros-build-image
|
$(BUILD)/kernel/:
|
||||||
./scripts/docker-run.sh make -f Makefile.docker $@
|
mkdir -p $@
|
||||||
|
([ -e "$(COMPILED_KERNEL_URL)" ] && cat "$(COMPILED_KERNEL_URL)" || curl -L "$(COMPILED_KERNEL_URL)") | tar -xzf - -C $@
|
||||||
mkdir -p bin
|
|
||||||
docker cp ros-build:/go/src/github.com/rancher/os/$@ $(dir $@)
|
|
||||||
|
|
||||||
|
|
||||||
build-all: ros-build-image
|
$(BUILD)/images.tar: bin/rancheros
|
||||||
./scripts/docker-run.sh make -f Makefile.docker DEV_BUILD=$(DEV_BUILD) FORCE_PULL=$(FORCE_PULL) $@
|
FORCE_PULL=$(FORCE_PULL) ./scripts/mk-images-tar.sh
|
||||||
|
|
||||||
mkdir -p bin dist
|
|
||||||
docker cp ros-build:/go/src/github.com/rancher/os/bin/rancheros bin/
|
|
||||||
docker cp ros-build:/go/src/github.com/rancher/os/dist/artifacts dist/
|
|
||||||
|
|
||||||
|
|
||||||
installer: ros-build-image
|
$(DIST)/artifacts/initrd: bin/rancheros assets/docker $(BUILD)/kernel/ $(BUILD)/images.tar
|
||||||
./scripts/docker-run.sh --rm make -f Makefile.docker DEV_BUILD=$(DEV_BUILD) FORCE_PULL=$(FORCE_PULL) $@
|
mkdir -p $(dir $@)
|
||||||
|
DFS_IMAGE=$(DFS_IMAGE) DEV_BUILD=$(DEV_BUILD) ./scripts/mk-initrd.sh
|
||||||
|
|
||||||
|
|
||||||
|
$(DIST)/artifacts/rancheros.iso: minimal
|
||||||
|
./scripts/mk-rancheros-iso.sh
|
||||||
|
|
||||||
|
|
||||||
|
$(DIST)/artifacts/iso-checksums.txt: $(DIST)/artifacts/rancheros.iso
|
||||||
|
./scripts/mk-iso-checksums-txt.sh
|
||||||
|
|
||||||
|
|
||||||
version:
|
version:
|
||||||
@echo $(VERSION)
|
@echo $(VERSION)
|
||||||
|
|
||||||
|
all: minimal installer iso
|
||||||
|
|
||||||
clean:
|
minimal: $(DIST)/artifacts/initrd $(DIST)/artifacts/vmlinuz
|
||||||
rm -rf bin build dist gopath .dockerfile
|
|
||||||
|
|
||||||
|
iso: $(DIST)/artifacts/rancheros.iso $(DIST)/artifacts/iso-checksums.txt
|
||||||
|
|
||||||
.PHONY: all compile clean build-all ros-build-image ros-build-base version bin/rancheros installer
|
test: minimal
|
||||||
|
cd tests/integration && tox
|
||||||
|
|
||||||
|
.PHONY: build-all minimal iso installer version bin/rancheros integration-tests
|
||||||
|
@@ -1,64 +0,0 @@
|
|||||||
include build.conf
|
|
||||||
FORCE_PULL := 0
|
|
||||||
DEV_BUILD := 0
|
|
||||||
|
|
||||||
|
|
||||||
bin/rancheros:
|
|
||||||
mkdir -p $(dir $@)
|
|
||||||
go build -tags netgo -installsuffix netgo -ldflags "-X github.com/rancher/os/config.VERSION=$(VERSION) -linkmode external -extldflags -static" -o $@
|
|
||||||
strip --strip-all $@
|
|
||||||
|
|
||||||
|
|
||||||
pwd := $(shell pwd)
|
|
||||||
include scripts/build-common
|
|
||||||
|
|
||||||
|
|
||||||
assets/docker:
|
|
||||||
mkdir -p $(dir $@)
|
|
||||||
curl -L "$(DOCKER_BINARY_URL)" > $@
|
|
||||||
chmod +x $@
|
|
||||||
|
|
||||||
|
|
||||||
$(DIST)/artifacts/vmlinuz: $(BUILD)/kernel/
|
|
||||||
mkdir -p $(dir $@)
|
|
||||||
mv $(BUILD)/kernel/boot/vmlinuz* $@
|
|
||||||
|
|
||||||
|
|
||||||
$(BUILD)/kernel/:
|
|
||||||
mkdir -p $@
|
|
||||||
([ -e "$(COMPILED_KERNEL_URL)" ] && cat "$(COMPILED_KERNEL_URL)" || curl -L "$(COMPILED_KERNEL_URL)") | tar -xzf - -C $@
|
|
||||||
|
|
||||||
|
|
||||||
$(BUILD)/images.tar: bin/rancheros
|
|
||||||
FORCE_PULL=$(FORCE_PULL) ./scripts/mk-images-tar.sh
|
|
||||||
|
|
||||||
|
|
||||||
$(DIST)/artifacts/initrd: bin/rancheros assets/docker $(BUILD)/kernel/ $(BUILD)/images.tar
|
|
||||||
mkdir -p $(dir $@)
|
|
||||||
DFS_IMAGE=$(DFS_IMAGE) DEV_BUILD=$(DEV_BUILD) ./scripts/mk-initrd.sh
|
|
||||||
|
|
||||||
|
|
||||||
$(DIST)/artifacts/rancheros.iso: minimal
|
|
||||||
./scripts/mk-rancheros-iso.sh
|
|
||||||
|
|
||||||
|
|
||||||
$(DIST)/artifacts/iso-checksums.txt: $(DIST)/artifacts/rancheros.iso
|
|
||||||
./scripts/mk-iso-checksums-txt.sh
|
|
||||||
|
|
||||||
|
|
||||||
version:
|
|
||||||
@echo $(VERSION)
|
|
||||||
|
|
||||||
installer: minimal
|
|
||||||
docker build -t $(IMAGE_NAME):$(VERSION) .
|
|
||||||
|
|
||||||
build-all: minimal installer iso
|
|
||||||
|
|
||||||
minimal: $(DIST)/artifacts/initrd $(DIST)/artifacts/vmlinuz
|
|
||||||
|
|
||||||
iso: $(DIST)/artifacts/rancheros.iso $(DIST)/artifacts/iso-checksums.txt
|
|
||||||
|
|
||||||
integration-tests:
|
|
||||||
cd tests/integration && tox
|
|
||||||
|
|
||||||
.PHONY: build-all minimal iso installer version bin/rancheros integration-tests
|
|
4
build.sh
4
build.sh
@@ -8,9 +8,9 @@ if [ "$1" != "--dev" ]; then
|
|||||||
echo
|
echo
|
||||||
echo For \"developer\" builds, run ./build.sh --dev
|
echo For \"developer\" builds, run ./build.sh --dev
|
||||||
echo
|
echo
|
||||||
make all
|
dapper -k make all
|
||||||
else
|
else
|
||||||
make DEV_BUILD=1 all
|
dapper -k make DEV_BUILD=1 all
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
@@ -3,10 +3,4 @@ set -ex
|
|||||||
|
|
||||||
cd $(dirname $0)/..
|
cd $(dirname $0)/..
|
||||||
|
|
||||||
if [ -x "$(which wrapdocker)" ] && ! docker info >/dev/null 2>&1; then
|
dapper -k -O make DEV_BUILD=1 test
|
||||||
wrapdocker
|
|
||||||
fi
|
|
||||||
|
|
||||||
docker build -t ros-build-base -f Dockerfile.build-base .
|
|
||||||
docker build -t ros-build -f Dockerfile.build .
|
|
||||||
./scripts/docker-run.sh --name ros-ci make -f Makefile.docker DEV_BUILD=1 minimal integration-tests
|
|
||||||
|
@@ -1,39 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
DOCKER_ARGS=
|
|
||||||
if [ -n "$BIND_DIR" ]; then
|
|
||||||
if [ "$BIND_DIR" = "." ]; then
|
|
||||||
BIND_DIR=$(pwd)
|
|
||||||
fi
|
|
||||||
DOCKER_ARGS="-t -v $BIND_DIR:/go/src/github.com/rancher/os"
|
|
||||||
fi
|
|
||||||
if [ -c /dev/kvm ] || [ "${KVM}" == "1" ]; then
|
|
||||||
DOCKER_ARGS="${DOCKER_ARGS} --device=/dev/kvm:/dev/kvm"
|
|
||||||
fi
|
|
||||||
|
|
||||||
NAME=ros-build
|
|
||||||
while [ "$#" -gt 0 ]; do
|
|
||||||
case $1 in
|
|
||||||
--name)
|
|
||||||
shift 1
|
|
||||||
NAME="$1"
|
|
||||||
;;
|
|
||||||
--rm)
|
|
||||||
NAME=$(mktemp ${NAME}-XXXXXX)
|
|
||||||
rm $NAME
|
|
||||||
DOCKER_ARGS="${DOCKER_ARGS} --rm"
|
|
||||||
;;
|
|
||||||
-t)
|
|
||||||
DOCKER_ARGS="${DOCKER_ARGS} -t"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift 1
|
|
||||||
done
|
|
||||||
|
|
||||||
DOCKER_ARGS="${DOCKER_ARGS} --name=${NAME}"
|
|
||||||
docker rm -fv ${NAME} >/dev/null 2>&1 || true
|
|
||||||
exec docker run -i -v /var/run/docker.sock:/var/run/docker.sock $DOCKER_ARGS ros-build "$@"
|
|
@@ -1,6 +0,0 @@
|
|||||||
IMAGE_NAME=rancher/os
|
|
||||||
VERSION=v0.4.0-test
|
|
||||||
|
|
||||||
DOCKER_BINARY_URL=https://github.com/rancher/docker/releases/download/v1.8.2-rc1-ros/docker-1.8.2-rc1
|
|
||||||
COMPILED_KERNEL_URL=https://github.com/imikushin/os-kernel/releases/download/4.2/linux-4.2.0-rancher-x86.tar.gz
|
|
||||||
DFS_IMAGE=rancher/docker:1.8.1
|
|
@@ -1,10 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
cd $(dirname $0)/../../../..
|
|
||||||
|
|
||||||
cp ./tests/integration/assets/test_02/build.conf ./
|
|
||||||
|
|
||||||
make -f Makefile.docker DEV_BUILD=1 minimal
|
|
||||||
|
|
||||||
exec ./scripts/run --qemu --no-rebuild --no-rm-usr --fresh
|
|
@@ -1,30 +0,0 @@
|
|||||||
from __future__ import print_function
|
|
||||||
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
import pytest
|
|
||||||
import rostest.util as u
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="module")
|
|
||||||
def build_and_run(request):
|
|
||||||
print('\nBuilding and running RancherOS with custom kernel')
|
|
||||||
p = subprocess.Popen(['./scripts/docker-run.sh', '--rm',
|
|
||||||
'./tests/integration/assets/test_02/test-custom-kernel.sh'],
|
|
||||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)
|
|
||||||
|
|
||||||
def fin():
|
|
||||||
print('\nTerminating docker-run test-custom-kernel')
|
|
||||||
p.terminate()
|
|
||||||
p.wait()
|
|
||||||
|
|
||||||
request.addfinalizer(fin)
|
|
||||||
return p
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.timeout(30)
|
|
||||||
def test_system_boot(build_and_run):
|
|
||||||
version = u.rancheros_version('./tests/integration/assets/test_02/build.conf')
|
|
||||||
print('parsed version: ' + version)
|
|
||||||
|
|
||||||
u.flush_out(build_and_run.stdout, 'RancherOS {v} started'.format(v=version))
|
|
Reference in New Issue
Block a user