forked from pravega/zookeeper-operator
-
Notifications
You must be signed in to change notification settings - Fork 0
129 lines (123 loc) · 4.66 KB
/
ci.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# workflow name
name: CI
# on events
on:
workflow_dispatch:
push:
branches:
- master
pull_request:
branches:
- master
release:
types:
- created
# env:
# KUBERNETES_VERSION: v1.27.6
# CHANGE_MINIKUBE_NONE_USER: true
# jobs to run
jobs:
build:
runs-on:
- ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Set up Go 1.21
uses: actions/setup-go@v2
with:
go-version: "1.21"
id: go
- name: Set up Go for root
run: |
sudo ln -sf `which go` `sudo which go` || true
sudo go version
- name: Check out code into the Go module directory
uses: actions/checkout@v2
- name: get go version
run: go version
- name: Gofmt and License checks
run: make check
- name: unit tests
run: make test
# - name: Login to GHCR
# uses: docker/login-action@v3
# with:
# registry: ghcr.io
# username: ${{ github.repository_owner }}
# password: ${{ secrets.GITHUB_TOKEN }}`
# - name: install utilites
# run: |
# sudo apt-get update
# sudo apt-get install -y build-essential conntrack
# - name: make all (crds, manifests, checks, binary, images)
# run: make all
# - name: install kubectl
# uses: azure/setup-kubectl@v3
# with:
# version: '${{ env.KUBERNETES_VERSION }}'
# - name: minikube setup
# uses: medyagh/setup-minikube@latest
# with:
# driver: none
# container-runtime: docker
# kubernetes-version: ${{ env.KUBERNETES_VERSION }}
# wait: all
# - name: verify minikube
# run: |
# which minikube
# minikube version
# minikube update-context
# minikube profile list
# kubectl get pods -A -o wide
# - name: setup e2e environment
# run: |
# kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
# kubectl create secret docker-registry regcred --docker-server=https://index.docker.io/v1/ --docker-username="testanisha" --docker-password="123456789" [email protected]
# - uses: docker/setup-buildx-action@v3
# - name: Codecov
# uses: codecov/[email protected]
- name: Set env
run: |
echo "KUBERNETES_VERSION=v1.23.1" >> $GITHUB_ENV
echo "MINIKUBE_VERSION=v1.25.2" >> $GITHUB_ENV
echo "KUBERNETES_CONFIG_FILE=$HOME/.kube/config" >> $GITHUB_ENV
echo "CHANGE_MINIKUBE_NONE_USER=true" >> $GITHUB_ENV
- name: minikube setup
run: |
curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$KUBERNETES_VERSION/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
curl -Lo minikube https://storage.googleapis.com/minikube/releases/$MINIKUBE_VERSION/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
sudo mount --make-rshared /
sudo apt-get install -y conntrack
CHANGE_MINIKUBE_NONE_USER=true
export KUBERNETES_CONFIG_FILE=$HOME/.kube/config
export KUBERNETES_CONFIG_FILE=$HOME/.kube/config;export CHANGE_MINIKUBE_NONE_USER=true;sudo minikube start --vm-driver=none --bootstrapper=kubeadm --kubernetes-version=$KUBERNETES_VERSION
echo "minikube started, updating context"
export KUBERNETES_CONFIG_FILE=$HOME/.kube/config;export CHANGE_MINIKUBE_NONE_USER=true; sudo minikube update-context
echo "context is updated"
#JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}'; until kubectl get nodes -o jsonpath="$JSONPATH" 2>&1 | grep -q "Ready=True"; do sleep 1; done
sleep 60
sudo kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default
echo "created cluster role"
sudo kubectl cluster-info
echo "cluster info"
sudo kubectl -n kube-system get pod -o wide
sudo kubectl create secret docker-registry regcred --docker-server=https://index.docker.io/v1/ --docker-username="testanisha" --docker-password="123456789" [email protected]
- name: E2E
run: sudo make test-e2e
publish:
name: Publish docker image
runs-on:
- self-hosted
- large-cgv2
needs: build
if: github.event_name == 'release' && github.event.action == 'created'
steps:
- name: Pushing docker images
run: sudo make push
- name: Uploading binary files
uses: actions/upload-artifact@v2
with:
name: zookeeper-exporter
path: bin/zookeeper-exporter*