diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..c00fb61cfaa230712d92dddf9a307651084baf87 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,84 @@ +stages: + - package tests + +package tests: + stage: package tests + tags: + - bigbang + - privileged + - public + image: registry.access.redhat.com/ubi8/ubi:8.2 + services: + - docker:dind + variables: + DOCKER_HOST: tcp://localhost:2375/ + DOCKER_DRIVER: overlay2 + DOCKER_TLS_CERTDIR: "" + + before_script: + # Downloading Tools needed for cluster creation + - echo "Installing wget npm git and docker-ce-cli" + - yum -y install wget npm git gettext > /dev/null && wget https://download.docker.com/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo > /dev/null && yum -y install docker-ce-cli > /dev/null && yum -y clean all > /dev/null + - wget -q "https://get.helm.sh/helm-v3.4.0-linux-amd64.tar.gz" && tar xzf helm-v3.4.0-linux-amd64.tar.gz -C /usr/local/bin/ --strip-components 1 && chmod +x /usr/local/bin/helm + - curl -s https://toolkit.fluxcd.io/install.sh | bash + - wget -q -O /usr/local/bin/argocd "https://github.com/argoproj/argo-cd/releases/download/v1.7.8/argocd-linux-amd64" && chmod +x /usr/local/bin/argocd + - wget -q -O /usr/local/bin/mkcert "https://github.com/FiloSottile/mkcert/releases/download/v1.4.1/mkcert-v1.4.1-linux-amd64" && chmod +x /usr/local/bin/mkcert + - wget -q -O /usr/local/bin/k3d "https://github.com/rancher/k3d/releases/download/v3.1.5/k3d-linux-amd64" && chmod +x /usr/local/bin/k3d + - wget -q -O /usr/local/bin/kubectl "https://storage.googleapis.com/kubernetes-release/release/v1.19.3/bin/linux/amd64/kubectl" && chmod +x /usr/local/bin/kubectl + - wget -q "https://github.com/open-policy-agent/conftest/releases/download/v0.21.0/conftest_0.21.0_Linux_x86_64.tar.gz" && tar xzf conftest_0.21.0_Linux_x86_64.tar.gz -C /usr/local/bin/ && chmod +x /usr/local/bin/conftest + # Starting dnsmasq for cluster dns resolution + - docker run -d -p 53:53/udp -p 53:53 janeczku/go-dnsmasq:latest + - echo "nameserver 127.0.0.1" >> /etc/resolv.conf + + # Inject image pull secrets into k3d + - env + - envsubst < tests/registries.yaml.template > tests/registries.yaml + - cat tests/registries.yaml + - docker login registry1.dsop.io -p ${REGISTRY1_PASSWORD} -u ${REGISTRY1_USER} + - docker pull registry1.dsop.io/ironbank/opensource/openpolicyagent/gatekeeper:v3.1.2 + + # Standup cluster + - k3d cluster create umbrella --volume ${PWD}/tests/registries.yaml:/etc/rancher/k3s/registries.yaml --k3s-server-arg "--disable=traefik" --k3s-server-arg "--disable=metrics-server" -p 80:80@loadbalancer -p 443:443@loadbalancer --wait --agents 1 --servers 1 + - while ! (kubectl get node | grep "agent" > /dev/null); do sleep 3; done + - kubectl get nodes + - k3d node list + # Install Flux + - which flux + - flux install --timeout 3m0s + - while ! (kubectl get ns,pods,hr,gitrepositories -A); do sleep 3; done + # Install Big Bang + - helm upgrade -i bigbang chart -n flux-system + # Wait for healthy + - sleep 5 + - kubectl get ns,pods,hr,gitrepositories -A + - kubectl wait --for=condition=Ready --timeout 30s helmrelease -n flux-system bigbang-certmanager + - kubectl wait --for=condition=Ready --timeout 300s helmrelease -n flux-system bigbang-gatekeeper + - kubectl wait --for=condition=Ready --timeout 300s helmrelease -n flux-system bigbang-istio-operator + - kubectl wait --for=condition=Ready --timeout 300s helmrelease -n flux-system bigbang-istio + - kubectl wait --for=condition=Ready --timeout 300s helmrelease -n flux-system bigbang-eck-operator + - kubectl wait --for=condition=Ready --timeout 300s helmrelease -n flux-system bigbang-logging-operator + - kubectl wait --for=condition=Ready --timeout 300s helmrelease -n flux-system bigbang-efk + - kubectl wait --for=condition=Ready --timeout 300s helmrelease -n flux-system bigbang-twistlock + # Install cypress +# - npm install cypress + # Clean up previous cluster + # Create cluster and wait for deployments and pods + # - k3d cluster create mycluster --k3s-server-arg "--disable=metrics-server" --k3s-server-arg "--disable=traefik" -p 80:80@loadbalancer -p 443:443@loadbalancer --agents 1 --servers 1 + # - while ! (kubectl get node | grep "agent" > /dev/null); do sleep 3; done + # - kubectl wait --for=condition=available --timeout 600s -A deployment --all > /dev/null + # - kubectl wait --for=condition=ready --timeout 600s -A pods --all --field-selector status.phase=Running > /dev/null + # # Deploy ArgoCD and wait for deployments and pods + # - kubectl apply -k ./ArgoCD/ + # - | + # kubectl patch secret -n argocd argocd-secret -p '{"stringData": { "admin.password": "$2y$12$3EySSrfvhLp7V1833J4fS.kvPNvdxmiofuhHV8spDr98J.EJ/FgJW"}}' + # - kubectl wait --for=condition=available --timeout 600s -A deployment --all > /dev/null + # - kubectl wait --for=condition=ready --timeout 600s -A pods --all --field-selector status.phase=Running > /dev/null + + script: + # Place kubernetes package test here + - echo "Package tests go here" + - kubectl get hr -A + + after_script: + # Delete Cluster + - k3d cluster delete umbrella diff --git a/tests/registries.yaml.template b/tests/registries.yaml.template new file mode 100644 index 0000000000000000000000000000000000000000..21a442b5300935d1aeddcf45261773aee118d213 --- /dev/null +++ b/tests/registries.yaml.template @@ -0,0 +1,5 @@ +configs: + "registry1.dsop.io": + auth: + username: ${REGISTRY1_USER} + password: ${REGISTRY1_PASSWORD} \ No newline at end of file