Docker 使用 github 构建和推送:无效的参考格式

Posted

技术标签:

【中文标题】Docker 使用 github 构建和推送:无效的参考格式【英文标题】:Docker build and push using github: invalid reference format 【发布时间】:2021-12-06 08:07:05 【问题描述】:

我想构建我的图像并使用 github 操作将其推送到 dockerhub。这是my repo

这就是我想做的工作:

name: ci

on:
  push:
    branches:
      - 'master'

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      -
        name: Checkout
        uses: actions/checkout@v2
      -
        name: Set up QEMU
        uses: docker/setup-qemu-action@v1
      -
        name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      -
        name: Login to DockerHub
        uses: docker/login-action@v1
        with:
          username: $ secrets.DOCKERHUB_USERNAME 
          password: $ secrets.DOCKERHUB_PASSWORD 
      -
        name: Build and push
        uses: docker/build-push-action@v2
        with:
          context: .
          load: true
          tags: shirzadi/ehsan:latest
      -
        name: Push it!
        run: docker push $ env.IMAGE :$ env.GIT_SHA 

结果如下:

【问题讨论】:

env.IMAGEenv.GIT_SHA 来自哪里? @AymDev 我以为那些是github预定义的变量我应该放什么? 【参考方案1】:

您正在使用不存在的环境变量。根据docker/build-push-action@v2 文档,它可以一步构建、标记和推送您的图像:

jobs:
  docker:
    steps:
      # ...
      -
        name: Build and push
        uses: docker/build-push-action@v2
        with:
          context: .
          push: true
          tags: shirzadi/ehsan:latest,shirzadi/ehsan:$ env.GITHUB_SHA 

tags 键列出 2 个标签并使用 GITHUB_SHA 环境变量。这些标签将在 push 键设置为 true 时被推送。

见:

Github Actions - Default environment variables docker/build-push-action@v2 - customizing inputs

【讨论】:

Error: buildx failed with: error: push and load 目前可能没有设置在一起 @ehsanshirzadi 你需要使用这个load 选项吗?我不确定它的目的。如果它生成您不使用的图像的 tarball,只需将其删除。【参考方案2】:

您没有 env.IMAGE 数据。下面的代码应该可以完成这项工作。

      - name: Build and push
        run: docker build -t $ env.IMAGE :$ github.sha  .
        env:
          IMAGE: shirzadi/ehsan
           

      - name: Push it!
        run: docker push $ env.IMAGE :$ github.sha 
        env:
          IMAGE: shirzadi/ehsan

【讨论】:

一个错误说:Unrecognized named-value: 'IMAGE' => run: docker push $ IMAGE :$ GIT_SHA 我已经编辑了我的答案,我错过了一件小事。请检查更新的答案?

以上是关于Docker 使用 github 构建和推送:无效的参考格式的主要内容,如果未能解决你的问题,请参考以下文章

GitLab CI 对 Docker 构建作业的无效参数

Docker-in-Docker 与 Gitlab 共享运行器,用于构建和推送 docker 镜像到注册表

跨账户 ECR 登录和推送构建的 Docker 映像的 CodePipeline 错误

使用 Gitlab Pipeline 构建并推送 Docker 镜像

sh 构建并推送docker镜像

Windows Azure 中的推送通知标签无效