首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Gitlab CI码头建立标签问题

为什么Gitlab CI码头建立标签问题
EN

Stack Overflow用户
提问于 2020-12-30 18:42:23
回答 1查看 257关注 0票数 0

我一直试图使用gitlab运行程序并使用此链接作为参考https://www.digitalocean.com/community/tutorials/how-to-set-up-a-continuous-deployment-pipeline-with-gitlab-ci-cd-on-ubuntu-18-04将我的项目和部署构建到远程服务器。

运行管道后,发布阶段将给出关于码头标记的错误。

代码语言:javascript
复制
$ docker build -t $TAG_COMMIT -t $TAG_LATEST .
invalid argument "/patch-9:64a25b49" for "-t, --tag" flag: invalid reference format

我已经尝试过以不同的格式更改对接构建标记,但仍然找不出错误的原因。我试过改变标签

代码语言:javascript
复制
TAG_LATEST: ${CI_REGISTRY_IMAGE}/${CI_COMMIT_REF_NAME}:latest
TAG_COMMIT:${CI_REGISTRY_IMAGE}/${CI_COMMIT_REF_NAME}:${CI_COMMIT_SHORT_SHA}

但我还是会犯错误

代码语言:javascript
复制
$ cd $GOPATH/src/$REPO/$NAMESPACE/$PROJECT
$ docker build -t $TAG_COMMIT -t $TAG_LATEST .
invalid argument "/patch-10:fbf4855b" for "-t, --tag" flag: invalid reference format
See 'docker build --help'.

有人能帮我解决这个问题吗?

我的.gitlab-ci.yml文件看起来

代码语言:javascript
复制
image: golang:1.15.3

variables:
  REPO: github.com
  NAMESPACE: daniel
  PROJECT: danapp
  TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest
  TAG_COMMIT: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHORT_SHA

before_script:
  - mkdir -p $GOPATH/src/$REPO/$NAMESPACE/$PROJECT
  - cp -r -v $CI_PROJECT_DIR $GOPATH/src/github.com/daniel
  - cd $GOPATH/src/$REPO/$NAMESPACE/$PROJECT

stages:
  - build
  - publish
  - deploy

compile:
  stage: build
  script:
    - go build -race -ldflags "-extldflags '-static'" -o $CI_PROJECT_DIR/danapp
  artifacts:
    paths:
      - danapp

publish:
  image: docker:latest
  stage: publish
  services:
    - docker:dind
  script:
    - docker build -t $TAG_COMMIT -t $TAG_LATEST .
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
    - docker push $TAG_COMMIT
    - docker push $TAG_LATEST

deploy:
  image: alpine:latest
  stage: deploy
  tags:
    - deployment
  before_script:
    - apk update && apk add openssh-client
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
  
  script:
    - chmod og= $SSH_PRIVATE_KEY
    - apk update && apk add openssh-client
    - ssh -i $SSH_PRIVATE_KEY -o StrictHostKeyChecking=no admin@192.168.x.x "docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY"
    - ssh -i $SSH_PRIVATE_KEY -o StrictHostKeyChecking=no admin@192.168.x.x  "docker pull $TAG_COMMIT"
    - ssh -i $SSH_PRIVATE_KEY -o StrictHostKeyChecking=no admin@192.168.x.x  "docker container rm -f danapp || true"
    - ssh -i $SSH_PRIVATE_KEY -o StrictHostKeyChecking=no admin@192.168.x.x  "docker run -d -p 20005:20005 --name danapp $TAG_COMMIT"
  
  environment: stagging
  only:
    - master
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-15 18:10:19

我建议你把你的$CI_COMMIT_REF_NAME换成$CI_COMMIT_REF_SLUG,也许这能解决问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65512018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档