Permalink
Please sign in to comment.
Showing
with
147 additions
and 3 deletions.
- +2 −0 .gitignore
- +26 −3 Makefile
- +8 −0 images/gitlabci/Dockerfile
- +65 −0 images/gitlabci/README.md
- +46 −0 images/gitlabci/entrypoint.sh
2
.gitignore
29
Makefile
8
images/gitlabci/Dockerfile
| @@ -0,0 +1,8 @@ | ||
| +FROM docker:git | ||
| + | ||
| +ADD spread-linux-static /usr/local/bin/spread | ||
| +ADD entrypoint.sh /opt/spread-gitlab/entrypoint.sh | ||
| + | ||
| +ENV KUBECFG_INSECURE_SKIP_TLS_VERIFY="false" | ||
| + | ||
| +ENTRYPOINT ["/opt/spread-gitlab/entrypoint.sh"] |
65
images/gitlabci/README.md
| @@ -0,0 +1,65 @@ | ||
| +# Gitlab Spread Plugin | ||
| + | ||
| +This plugin allows you to add `spread` Kubernetes deployment to your Gitlab CI build pipeline. | ||
| + | ||
| +## Environment Variables | ||
| + | ||
| +These environment variables can be used to configure the deployment. | ||
| + | ||
| +### spread | ||
| + | ||
| +`DEPLOY_DIR` | ||
| + | ||
| +The directory spread should be deployed from | ||
| + | ||
| + | ||
| +### Cluster | ||
| +`KUBECFG_SERVER` | ||
| + | ||
| +Address of the Kubernetes API Server (https://hostname:port) | ||
| + | ||
| +`KUBECFG_API_VERSION` | ||
| + | ||
| +Preferred api version for communicating with the kubernetes cluster (v1, v2, etc) | ||
| + | ||
| +`KUBECFG_INSECURE_SKIP_TLS_VERIFY` | ||
| + | ||
| +Disable requirement that connections must pass TLS verification | ||
| + | ||
| +`KUBECFG_CERTIFICATE_AUTHORITY` | ||
| + | ||
| +Path to a cert file for the certificate authority. | ||
| + | ||
| +`KUBECFG_CERTIFICATE_AUTHORITY_DATA` | ||
| + | ||
| +Certificate data | ||
| + | ||
| +### User | ||
| + | ||
| +`KUBECFG_CLIENT_CERTIFICATE` | ||
| + | ||
| +Path to a client cert file for TLS | ||
| + | ||
| +`KUBECFG_CLIENT_CERTIFICATE_DATA` | ||
| + | ||
| +TLS client cert data | ||
| + | ||
| +`KUBECFG_CLIENT_KEY` | ||
| + | ||
| +Path to a client key file for TLS. | ||
| + | ||
| +`KUBECFG_CLIENT_KEY_DATA` | ||
| + | ||
| +Key data | ||
| + | ||
| +`KUBECFG_TOKEN` | ||
| + | ||
| +Bearer token for cluster auth | ||
| + | ||
| +`KUBECFG_USERNAME` | ||
| + | ||
| +Username for basic auth | ||
| + | ||
| +`KUBECFG_PASSWORD` | ||
| + | ||
| +Password for basic auth |
46
images/gitlabci/entrypoint.sh
| @@ -0,0 +1,46 @@ | ||
| +#!/bin/sh | ||
| + | ||
| +# if config file does not exist produce one with env vars | ||
| +if [ ! -f ~/.kube/config ]; then | ||
| + echo "setting up kubectl config" | ||
| + mkdir -p ~/.kube | ||
| + | ||
| + >~/.kube/config cat <<EOF | ||
| +kind: Config | ||
| +apiVersion: v1 | ||
| +current-context: gitlab | ||
| +contexts: | ||
| +- name: gitlab | ||
| + context: | ||
| + cluster: default | ||
| + user: default | ||
| +clusters: | ||
| +- name: default | ||
| + cluster: | ||
| + server: $KUBECFG_SERVER | ||
| + api-version: $KUBECFG_API_VERSION | ||
| + insecure-skip-tls-verify: $KUBECFG_INSECURE_SKIP_TLS_VERIFY | ||
| + certificate-authority: $KUBECFG_CERTIFICATE_AUTHORITY | ||
| + certificate-authority-data: $KUBECFG_CERTIFICATE_AUTHORITY_DATA | ||
| + | ||
| +users: | ||
| +- name: default | ||
| + user: | ||
| + client-certificate: $KUBECFG_CLIENT_CERTIFICATE | ||
| + client-certificate-data: $KUBECFG_CLIENT_CERTIFICATE_DATA | ||
| + client-key: $KUBECFG_CLIENT_KEY | ||
| + client-key-data: $KUBECFG_CLIENT_KEY_DATA | ||
| + token: $KUBECFG_TOKEN | ||
| + username: $KUBECFG_USERNAME | ||
| + password: $KUBECFG_PASSWORD | ||
| +EOF | ||
| +fi | ||
| + | ||
| +if [ ! -z "$DEPLOY_DIR" ]; then | ||
| + echo "using DEPLOY_DIR..." | ||
| + spread deploy $DEPLOY_DIR | ||
| + exit | ||
| +fi | ||
| + | ||
| +echo "Using project dir..." | ||
| +spread deploy $CI_PROJECT_DIR |
0 comments on commit
ed9568b