2022-03-12:k8s如何搭建gogs+drone实现自动化部署cicd,yaml如何写?

网友投稿 247 2022-09-12

2022-03-12:k8s如何搭建gogs+drone实现自动化部署cicd,yaml如何写?

2022-03-12:k8s如何搭建gogs+drone实现自动化部署cicd,yaml如何写?

答案2022-03-12:

需要安装docker和k3s,见 docker和k3s,k3s不需要依赖docker,但是drone-run-docker依赖docker,所以一定要安装docker。

第一种方法:

yaml如下,需要把192.168.204.13替换成自己电脑的ip:

apiVersion: v1kind: ConfigMapmetadata: labels: app: mysql name: mysql namespace: dronecidata: initdb.sql: | create database if not exists gogs; create database if not exists drone;---apiVersion: apps/v1kind: Deploymentmetadata: labels: app: mysql name: mysql namespace: dronecispec: replicas: 1 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - env: - name: MYSQL_ROOT_PASSWORD value: '123456' - name: TZ value: Asia/Shanghai image: 'mysql:8.0' imagePullPolicy: IfNotPresent name: mysql volumeMounts: - mountPath: /var/lib/mysql name: volv - mountPath: /docker-entrypoint-initdb.d name: volv2 volumes: - hostPath: path: /root/k8s/droneci/mysql/var/lib/mysql type: DirectoryOrCreate name: volv - configMap: name: mysql name: volv2---apiVersion: v1kind: Servicemetadata: labels: app: mysql name: mysql namespace: dronecispec: ports: - port: 3306 protocol: TCP targetPort: 3306 nodePort: 10040 selector: app: mysql type: NodePort---apiVersion: apps/v1kind: Deploymentmetadata: labels: app: registry name: registry namespace: dronecispec: replicas: 1 selector: matchLabels: app: registry template: metadata: labels: app: registry spec: containers: - image: 'registry' imagePullPolicy: IfNotPresent name: registry volumeMounts: - mountPath: /var/lib/registry name: volv volumes: - hostPath: path: /root/k8s/droneci/registry/var/lib/registry type: DirectoryOrCreate name: volv---apiVersion: v1kind: Servicemetadata: labels: app: registry name: registry namespace: dronecispec: ports: - port: 5000 nodePort: 50000 protocol: TCP targetPort: 5000 selector: app: registry type: NodePort---apiVersion: apps/v1kind: Deploymentmetadata: labels: app: phpmyadmin name: phpmyadmin namespace: dronecispec: replicas: 1 selector: matchLabels: app: phpmyadmin template: metadata: labels: app: phpmyadmin spec: containers: - env: - name: PMA_HOST value: mysql - name: PMA_PORT value: '3306' - name: PMA_USER value: root - name: PMA_PASSWORD value: '123456' image: phpmyadmin/phpmyadmin imagePullPolicy: IfNotPresent name: phpmyadmin---apiVersion: v1kind: Servicemetadata: labels: app: phpmyadmin name: phpmyadmin namespace: dronecispec: ports: - port: 80 protocol: TCP targetPort: 80 nodePort: 10050 selector: app: phpmyadmin type: NodePort---apiVersion: v1kind: Servicemetadata: labels: app: gogs name: gogs namespace: dronecispec: ports: - name: 3000-3000 port: 3000 protocol: TCP targetPort: 3000 nodePort: 10080 - name: 22-22 port: 22 protocol: TCP targetPort: 22 nodePort: 10022 selector: app: gogs type: NodePort---apiVersion: v1kind: ConfigMapmetadata: labels: app: gogs name: gogs namespace: dronecidata: appini: | BRAND_NAME = Gogs RUN_USER = git RUN_MODE = prod [database] TYPE = mysql HOST = mysql:3306 NAME = gogs SCHEMA = public USER = root PASSWORD = 123456 SSL_MODE = disable PATH = /app/gogs/data/gogs.db [repository] ROOT = /data/git/gogs-repositories [server] DOMAIN = gogs HTTP_PORT = 3000 EXTERNAL_URL = # 192.168.204.13需要修改成自己电脑的ip DISABLE_SSH = false SSH_PORT = 10022 START_SSH_SERVER = false OFFLINE_MODE = false [mailer] ENABLED = false [auth] REQUIRE_EMAIL_CONFIRMATION = false DISABLE_REGISTRATION = false ENABLE_REGISTRATION_CAPTCHA = true REQUIRE_SIGNIN_VIEW = false [user] ENABLE_EMAIL_NOTIFICATION = false [picture] DISABLE_GRAVATAR = false ENABLE_FEDERATED_AVATAR = false [session] PROVIDER = file [log] MODE = file LEVEL = Info ROOT_PATH = /app/gogs/log [security] INSTALL_LOCK = true SECRET_KEY = ToSeZnPToSyWt9r---apiVersion: apps/v1kind: Deploymentmetadata: labels: app: gogs name: gogs namespace: dronecispec: replicas: 1 selector: matchLabels: app: gogs template: metadata: creationTimestamp: null labels: app: gogs spec: containers: - env: - name: TZ value: Asia/Shanghai image: gogs/gogs imagePullPolicy: IfNotPresent name: gogs volumeMounts: - mountPath: /data/gogs/conf/app.ini subPath: appini name: config - mountPath: /data name: volv volumes: - configMap: name: gogs name: config - hostPath: path: /root/k8s/droneci/gogs/data type: DirectoryOrCreate name: volv---apiVersion: apps/v1kind: Deploymentmetadata: labels: app: drone name: drone namespace: dronecispec: replicas: 1 selector: matchLabels: app: drone template: metadata: labels: app: drone spec: containers: - env: - name: DRONE_OPEN - name: DRONE_GOGS - name: DRONE_PROVIDER value: gogs - name: DRONE_GOGS_SERVER value: ' - name: DRONE_SERVER_HOST value: drone - name: DRONE_RPC_SECRET value: hh - name: DRONE_SERVER_PROTO value: - name: DRONE_USER_CREATE value: 'username:moonfdd,admin:true' - name: DRONE_DATABASE_DRIVER value: mysql - name: DRONE_DATABASE_DATASOURCE value: 'root:123456@tcp(mysql:3306)/drone?parseTime=true' image: 'drone/drone:1' imagePullPolicy: IfNotPresent name: drone volumeMounts: - mountPath: /data name: volv volumes: - hostPath: path: /root/k8s/droneci/drone/data type: DirectoryOrCreate name: volv---apiVersion: v1kind: Servicemetadata: labels: app: drone name: drone namespace: dronecispec: ports: - port: 80 protocol: TCP targetPort: 80 nodePort: 10010 selector: app: drone type: NodePort---apiVersion: apps/v1kind: Deploymentmetadata: labels: app: drone-runner-ssh name: drone-runner-ssh namespace: dronecispec: replicas: 1 selector: matchLabels: app: drone-runner-ssh template: metadata: labels: app: drone-runner-ssh spec: containers: - env: - name: DRONE_RPC_SECRET value: hh - name: DRONE_RPC_HOST value: drone - name: DRONE_RPC_PROTO value: image: 'drone/drone-runner-ssh' imagePullPolicy: IfNotPresent name: drone-runner-ssh---apiVersion: v1kind: Servicemetadata: labels: app: drone-runner-ssh name: drone-runner-ssh namespace: dronecispec: ports: - port: 3000 protocol: TCP targetPort: 3000 nodePort: 10025 selector: app: drone-runner-ssh type: NodePort---apiVersion: apps/v1kind: Deploymentmetadata: labels: app: drone-runner-docker name: drone-runner-docker namespace: dronecispec: replicas: 1 selector: matchLabels: app: drone-runner-docker template: metadata: labels: app: drone-runner-docker spec: containers: - env: - name: DRONE_RPC_SECRET value: hh - name: DRONE_RPC_HOST value: drone - name: DRONE_RPC_PROTO value: - name: DRONE_RUNNER_CAPACITY value: '1' - name: DRONE_RUNNER_NAME value: runner-docker image: 'drone/drone-runner-docker:1' imagePullPolicy: IfNotPresent name: drone-runner-docker volumeMounts: - mountPath: /var/run/docker.sock name: volv volumes: - hostPath: path: /var/run/docker.sock type: Socket name: volv---apiVersion: v1kind: Servicemetadata: labels: app: drone-runner-docker name: drone-runner-docker namespace: dronecispec: ports: - port: 3000 protocol: TCP targetPort: 3000 nodePort: 10020 selector: app: drone-runner-docker type: NodePort

访问clone pipelinetype: docker name: devsteps: - name: build image: golang pull: if-not-exists environment: GOPROXY: CGO_ENABLED: 0 GO111MODULE: on GOOS: linux GOARCH: amd64 commands: - go envtrigger: branch: - master

push上去,drone里的结果如下:

第二种方法:

1.先copy项目

git clone k8syaml/droneci

2.修改Makefile文件,把192.168.204.13 改成自己电脑IP:

.PHONY: allall: buildbuild: k3s kubectl apply -f mysql.yaml k3s kubectl apply -f registry.yaml k3s kubectl apply -f phpmyadmin.yaml cp gogs.yaml gogs2.yaml sed -i "s/moonfddmyip/192.168.204.13/g" gogs2.yaml # 192.168.204.13 需要替换成宿主机IP k3s kubectl apply -f gogs2.yaml rm -rf gogs2.yaml k3s kubectl apply -f drone.yaml k3s kubectl apply -f drone-runner-ssh.yaml k3s kubectl apply -f drone-runner-docker.yamltest: pwdclean: k3s kubectl delete -f mysql.yaml k3s kubectl delete -f registry.yaml k3s kubectl delete -f phpmyadmin.yaml k3s kubectl delete -f gogs.yaml k3s kubectl delete -f drone.yaml k3s kubectl delete -f drone-runner-ssh.yaml k3s kubectl delete -f drone-runner-docker.yaml

然后make build。

make build # 搭建 ci/cd 环境make clean # 卸载 ci/cd 环境

结果如下:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:上海车展开幕在即,北汽集团这场营销有新意!
下一篇:答疑支招篇:做营销有哪些不可不知的套路!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~