使用gihub actions自动构建Docker Image CI 示例文件

Published on Aug. 22, 2023, 12:10 p.m.

Docker

name: Docker Image CI

on:
  push:
      # 每次 push tag 时进行构建,不需要每次 push 都构建。使用通配符匹配每次 tag 的提交,记得 tag 名一定要以 v 开头
    tags:
      - v*
env:
  # 设置 docker 镜像名
  IMAGE_NAME: mlflow-server

jobs:

  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Build the Docker image
      #run: docker build . --file Dockerfile --tag my-image-name:$(date +%s)
      run: docker build . --file Dockerfile --tag $IMAGE_NAME
    - name: Log into registry
      run: echo "${{ secrets.DOCKERPASSWORD }}" | docker login -u napoler --password-stdin
    - name: Push image
      run: |
        # 拼接镜像 id,这个镜像 id 就是在使用 docker 镜像时 pull 后面的名字。
        IMAGE_ID=napoler/$IMAGE_NAME

        # 将所有的大写字母转为小写
        IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')

        # 从 GitHub.ref 中取出版本
        VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,')

        # 从 tag 名字中替换 v 字符
        [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//')

        # Use Docker `latest` tag convention
        [ "$VERSION" == "master" ] && VERSION=latest

        echo IMAGE_ID=$IMAGE_ID
        echo VERSION=$VERSION
        # 设置镜像 id 和版本号
        docker tag $IMAGE_NAME $IMAGE_ID:$VERSION
        # 进行 push
        docker push $IMAGE_ID:$VERSION

https://github项目/settings/secrets/actions
设置密码

DOCKERPASSWORD

可以到设置访问密码
https://hub.docker.com/settings/security?generateToken=true

Tags: