Skip to content

Commit fd04e31

Browse files
committed
Merge branch 'gitlabci' into 'master'
Add gitlab ci and functional testing See merge request cloud-infrastructure/cvmfs-csi!9
2 parents 3d4d44a + a18e174 commit fd04e31

File tree

6 files changed

+244
-4
lines changed

6 files changed

+244
-4
lines changed

.gitlab-ci.yml

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
stages:
2+
- build
3+
- image
4+
- test
5+
- deploy
6+
- cleanup
7+
8+
before_script:
9+
- export CLUSTER_NAME=cvmfs-validation-$(echo $CI_COMMIT_SHA | head -c 6)
10+
- export OS_AUTH_URL="https://keystone.cern.ch/main/v3"
11+
- export OS_IDENTITY_API_VERSION="3"
12+
- export OS_USERNAME="svcbuild"
13+
- export OS_PASSWORD="$SVCBUILD_PASSWORD"
14+
- export OS_PROJECT_NAME="Cloud CI"
15+
- export OS_REGION_NAME="cern"
16+
- export OS_DEFAULT_DOMAIN_NAME="default"
17+
- export OS_TENANT_ID="ec9ce822-d12f-453e-9f18-110652a85798"
18+
- export OS_TENANT_NAME="Cloud CI"
19+
20+
build:
21+
stage: build
22+
image: gitlab-registry.cern.ch/cloud/ciadm
23+
script:
24+
- rpm --import https://mirror.go-repo.io/centos/RPM-GPG-KEY-GO-REPO
25+
- curl -s https://mirror.go-repo.io/centos/go-repo.repo | tee /etc/yum.repos.d/go-repo.repo
26+
- echo 'priority=1' >> /etc/yum.repos.d/go-repo.repo
27+
- yum install -y gcc git golang make
28+
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN gitlab-registry.cern.ch
29+
- make
30+
- make test
31+
artifacts:
32+
expire_in: '10 days'
33+
paths:
34+
- _output/csi-cvmfsplugin
35+
except:
36+
- qa
37+
- master
38+
tags:
39+
- docker-privileged
40+
41+
build image:
42+
stage: image
43+
image: gitlab-registry.cern.ch/cloud/ciadm
44+
script:
45+
- cp _output/csi-cvmfsplugin deploy/docker
46+
- yum install -y make
47+
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN gitlab-registry.cern.ch
48+
- docker build -t gitlab-registry.cern.ch/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_SHA deploy/docker
49+
- docker push gitlab-registry.cern.ch/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_SHA
50+
dependencies:
51+
- build
52+
except:
53+
- master
54+
- qa
55+
tags:
56+
- docker-privileged
57+
58+
test k8s:
59+
stage: test
60+
image: gitlab-registry.cern.ch/cloud/ciadm
61+
script:
62+
- openstack coe cluster create $CLUSTER_NAME --cluster-template kubernetes-1.13.3-1 --keypair lxplus --node-count 1 --master-count 1 --flavor m2.small
63+
- sleep 10
64+
- STATUS=$(openstack coe cluster show $CLUSTER_NAME -c status | grep 'status ' | awk '{print $4}')
65+
- while [ "$STATUS" != "CREATE_COMPLETE" ] && [ "$STATUS" != "CREATE_FAILED" ]; do STATUS=$(openstack coe cluster show $CLUSTER_NAME -c status | grep 'status ' | awk '{print $4}'); done
66+
- openstack coe cluster show $CLUSTER_NAME
67+
- openstack coe cluster config $CLUSTER_NAME
68+
- export KUBECONFIG=config
69+
- kubectl create --validate=false -f magnum-cvmfs.yaml
70+
- kubectl rollout status deployment/cvmfs
71+
- POD=$(kubectl get pod | grep cvmfs | awk '{print $1}')
72+
- kubectl exec $POD -c atlas cat /cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase/README.INSTALL
73+
- kubectl exec $POD -c cms cat /cvmfs/cms.cern.ch/README
74+
dependencies:
75+
- build
76+
except:
77+
- master
78+
- qa
79+
80+
cleanup test clusters:
81+
stage: cleanup
82+
image: gitlab-registry.cern.ch/cloud/ciadm
83+
script:
84+
- openstack coe cluster show ${CLUSTER_NAME}; if [ $? -eq 0 ]; then openstack coe cluster delete ${CLUSTER_NAME} || true; fi
85+
- sleep 5
86+
- while openstack coe cluster show ${CLUSTER_NAME}; [ $? -eq 0 ]; do sleep 3; done
87+
when: always
88+
except:
89+
- master
90+
- qa
91+
92+
deploy tag:
93+
stage: deploy
94+
image: gitlab-registry.cern.ch/cloud/ciadm
95+
script:
96+
- docker pull gitlab-registry.cern.ch/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_SHA
97+
- docker tag gitlab-registry.cern.ch/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_SHA gitlab-registry.cern.ch/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_TAG
98+
- docker push gitlab-registry.cern.ch/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME:$CI_COMMIT_TAG
99+
only:
100+
- tags
101+
tags:
102+
- docker-privileged

Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ test:
1010
go vet gitlab.cern.ch/cloud-infrastructure/cvmfs-csi/pkg/...
1111

