From 6c704ac3846e98d71472da7faf9e39620853efaf Mon Sep 17 00:00:00 2001 From: Morlay Date: Sat, 24 Jul 2021 15:56:16 +0800 Subject: [PATCH] Setup integration testing Signed-off-by: Morlay --- .github/workflows/testing-buider.yaml | 60 +++++++++++++++++++ testings/builder/Dockerfile | 6 ++ .../builder/create_multiple_nodes_builder.sh | 19 ++++++ .../builder/create_single_node_builder.sh | 12 ++++ .../docker-container/multiple-nodes.sh | 8 +++ .../builder/docker-container/single-node.sh | 8 +++ testings/builder/kubernetes/multiple-nodes.sh | 9 +++ testings/builder/kubernetes/single-node.sh | 9 +++ 8 files changed, 131 insertions(+) create mode 100644 .github/workflows/testing-buider.yaml create mode 100644 testings/builder/Dockerfile create mode 100644 testings/builder/create_multiple_nodes_builder.sh create mode 100644 testings/builder/create_single_node_builder.sh create mode 100644 testings/builder/docker-container/multiple-nodes.sh create mode 100644 testings/builder/docker-container/single-node.sh create mode 100644 testings/builder/kubernetes/multiple-nodes.sh create mode 100644 testings/builder/kubernetes/single-node.sh diff --git a/.github/workflows/testing-buider.yaml b/.github/workflows/testing-buider.yaml new file mode 100644 index 00000000..e0545ccc --- /dev/null +++ b/.github/workflows/testing-buider.yaml @@ -0,0 +1,60 @@ +name: testing-builder + +on: push + +jobs: + builder: + runs-on: ubuntu-latest + + strategy: + matrix: + driver: + - docker-container + - kubernetes + mode: + - single-node + - multiple-nodes + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup golang + uses: actions/setup-go@v2 + with: + go-version: '1.16.x' + + - name: Build buildx + run: go build -o ~/.docker/cli-plugins/docker-buildx ./cmd/buildx + + - name: Setup env + run: |- + case ${{ matrix.driver }} in + kubernetes) + curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" sh -s -; + ;; + docker-container) + docker run --rm --privileged tonistiigi/binfmt:latest --install all; + ;; + esac + + - name: Setup builder + run: sh ./testings/builder/${{ matrix.driver }}/${{ matrix.mode }}.sh + env: + KUBECONFIG: /etc/rancher/k3s/k3s.yaml + + - name: Build single platform to local registry + uses: docker/build-push-action@v2 + with: + context: ./testings/builder + push: false + platforms: linux/amd64 + tags: localhost/name/app:latest-amd64 + + - name: Build multiple platforms to local registry + uses: docker/build-push-action@v2 + with: + context: ./testings/builder + push: false + platforms: linux/amd64,linux/arm64 + tags: localhost/name/app:latest diff --git a/testings/builder/Dockerfile b/testings/builder/Dockerfile new file mode 100644 index 00000000..b0e5b851 --- /dev/null +++ b/testings/builder/Dockerfile @@ -0,0 +1,6 @@ +FROM busybox + +ARG BUILDPLATFORM +ARG TARGETPLATFORM + +RUN echo "build ${TARGETPLATFORM} on ${BUILDPLATFORM} host" \ No newline at end of file diff --git a/testings/builder/create_multiple_nodes_builder.sh b/testings/builder/create_multiple_nodes_builder.sh new file mode 100644 index 00000000..ec7a421a --- /dev/null +++ b/testings/builder/create_multiple_nodes_builder.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +BUILDER_NAME=${BUILDER_NAME:-builder} +BUILDER_DRIVER=${BUILDER_DRIVER:-docker-container} + +docker buildx create \ + --name="${BUILDER_NAME}" \ + --node="${BUILDER_NAME}-amd64" \ + --driver="${BUILDER_DRIVER}" \ + --platform=linux/amd64 + +docker buildx create --append \ + --name="${BUILDER_NAME}" \ + --node="${BUILDER_NAME}-arm64" \ + --driver="${BUILDER_DRIVER}" \ + --platform=linux/arm64 + +docker buildx inspect "${BUILDER_NAME}" --bootstrap +docker buildx use "${BUILDER_NAME}" \ No newline at end of file diff --git a/testings/builder/create_single_node_builder.sh b/testings/builder/create_single_node_builder.sh new file mode 100644 index 00000000..02d45eab --- /dev/null +++ b/testings/builder/create_single_node_builder.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +BUILDER_NAME=${BUILDER_NAME:-builder} +BUILDER_DRIVER=${BUILDER_DRIVER:-docker-container} + +docker buildx create \ + --name="${BUILDER_NAME}" \ + --driver="${BUILDER_DRIVER}" \ + --platform=linux/amd64,linux/arm64 + +docker buildx inspect "${BUILDER_NAME}" --bootstrap +docker buildx use "${BUILDER_NAME}" \ No newline at end of file diff --git a/testings/builder/docker-container/multiple-nodes.sh b/testings/builder/docker-container/multiple-nodes.sh new file mode 100644 index 00000000..f71ebf35 --- /dev/null +++ b/testings/builder/docker-container/multiple-nodes.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -eux; + +export BUILDER_DRIVER=docker-container + +sh ./testings/builder/create_multiple_nodes_builder.sh + diff --git a/testings/builder/docker-container/single-node.sh b/testings/builder/docker-container/single-node.sh new file mode 100644 index 00000000..4b79a43c --- /dev/null +++ b/testings/builder/docker-container/single-node.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -eux; + +export BUILDER_DRIVER=docker-container + +sh ./testings/builder/create_single_node_builder.sh + diff --git a/testings/builder/kubernetes/multiple-nodes.sh b/testings/builder/kubernetes/multiple-nodes.sh new file mode 100644 index 00000000..107a411b --- /dev/null +++ b/testings/builder/kubernetes/multiple-nodes.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -eux; + +export KUBECONFIG=${KUBECONFIG:-~/.kube/config} +export BUILDER_DRIVER=kubernetes + +sh ./testings/builder/create_multiple_nodes_builder.sh + diff --git a/testings/builder/kubernetes/single-node.sh b/testings/builder/kubernetes/single-node.sh new file mode 100644 index 00000000..9ec5142b --- /dev/null +++ b/testings/builder/kubernetes/single-node.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -eux; + +export BUILDER_DRIVER=kubernetes +export KUBECONFIG=${KUBECONFIG:-~/.kube/config} + +sh ./testings/builder/create_single_node_builder.sh +