Gitlab CICD部署go项目

446 阅读1分钟

注册runner

后面运行docker环境需要注册这种runner

gitlab-runner register \
          --non-interactive \
          --executor "docker" \
          --docker-image "golang:alpine" \
          --url "http://192.168.8.10/" \
          --registration-token "bTYW9wdU_M9nv1Kx_4Vi" \
          --description "node-runner" \
          --tag-list "docker,golang" \
          --run-untagged="true" \
          --locked="false" \
          --access-level="not_protected"
修改runner的配置,将宿主机的docker命令映射进去
编辑文件 /etc/gitlab-runner/config.toml,修改为
volumes = ["/cache","/usr/bin/docker:/usr/bin/docker","/var/run/docker.sock:/var/run/docker.sock"]

image.png

stages:
  - deploy  # 定义流水线阶段

deploy:
  stage: deploy   # 使用上面定义的阶段
  image: docker   # image表示使用docker容器来运行该job,镜像是有docker环境的镜像
  tags:
    - golang      # 指定使用哪个runner来运行该job
  only:
    - main        # 只有main分支才会运行该job
  script:         # 执行的shell命令
    - docker build -t goimage .
    - if [ $(docker ps -aq --filter name=goimage) ]; then docker rm -f goimage;fi
    - docker run -d -p 39000:6543 --name goimage goimage

image.png

FROM golang:latest as builder
WORKDIR /app
COPY . .
RUN go env -w GOPROXY=https://goproxy.cn,direct
RUN go get
RUN go build -o main
RUN chmod +x ./main
ENTRYPOINT ["/app/main"]

image.png