1212
cvmfsplugin:
13-
if [ ! -d ./vendor ]; then dep ensure; fi
13+
go mod tidy
1414
CGO_ENABLED=0 GOOS=linux go build -a -ldflags '-extldflags "-static"' -o _output/$(NAME) ./cvmfs
1515

16-
image: cvmfsplugin
16+
image:
1717
cp _output/$(NAME) deploy/docker
1818
docker build -t $(NAME):$(IMAGE_VERSION) deploy/docker
1919

2020
clean:
2121
go clean -r -x
22-
rm -f deploy/docker/rbdplugin
22+
rm -f deploy/docker/$(NAME)

go.mod

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
module gitlab.cern.ch/cloud-infrastructure/cvmfs-csi
2+
3+
go 1.12
4+
5+
require (
6+
github.com/container-storage-interface/spec v0.3.0
7+
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
8+
github.com/golang/protobuf v1.2.0 // indirect
9+
github.com/kubernetes-csi/drivers v0.0.0-20180806215407-5fa2f162efc3
10+
github.com/pborman/uuid v0.0.0-20170612153648-e790cca94e6c
11+
github.com/spf13/afero v1.2.2 // indirect
12+
github.com/stretchr/testify v1.3.0 // indirect
13+
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d // indirect
14+
golang.org/x/sync v0.0.0-20190423024810-112230192c58 // indirect
15+
golang.org/x/sys v0.0.0-20180828065106-d99a578cf41b // indirect
16+
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 // indirect
17+
google.golang.org/grpc v1.14.0
18+
k8s.io/apimachinery v0.0.0-20180823151430-017bf4f8f588 // indirect
19+
k8s.io/kubernetes v1.11.2
20+
k8s.io/utils v0.0.0-20180817171939-982821ea41da // indirect
21+
)

go.sum

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
github.com/container-storage-interface/spec v0.3.0 h1:ALxSqFjptj8R5rL+cdyAbwbaLHHXDL5pmp1qIh1b+38=
2+
github.com/container-storage-interface/spec v0.3.0/go.mod h1:6URME8mwIBbpVyZV93Ce5St17xBiQJQY67NDsuohiy4=
3+
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
4+
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
5+
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
6+
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
7+
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
8+
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
9+
github.com/kubernetes-csi/drivers v0.0.0-20180806215407-5fa2f162efc3 h1:vnWSpaPplmdzHq5pE/ECkm+eVmZzMJIuPcusyHVl4Tk=
10+
github.com/kubernetes-csi/drivers v0.0.0-20180806215407-5fa2f162efc3/go.mod h1:V6rHbbSLCZGaQoIZ8MkyDtoXtcKXZM0F7N3bkloDCOY=
11+
github.com/pborman/uuid v0.0.0-20170612153648-e790cca94e6c h1:MUyE44mTvnI5A0xrxIxaMqoWFzPfQvtE2IWUollMDMs=
12+
github.com/pborman/uuid v0.0.0-20170612153648-e790cca94e6c/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34=
13+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
14+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
15+
github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc=
16+
github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
17+
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
18+
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
19+
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
20+
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d h1:g9qWBGx4puODJTMVyoPrpoxPFgVGd+z1DZwjfRu4d0I=
21+
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
22+
golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
23+
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
24+
golang.org/x/sys v0.0.0-20180828065106-d99a578cf41b h1:cmOZLU2i7CLArKNViO+ZCQ47wqYFyKEIpbGWp+b6Uoc=
25+
golang.org/x/sys v0.0.0-20180828065106-d99a578cf41b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
26+
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
27+
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
28+
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc=
29+
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
30+
google.golang.org/grpc v1.14.0 h1:ArxJuB1NWfPY6r9Gp9gqwplT0Ge7nqv9msgu03lHLmo=
31+
google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
32+
k8s.io/apimachinery v0.0.0-20180823151430-017bf4f8f588 h1:27Eed77htcD+xKyRQpbq8thV+F1tv611laPnUFMZoeg=
33+
k8s.io/apimachinery v0.0.0-20180823151430-017bf4f8f588/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0=
34+
k8s.io/kubernetes v1.11.2 h1:0XeIy/mHhEFiXkcCNn25muHIMJ/aYT2E9Uea40aD9Ck=
35+
k8s.io/kubernetes v1.11.2/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk=
36+
k8s.io/utils v0.0.0-20180817171939-982821ea41da h1:iSRsIrQWeKa5IIqOOpvhnN2E/7iz+v8VingQHJ3lGhI=
37+
k8s.io/utils v0.0.0-20180817171939-982821ea41da/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0=

