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
|
||||
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
|
||||
|
||||
GO_FLAGS := -ldflags '-extldflags "-static"' -tags=netgo
|
||||
GO_FLAGS := -ldflags '-extldflags "-static"' -tags=netgo
|
||||
|
||||
BINDIR := bin
|
||||
EXECUTABLE_CLI := airshipctl
|
||||
BINDIR := bin
|
||||
EXECUTABLE_CLI := airshipctl
|
||||
|
||||
SCRIPTS_DIR := scripts
|
||||
SCRIPTS_DIR := scripts
|
||||
|
||||
# linting
|
||||
LINTER_CMD := "github.com/golangci/golangci-lint/cmd/golangci-lint" run
|
||||
ADDTL_LINTERS := goconst,gofmt,unparam
|
||||
LINTER_CMD := "github.com/golangci/golangci-lint/cmd/golangci-lint" run
|
||||
ADDTL_LINTERS := goconst,gofmt,unparam
|
||||
|
||||
# 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
|
||||
PKG := ./...
|
||||
TESTS := .
|
||||
PKG := ./...
|
||||
TESTS := .
|
||||
|
||||
.PHONY: get-modules
|
||||
get-modules:
|
||||
@ -46,7 +53,11 @@ lint:
|
||||
|
||||
.PHONY: 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
|
||||
docker-image-unit-tests: DOCKER_MAKE_TARGET = unit-tests
|
||||
|
@ -9,6 +9,7 @@
|
||||
# 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: all
|
||||
roles:
|
||||
- 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.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
- hosts: primary
|
||||
tasks:
|
||||
|
||||
- name: Run Linter
|
||||
block:
|
||||
- name: "make docker-image-lint"
|
@ -1,4 +1,3 @@
|
||||
---
|
||||
# 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
|
||||
@ -10,8 +9,15 @@
|
||||
# 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.
|
||||
|
||||
- job:
|
||||
name: airship-airshipctl-lint-test
|
||||
pre-run: playbooks/airship-airshipctl-common.yaml
|
||||
run: playbooks/airship-airshipctl-lint-test.yaml
|
||||
name: airship-airshipctl-lint-unit
|
||||
pre-run: playbooks/airship-airshipctl-deploy-docker.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
|
||||
|
@ -1,4 +1,3 @@
|
||||
---
|
||||
# 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
|
||||
@ -10,6 +9,7 @@
|
||||
# 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.
|
||||
|
||||
- nodeset:
|
||||
name: airship-airshipctl-single-node
|
||||
nodes:
|
||||
|
@ -1,4 +1,3 @@
|
||||
---
|
||||
# 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
|
||||
@ -10,10 +9,13 @@
|
||||
# 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.
|
||||
|
||||
- project:
|
||||
check:
|
||||
jobs:
|
||||
- airship-airshipctl-lint-test
|
||||
- airship-airshipctl-lint-unit
|
||||
- airship-airshipctl-functional-existing-k8s
|
||||
gate:
|
||||
jobs:
|
||||
- airship-airshipctl-lint-test
|
||||
- airship-airshipctl-lint-unit
|
||||
- airship-airshipctl-functional-existing-k8s
|
||||
|
Loading…
Reference in New Issue
Block a user