diff --git a/site/content/en/docs/tutorials/use_minikube_in_github_acrtions.md b/site/content/en/docs/tutorials/use_minikube_in_github_acrtions.md new file mode 100644 index 0000000000..9c18d4638c --- /dev/null +++ b/site/content/en/docs/tutorials/use_minikube_in_github_acrtions.md @@ -0,0 +1,116 @@ +--- +title: "use minikube as CI testing in github actions" +linkTitle: "minikube in github actions" +weight: 1 +date: 2020-06-02 +description: > + How to use minikube in github actions for testing ? +--- + +### How to run minikube in github acitons ? + +you can add [setup-minikube](https://github.com/marketplace/actions/setup-minikube) as a step in your workflow. + +To install and start a minikube cluster, add the following step to your [github action workflow](https://help.github.com/en/actions/configuring-and-managing-workflows/configuring-a-workflow). + +```yaml + steps: + - name: start minikube + id: minikube + uses: medyagh/setup-minikube@master +``` + +## Full example: build image and deploy to minikube on each PR + +Required : + +- a valid Dockerfile +- a valid deployment.yaml (make sure image pull policy is set to never see bellow for example + +- Copy the yaml to `.github/workflows/pr.yml` in your github repo. +- Make a PR to your repo and see the result in github actions. + +```yaml +name: CI +on: + - pull_request +jobs: + job1: + runs-on: ubuntu-latest + name: build example and deploy to minikbue + steps: + - uses: actions/checkout@v2 + - name: Start minikube + uses: medyagh/setup-minikube@master + - name: Try the cluster ! + run: kubectl get pods -A + - name: Build image + run: | + export SHELL=/bin/bash + eval $(minikube -p minikube docker-env) + docker build -f ./Dockerfile -t local/example1 . + echo -n "verifying images:" + docker images + - name: Deploy to minikube + run: + kubectl apply -f deploy-to-minikube.yaml + - name: Test service URLs + run: | + minikube service list + minikube service example --url + echo "------------------opening the service------------------" + curl $(minikube service example --url)/version +``` + +In this example, the above workflow yaml, will do the following steps on each coming PR: + +1- Checks out the the source code +2- Installs and starts minikube +3- Trying out the cluster just by running kubectl get pods -A +4- Build the docker image using minikube's docker-env feature +5- Apply the yaml deployment yaml file minikube +6- Check the service been created in minikube + +### example deployment yaml for minikube + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: example +spec: + selector: + matchLabels: + app: example + replicas: 2 + template: + metadata: + labels: + app: example + spec: + containers: + - name: example-api + imagePullPolicy: Never + image: local/example:latest + resources: + limits: + cpu: 50m + memory: 100Mi + requests: + cpu: 25m + memory: 10Mi + ports: + - containerPort: 8080 +--- +apiVersion: v1 +kind: Service +metadata: + name: example +spec: + type: NodePort + selector: + app: example + ports: + - port: 8080 + targetPort: 8080 +```