magnum-cvmfs.yaml

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
apiVersion: storage.k8s.io/v1
2+
kind: StorageClass
3+
metadata:
4+
name: csi-cvmfs-atlas
5+
provisioner: csi-cvmfsplugin
6+
parameters:
7+
repository: atlas.cern.ch
8+
---
9+
apiVersion: storage.k8s.io/v1
10+
kind: StorageClass
11+
metadata:
12+
name: csi-cvmfs-cms
13+
provisioner: csi-cvmfsplugin
14+
parameters:
15+
repository: cms.cern.ch
16+
---
17+
apiVersion: v1
18+
kind: PersistentVolumeClaim
19+
metadata:
20+
name: csi-cvmfs-atlas-pvc
21+
spec:
22+
accessModes:
23+
- ReadOnlyMany
24+
resources:
25+
requests:
26+
storage: 1Gi
27+
storageClassName: csi-cvmfs-atlas
28+
---
29+
apiVersion: v1
30+
kind: PersistentVolumeClaim
31+
metadata:
32+
name: csi-cvmfs-cms-pvc
33+
spec:
34+
accessModes:
35+
- ReadOnlyMany
36+
resources:
37+
requests:
38+
storage: 1Gi
39+
storageClassName: csi-cvmfs-cms
40+
---
41+
apiVersion: apps/v1
42+
kind: Deployment
43+
metadata:
44+
name: cvmfs
45+
labels:
46+
app: cvmfs
47+
spec:
48+
replicas: 1
49+
selector:
50+
matchLabels:
51+
app: cvmfs
52+
template:
53+
metadata:
54+
labels:
55+
app: cvmfs
56+
spec:
57+
containers:
58+
- name: atlas
59+
image: busybox
60+
command: ["/bin/sh"]
61+
args: ["-c", "sleep 10000"]
62+
volumeMounts:
63+
- mountPath: /cvmfs/atlas.cern.ch
64+
name: atlas-pvc
65+
- name: cms
66+
image: busybox
67+
command: ["/bin/sh"]
68+
args: ["-c", "sleep 10000"]
69+
volumeMounts:
70+
- mountPath: /cvmfs/cms.cern.ch
71+
name: cms-pvc
72+
volumes:
73+
- name: atlas-pvc
74+
persistentVolumeClaim:
75+
claimName: csi-cvmfs-atlas-pvc
76+
readOnly: true
77+
- name: cms-pvc
78+
persistentVolumeClaim:
79+
claimName: csi-cvmfs-cms-pvc
80+
readOnly: true

pkg/cvmfs/nodeserver.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ func (ns *nodeServer) NodeUnpublishVolume(ctx context.Context, req *csi.NodeUnpu
134134
// Unbind the volume
135135

136136
if err := unmountVolume(targetPath); err != nil {
137-
glog.Errorf("failed to unbind volume %s: %v")
137+
glog.Errorf("failed to unbind volume %s: %v", targetPath, err)
138138
return nil, status.Error(codes.Internal, err.Error())
139139
}
140140

0 commit comments

Comments
 (0)