构建 Docker 镜像并使用 github 标签名称进行标记

Sar*_*ala 5 git-tag docker docker-image github-actions

我已经创建了一个关于创建存储库标签的 GitHub 操作。我成功地构建了 Docker 映像并将其推送到 AWS,但是我不知道如何使用与 GitHub 标签相同的名称来标记该映像。下面是我的 git 工作流程文件

name: Build Docker Image and Push to AWS ECR
on:
  push:
    tags:
    - '*'


jobs:

  build:

     runs-on: ubuntu-latest

     steps:
         - name: Checkout
           uses: actions/checkout@v1

         - name: Configure AWS credentials
           uses: aws-actions/configure-aws-credentials@v1
           with:
               aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
               aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
               aws-region: us-west-2

         - name: Login to Amazon ECR
           id: login-ecr
           uses: aws-actions/amazon-ecr-login@v1

         - name: Build, tag, and push image to Amazon ECR
           id: build-image
           env:
               ECR_REGISTRY: ${{ secrets.AWS_REGISTRY }}
               ECR_REPOSITORY: repo_name
               IMAGE_TAG: latest
           run: |
               docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
               docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
Run Code Online (Sandbox Code Playgroud)

请帮我替换IMAGE_TAG上面代码中的正确值

Dan*_*nyB 10

我们决定使用 git commit sha 作为图像标签,因为它始终代表代码的唯一状态。

- name: Build, tag, and push image to Amazon ECR
  env:
    ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
    ECR_REPOSITORY: reponame
    IMAGE_TAG: ${{ github.sha }}
  run: |
    docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
    docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
Run Code Online (Sandbox Code Playgroud)

如果您需要或更喜欢使用 commit 标签,您只需使用以下内容从 ref 中提取它:

- name: Extract Git Tag
  run: echo "GIT_TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
- name: Build, tag, and push image to Amazon ECR
  env:
    ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
    ECR_REPOSITORY: reponame
    IMAGE_TAG: ${{ env.GIT_TAG }}
  run: |
    docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
    docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
Run Code Online (Sandbox Code Playgroud)

  • `echo ::set-env` 已被 GitHub 禁用,在运行时出现此错误。`请升级到使用环境文件或通过将 ``ACTIONS_ALLOW_UNSECURE_COMMANDS`` 环境变量设置为 ``true`` 来选择不安全的命令执行。有关更多信息,请参阅:https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/` (2认同)