chore: use buildx to build docker images in e2e (#1018)
* chore: build images concurrency Signed-off-by: Jim Ma <majinjing3@gmail.com>
This commit is contained in:
parent
cb2f9298ce
commit
5027f9c998
|
|
@ -45,6 +45,12 @@ jobs:
|
||||||
mkdir -p /tmp/artifact
|
mkdir -p /tmp/artifact
|
||||||
go mod vendor
|
go mod vendor
|
||||||
|
|
||||||
|
- name: Setup buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
id: buildx
|
||||||
|
with:
|
||||||
|
install: true
|
||||||
|
|
||||||
- name: Setup Kind
|
- name: Setup Kind
|
||||||
uses: engineerd/setup-kind@v0.5.0
|
uses: engineerd/setup-kind@v0.5.0
|
||||||
with:
|
with:
|
||||||
|
|
@ -53,11 +59,9 @@ jobs:
|
||||||
|
|
||||||
- name: Build images
|
- name: Build images
|
||||||
run: |
|
run: |
|
||||||
|
hack/gen-buildx.sh
|
||||||
make docker-build docker-build-testing-tools
|
make docker-build docker-build-testing-tools
|
||||||
docker pull dragonflyoss/${{ matrix.module }}:${{ env.DRAGONFLY_STABLE_IMAGE_TAG }}
|
docker pull dragonflyoss/${{ matrix.module }}:${{ env.DRAGONFLY_STABLE_IMAGE_TAG }}
|
||||||
|
|
||||||
- name: Prepare kind environment
|
|
||||||
run: |
|
|
||||||
make kind-load
|
make kind-load
|
||||||
kind load docker-image dragonflyoss/${{ matrix.module }}:${{ env.DRAGONFLY_STABLE_IMAGE_TAG }}
|
kind load docker-image dragonflyoss/${{ matrix.module }}:${{ env.DRAGONFLY_STABLE_IMAGE_TAG }}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,12 @@ jobs:
|
||||||
go mod download github.com/go-task/slim-sprig
|
go mod download github.com/go-task/slim-sprig
|
||||||
go install github.com/onsi/ginkgo/v2/ginkgo@v2.1.0
|
go install github.com/onsi/ginkgo/v2/ginkgo@v2.1.0
|
||||||
mkdir -p /tmp/artifact
|
mkdir -p /tmp/artifact
|
||||||
go mod vendor
|
|
||||||
|
- name: Setup buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
id: buildx
|
||||||
|
with:
|
||||||
|
install: true
|
||||||
|
|
||||||
- name: Setup Kind
|
- name: Setup Kind
|
||||||
uses: engineerd/setup-kind@v0.5.0
|
uses: engineerd/setup-kind@v0.5.0
|
||||||
|
|
@ -47,10 +52,10 @@ jobs:
|
||||||
config: ${{ env.KIND_CONFIG_PATH }}
|
config: ${{ env.KIND_CONFIG_PATH }}
|
||||||
|
|
||||||
- name: Build images
|
- name: Build images
|
||||||
run: make docker-build docker-build-testing-tools
|
run: |
|
||||||
|
hack/gen-buildx.sh
|
||||||
- name: Prepare kind environment
|
make docker-build docker-build-testing-tools
|
||||||
run: make kind-load
|
make kind-load
|
||||||
|
|
||||||
- name: Setup dragonfly
|
- name: Setup dragonfly
|
||||||
run: |
|
run: |
|
||||||
|
|
|
||||||
7
Makefile
7
Makefile
|
|
@ -127,6 +127,12 @@ build-manager: build-dirs
|
||||||
./hack/build.sh manager
|
./hack/build.sh manager
|
||||||
.PHONY: build-manager
|
.PHONY: build-manager
|
||||||
|
|
||||||
|
# Build manager console
|
||||||
|
build-manager-console: build-dirs
|
||||||
|
@echo "Begin to build manager."
|
||||||
|
./hack/build.sh manager-console
|
||||||
|
.PHONY: build-manager-console
|
||||||
|
|
||||||
# Install cdn
|
# Install cdn
|
||||||
install-cdn:
|
install-cdn:
|
||||||
@echo "Begin to install cdn."
|
@echo "Begin to install cdn."
|
||||||
|
|
@ -304,6 +310,7 @@ help:
|
||||||
@echo "make build-dfget-linux build linux dfget"
|
@echo "make build-dfget-linux build linux dfget"
|
||||||
@echo "make build-scheduler build scheduler"
|
@echo "make build-scheduler build scheduler"
|
||||||
@echo "make build-manager build manager"
|
@echo "make build-manager build manager"
|
||||||
|
@echo "make build-manager-console build manager console"
|
||||||
@echo "make install-cdn install CDN"
|
@echo "make install-cdn install CDN"
|
||||||
@echo "make install-dfget install dfget"
|
@echo "make install-dfget install dfget"
|
||||||
@echo "make install-scheduler install scheduler"
|
@echo "make install-scheduler install scheduler"
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,15 @@
|
||||||
### Build Base Image
|
### Build Base Image
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
BASE_IMAGE=dragonflyoss/base:bpftrace-v0.13.0-go-v1.16.6
|
docker build -t dragonflyoss/base:bpftrace-v0.13.0-go-v1.17.4 -f Dockerfile .
|
||||||
|
```
|
||||||
|
|
||||||
|
### Run Debug Container
|
||||||
|
|
||||||
|
```shell
|
||||||
|
BASE_IMAGE=dragonflyoss/base:bpftrace-v0.13.0-go-v1.17.4
|
||||||
|
|
||||||
|
# run debug container
|
||||||
docker run -ti -v /usr/src:/usr/src:ro \
|
docker run -ti -v /usr/src:/usr/src:ro \
|
||||||
-v /lib/modules/:/lib/modules:ro \
|
-v /lib/modules/:/lib/modules:ro \
|
||||||
-v /sys/kernel/debug/:/sys/kernel/debug:rw \
|
-v /sys/kernel/debug/:/sys/kernel/debug:rw \
|
||||||
|
|
@ -22,7 +29,7 @@ export GOTAGS="debug"
|
||||||
# gcflags for dlv
|
# gcflags for dlv
|
||||||
export GOGCFLAGS="all=-N -l"
|
export GOGCFLAGS="all=-N -l"
|
||||||
# base image
|
# base image
|
||||||
export BASE_IMAGE=dragonflyoss/base:bpftrace-v0.13.0-go-v1.16.6
|
export BASE_IMAGE=dragonflyoss/base:bpftrace-v0.13.0-go-v1.17.4
|
||||||
|
|
||||||
make docker-build
|
make docker-build
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,8 @@ retry:
|
||||||
ptc.Debugf("try get piece task from peer %s, piece num: %d, limit: %d\"", peer.PeerId, request.StartNum, request.Limit)
|
ptc.Debugf("try get piece task from peer %s, piece num: %d, limit: %d\"", peer.PeerId, request.StartNum, request.Limit)
|
||||||
p, err := poller.getPieceTasksByPeer(span, curPeerPacket, peer, request)
|
p, err := poller.getPieceTasksByPeer(span, curPeerPacket, peer, request)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
ptc.Infof("got piece task from peer %s ok, pieces length: %d, totalPiece: %d", peer.PeerId, len(p.PieceInfos), p.TotalPiece)
|
ptc.Infof("got piece task from peer %s ok, pieces length: %d, totalPiece: %d, content length: %d, piece md5 sign: %s",
|
||||||
|
peer.PeerId, len(p.PieceInfos), p.TotalPiece, p.ContentLength, p.PieceMd5Sign)
|
||||||
span.SetAttributes(config.AttributeGetPieceCount.Int(len(p.PieceInfos)))
|
span.SetAttributes(config.AttributeGetPieceCount.Int(len(p.PieceInfos)))
|
||||||
return p, nil
|
return p, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -174,7 +174,7 @@ func (t *localTaskStore) UpdateTask(ctx context.Context, req *UpdateTaskRequest)
|
||||||
t.TotalPieces = req.TotalPieces
|
t.TotalPieces = req.TotalPieces
|
||||||
t.Debugf("update total pieces: %d", t.TotalPieces)
|
t.Debugf("update total pieces: %d", t.TotalPieces)
|
||||||
}
|
}
|
||||||
if len(t.PieceMd5Sign) == 0 {
|
if len(t.PieceMd5Sign) == 0 && len(req.PieceMd5Sign) > 0 {
|
||||||
t.PieceMd5Sign = req.PieceMd5Sign
|
t.PieceMd5Sign = req.PieceMd5Sign
|
||||||
t.Debugf("update piece md5 sign: %s", t.PieceMd5Sign)
|
t.Debugf("update piece md5 sign: %s", t.PieceMd5Sign)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -103,6 +103,14 @@ build-manager-docker() {
|
||||||
build-docker ${MANAGER_BINARY_NAME} manager
|
build-docker ${MANAGER_BINARY_NAME} manager
|
||||||
}
|
}
|
||||||
|
|
||||||
|
build-manager-console() {
|
||||||
|
set -x
|
||||||
|
consoleDir=$(echo $curDir | sed 's#hack#manager/console#')
|
||||||
|
docker run --workdir=/build \
|
||||||
|
--rm -v ${consoleDir}:/build node:12-alpine \
|
||||||
|
sh -c "npm install --loglevel warn --progress false && npm run build"
|
||||||
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
create-dirs
|
create-dirs
|
||||||
if [[ "1" == "${USE_DOCKER}" ]]; then
|
if [[ "1" == "${USE_DOCKER}" ]]; then
|
||||||
|
|
@ -120,6 +128,9 @@ main() {
|
||||||
manager)
|
manager)
|
||||||
build-manager-docker
|
build-manager-docker
|
||||||
;;
|
;;
|
||||||
|
manager-console)
|
||||||
|
build-manager-console
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
build-dfget-docker
|
build-dfget-docker
|
||||||
build-cdn-docker
|
build-cdn-docker
|
||||||
|
|
@ -142,6 +153,9 @@ main() {
|
||||||
manager)
|
manager)
|
||||||
build-manager-local
|
build-manager-local
|
||||||
;;
|
;;
|
||||||
|
manager-console)
|
||||||
|
build-manager-console
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
build-dfget-local
|
build-dfget-local
|
||||||
build-cdn-local
|
build-cdn-local
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,6 @@ git-submodule() {
|
||||||
}
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
git-submodule
|
|
||||||
|
|
||||||
case "${1-}" in
|
case "${1-}" in
|
||||||
cdn)
|
cdn)
|
||||||
docker-build cdn
|
docker-build cdn
|
||||||
|
|
@ -54,6 +52,7 @@ main() {
|
||||||
docker-build scheduler
|
docker-build scheduler
|
||||||
;;
|
;;
|
||||||
manager)
|
manager)
|
||||||
|
git-submodule
|
||||||
docker-build manager
|
docker-build manager
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
components="cdn scheduler manager"
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
for c in ${components}; do
|
||||||
|
file=build/images/"${c}"/Dockerfile
|
||||||
|
sed -i '1i# syntax=docker/dockerfile:1.3' "${file}"
|
||||||
|
sed -i "s#RUN make build-$c && make install-$c#RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/root/go/ export GOPATH=/root/go \&\& make build-$c \&\& make install-$c#" "${file}"
|
||||||
|
done
|
||||||
|
|
||||||
|
# dfdaemon is subcommand, need to update alone
|
||||||
|
sed -i '1i# syntax=docker/dockerfile:1.3' build/images/dfdaemon/Dockerfile
|
||||||
|
sed -i "s#RUN make build-dfget && make install-dfget#RUN --mount=type=cache,target=/root/.cache/go-build --mount=type=cache,target=/root/go/ export GOPATH=/root/go \&\& make build-dfget \&\& make install-dfget#" build/images/dfdaemon/Dockerfile
|
||||||
|
|
||||||
|
# buildx need "--load" to export images to docker
|
||||||
|
sed -i 's/docker build/docker build --load/' hack/docker-build.sh
|
||||||
|
sed -i 's/docker build/docker build --load/' test/tools/no-content-length/build.sh
|
||||||
|
|
||||||
|
# TODO build console in https://github.com/dragonflyoss/console, and build image with github action cache
|
||||||
|
# remove npm build, use "make build-manager-console" separated
|
||||||
|
# sed -i '12,18d' build/images/manager/Dockerfile
|
||||||
|
# sed -i 's#COPY --from=console-builder /build/dist /opt/dragonfly/manager/console/dist#COPY ./manager/console/dist /opt/dragonfly/manager/console/dist#' build/images/manager/Dockerfile
|
||||||
|
|
@ -13,6 +13,8 @@ scheduler:
|
||||||
- name: artifact
|
- name: artifact
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /tmp/artifact
|
path: /tmp/artifact
|
||||||
|
config:
|
||||||
|
verbose: true
|
||||||
|
|
||||||
cdn:
|
cdn:
|
||||||
image: d7yio/cdn
|
image: d7yio/cdn
|
||||||
|
|
@ -33,6 +35,8 @@ cdn:
|
||||||
- name: artifact
|
- name: artifact
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /tmp/artifact
|
path: /tmp/artifact
|
||||||
|
config:
|
||||||
|
verbose: true
|
||||||
|
|
||||||
dfdaemon:
|
dfdaemon:
|
||||||
image: d7yio/dfdaemon
|
image: d7yio/dfdaemon
|
||||||
|
|
@ -51,6 +55,7 @@ dfdaemon:
|
||||||
config:
|
config:
|
||||||
verbose: true
|
verbose: true
|
||||||
pprofPort: 9999
|
pprofPort: 9999
|
||||||
|
metrics: 127.0.0.1:8888
|
||||||
scheduler:
|
scheduler:
|
||||||
disableAutoBackSource: true
|
disableAutoBackSource: true
|
||||||
proxy:
|
proxy:
|
||||||
|
|
@ -84,3 +89,5 @@ manager:
|
||||||
- name: artifact
|
- name: artifact
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /tmp/artifact
|
path: /tmp/artifact
|
||||||
|
config:
|
||||||
|
verbose: true
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue