-
环境部署:https://blog.csdn.net/weixin_43606975/article/details/125746624?spm=1001.2014.3001.5501
-
harbor安装不说了,都是大佬直接跳过。
-
.gitlab-ci.yaml文件
stages:
- package
- buidl
- deploy
- notify
package:
stage: package
image: 192.168.10.100:8080/test/golang:v1
tags:
- k8s
script:
- "go build -o gotest test.go"
- "ls ./;pwd ;echo $CI_PROJECT_DIR ;echo $CI_REGISTRY_IMAGE;echo $CI_COMMIT_TAG; echo $CI_COMMIT_SHORT_SHA ; echo $CI_PROJECT_NAME "
only:
- "tags"
cache:
paths:
- ./
artifacts:
paths: #传给下级的目录
- ./gotest
buidl:
stage: buidl
image: 192.168.10.100:8080/test/executor-debug:v1
script:
- mkdir -p /kaniko/.docker
- echo ${DOCKER_AK} > /kaniko/.docker/config.json
- cat /kaniko/.docker/config.json
- ls ./
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination 192.168.10.100:8080/test/${CI_PROJECT_NAME}:$CI_COMMIT_SHORT_SHA
tags:
- k8s
only:
- "tags"
deploy:
stage: deploy
image: registry.cn-hangzhou.aliyuncs.com/haoshuwei24/kubectl:1.16.6
tags:
- k8s
script:
- mkdir -p $HOME/.kube
- echo "$KUBERNETES_SECRET" >> "$HOME/.kube/config"
- kubectl version
- kubectl get pods -A
- kubectl set image deployment/${CI_PROJECT_NAME} golang=192.168.10.100:8080/test/test2:${CI_COMMIT_SHORT_SHA} -n demon
only:
- "tags"
notifyFailWeChat:
stage: notify
image: curlimages/curl:latest
script:
- curl 'https://oapi.dingtalk.com/robot/send?access_token=4df278df1de6d0429e35caf15e3c99953db9d68a3' -H 'Content-Type:application/json' -d "{\"msgtype\":\"text\",\"text\":{\"content\":\"$CI_PROJECT_NAME项目构建成功\n>本次构建由:$GITLAB_USER_NAME 触发\n>项目名称:$CI_PROJECT_NAME\n>提交号:$CI_COMMIT_SHA\n>提交日志:$CI_COMMIT_MESSAGE\n>构建分支:$CI_COMMIT_TAG\n>流水线地址:[$CI_PIPELINE_URL]($CI_PIPELINE_URL)\"}}"
only:
- tags
when: on_failure
# 构建成功时的通知消息
notifySuccessWeChat:
stage: notify
image: curlimages/curl:latest
script:
- curl 'https://oapi.dingtalk.com/robot/send?access_token=4df2745e8dfe2ba73899043c99953db9d68a3' -H 'Content-Type:application/json' -d "{\"msgtype\":\"text\",\"text\":{\"content\":\"$CI_PROJECT_NAME项目构建成功\n>本次构建由:$GITLAB_USER_NAME 触发\n>项目名称:$CI_PROJECT_NAME\n>提交号:$CI_COMMIT_SHA\n>提交日志:$CI_COMMIT_MESSAGE\n>构建分支:$CI_COMMIT_TAG\n>流水线地址:[$CI_PIPELINE_URL]($CI_PIPELINE_URL)\"}}"
only:
- tags
when: on_success
- Dockerfile
FROM 192.168.10.100:8080/test/golang:v1
WORKDIR /opt/app
ADD gotest /opt/app
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
CMD ["/opt/app/gotest"]
- test.go
package main
import (
"fmt"
)
func main() {
// %d 表示整型数字,%s 表示字符串
var stockcode=123
var enddate="2020-12-31"
var url="Code=%d&endDate=%s"
var target_url=fmt.Sprintf(url,stockcode,enddate)
fmt.Println(target_url)
}
镜像tag的:
- gitlab配置
- harbor-secret创建
#cat /root/.docker/config.json |base64
#cat harbor-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: harbor-secret
namespace: demon
data:
.dockerconfigjson: |
ewoJIewoJCSIxOTIuMTY4LjEwLjEwMDV0aCI6ICJZV1J0
YVc0NlNHRnlZbTl5TVRJek5EVT0iCfQo
type: kubernetes.io/dockerconfigjson
harbor信息:
- go-deployment创建
apiVersion: apps/v1
kind: Deployment
metadata:
name: test2
namespace: demon
spec:
replicas: 1
selector:
matchLabels:
service: golang
template:
metadata:
labels:
service: golang
spec:
imagePullSecrets:
- name: harbor-secret
containers:
- name: golang
image: 192.168.10.100:8080/test/test2:latest
resources:
requests:
cpu: 100m
memory: 100Mi
limits:
cpu: 200m
memory: 200Mi
- 打tag自动发布
- 查看pod日志: