CI: Add a functional test for interacting with a existing k8s cluster
This adds Ansible playbooks to install kubernetes using minikube and then assert that airshipctl is able to communicate with the cluster. Change-Id: Ice5cf3de8d9192d508c79c68caf8f5a61896da9c Signed-off-by: Pete Birley <pete@port.direct>
This commit is contained in:
parent
e3f407ef99
commit
5cf0b2327c
@ -18,3 +18,5 @@ RUN make ${MAKE_TARGET} && \
|
|||||||
|
|
||||||
FROM ${RELEASE_IMAGE} as release
|
FROM ${RELEASE_IMAGE} as release
|
||||||
COPY --from=builder /usr/src/airshipctl/bin/airshipctl /usr/local/bin/airshipctl
|
COPY --from=builder /usr/src/airshipctl/bin/airshipctl /usr/local/bin/airshipctl
|
||||||
|
USER 65534
|
||||||
|
ENTRYPOINT [ "/usr/local/bin/airshipctl" ]
|
||||||
|
31
Makefile
31
Makefile
@ -1,22 +1,29 @@
|
|||||||
SHELL := /bin/bash
|
SHELL := /bin/bash
|
||||||
|
|
||||||
GO_FLAGS := -ldflags '-extldflags "-static"' -tags=netgo
|
GO_FLAGS := -ldflags '-extldflags "-static"' -tags=netgo
|
||||||
|
|
||||||
BINDIR := bin
|
BINDIR := bin
|
||||||
EXECUTABLE_CLI := airshipctl
|
EXECUTABLE_CLI := airshipctl
|
||||||
|
|
||||||
SCRIPTS_DIR := scripts
|
SCRIPTS_DIR := scripts
|
||||||
|
|
||||||
# linting
|
# linting
|
||||||
LINTER_CMD := "github.com/golangci/golangci-lint/cmd/golangci-lint" run
|
LINTER_CMD := "github.com/golangci/golangci-lint/cmd/golangci-lint" run
|
||||||
ADDTL_LINTERS := goconst,gofmt,unparam
|
ADDTL_LINTERS := goconst,gofmt,unparam
|
||||||
|
|
||||||
# docker
|
# docker
|
||||||
DOCKER_MAKE_TARGET := build
|
DOCKER_MAKE_TARGET := build
|
||||||
|
|
||||||
|
# docker image options
|
||||||
|
DOCKER_REGISTRY ?= quay.io
|
||||||
|
DOCKER_IMAGE_NAME ?= airshipctl
|
||||||
|
DOCKER_IMAGE_PREFIX ?= airshipit
|
||||||
|
DOCKER_IMAGE_TAG ?= dev
|
||||||
|
DOCKER_IMAGE ?= ${DOCKER_REGISTRY}/${DOCKER_IMAGE_PREFIX}/${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}
|
||||||
|
|
||||||
# go options
|
# go options
|
||||||
PKG := ./...
|
PKG := ./...
|
||||||
TESTS := .
|
TESTS := .
|
||||||
|
|
||||||
.PHONY: get-modules
|
.PHONY: get-modules
|
||||||
get-modules:
|
get-modules:
|
||||||
@ -46,7 +53,11 @@ lint:
|
|||||||
|
|
||||||
.PHONY: docker-image
|
.PHONY: docker-image
|
||||||
docker-image:
|
docker-image:
|
||||||
@docker build . --build-arg MAKE_TARGET=$(DOCKER_MAKE_TARGET)
|
@docker build . --build-arg MAKE_TARGET=$(DOCKER_MAKE_TARGET) --tag $(DOCKER_IMAGE)
|
||||||
|
|
||||||
|
.PHONY: print-docker-image-tag
|
||||||
|
print-docker-image-tag:
|
||||||
|
@echo "$(DOCKER_IMAGE)"
|
||||||
|
|
||||||
.PHONY: docker-image-unit-tests
|
.PHONY: docker-image-unit-tests
|
||||||
docker-image-unit-tests: DOCKER_MAKE_TARGET = unit-tests
|
docker-image-unit-tests: DOCKER_MAKE_TARGET = unit-tests
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
- hosts: all
|
- hosts: all
|
||||||
roles:
|
roles:
|
||||||
- install-docker
|
- install-docker
|
15
playbooks/airship-airshipctl-deploy-existing-k8s.yaml
Normal file
15
playbooks/airship-airshipctl-deploy-existing-k8s.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
- hosts: primary
|
||||||
|
roles:
|
||||||
|
- install-kubernetes
|
39
playbooks/airship-airshipctl-functional-existing-k8s.yaml
Normal file
39
playbooks/airship-airshipctl-functional-existing-k8s.yaml
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
- hosts: primary
|
||||||
|
tasks:
|
||||||
|
- name: "Build and install airshipctl"
|
||||||
|
block:
|
||||||
|
- name: "make docker-image"
|
||||||
|
make:
|
||||||
|
chdir: "{{ zuul.project.src_dir }}"
|
||||||
|
target: docker-image
|
||||||
|
|
||||||
|
- name: "copy airshipctl binary to host"
|
||||||
|
shell: |
|
||||||
|
set -ex
|
||||||
|
DOCKER_IMAGE_TAG=$(make print-docker-image-tag)
|
||||||
|
CONTAINER=$(docker create "${DOCKER_IMAGE_TAG}")
|
||||||
|
sudo docker cp "${CONTAINER}:/usr/local/bin/airshipctl" "/usr/local/bin/airshipctl"
|
||||||
|
docker rm "${CONTAINER}"
|
||||||
|
args:
|
||||||
|
chdir: "{{ zuul.project.src_dir }}"
|
||||||
|
|
||||||
|
- name: "Run functional test cases against pre-existing k8s cluster"
|
||||||
|
block:
|
||||||
|
- name: "airshipctl kubectl version"
|
||||||
|
shell: |
|
||||||
|
set -ex
|
||||||
|
airshipctl kubectl version
|
||||||
|
args:
|
||||||
|
chdir: "{{ zuul.project.src_dir }}"
|
@ -9,9 +9,9 @@
|
|||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
- hosts: primary
|
- hosts: primary
|
||||||
tasks:
|
tasks:
|
||||||
|
|
||||||
- name: Run Linter
|
- name: Run Linter
|
||||||
block:
|
block:
|
||||||
- name: "make docker-image-lint"
|
- name: "make docker-image-lint"
|
@ -1,4 +1,3 @@
|
|||||||
---
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
# You may obtain a copy of the License at
|
# You may obtain a copy of the License at
|
||||||
@ -10,8 +9,15 @@
|
|||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: airship-airshipctl-lint-test
|
name: airship-airshipctl-lint-unit
|
||||||
pre-run: playbooks/airship-airshipctl-common.yaml
|
pre-run: playbooks/airship-airshipctl-deploy-docker.yaml
|
||||||
run: playbooks/airship-airshipctl-lint-test.yaml
|
run: playbooks/airship-airshipctl-lint-unit.yaml
|
||||||
|
nodeset: airship-airshipctl-single-node
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: airship-airshipctl-functional-existing-k8s
|
||||||
|
pre-run: playbooks/airship-airshipctl-deploy-existing-k8s.yaml
|
||||||
|
run: playbooks/airship-airshipctl-functional-existing-k8s.yaml
|
||||||
nodeset: airship-airshipctl-single-node
|
nodeset: airship-airshipctl-single-node
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
---
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
# You may obtain a copy of the License at
|
# You may obtain a copy of the License at
|
||||||
@ -10,6 +9,7 @@
|
|||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
- nodeset:
|
- nodeset:
|
||||||
name: airship-airshipctl-single-node
|
name: airship-airshipctl-single-node
|
||||||
nodes:
|
nodes:
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
---
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
# You may obtain a copy of the License at
|
# You may obtain a copy of the License at
|
||||||
@ -10,10 +9,13 @@
|
|||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
- project:
|
- project:
|
||||||
check:
|
check:
|
||||||
jobs:
|
jobs:
|
||||||
- airship-airshipctl-lint-test
|
- airship-airshipctl-lint-unit
|
||||||
|
- airship-airshipctl-functional-existing-k8s
|
||||||
gate:
|
gate:
|
||||||
jobs:
|
jobs:
|
||||||
- airship-airshipctl-lint-test
|
- airship-airshipctl-lint-unit
|
||||||
|
- airship-airshipctl-functional-existing-k8s
|
||||||
|
Loading…
Reference in New Issue
Block a user