使用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