36 lines
1.4 KiB
YAML
36 lines
1.4 KiB
YAML
name: Build and Push Next.js to Private Registry
|
||
|
||
on:
|
||
push:
|
||
branches:
|
||
- main
|
||
workflow_dispatch:
|
||
|
||
jobs:
|
||
build-and-push:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
# 替换 actions/checkout@v4:直接利用 Runner 容器自带的 git 命令克隆
|
||
# Gitea 会自动注入环境变量 $GITEA_SERVER_URL, $GITEA_REPOSITORY, $GITEA_SHA
|
||
- name: 检查代码 (本地原生 Git)
|
||
run: |
|
||
git clone ${{ github.server_url }}/${{ github.repository }}.git .
|
||
git checkout ${{ github.sha }}
|
||
|
||
- name: 生成短哈希版本号
|
||
id: vars
|
||
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
||
|
||
# 替换 docker/setup-buildx-action:在纯内网,如果 Runner 宿主机已经有常规 Docker,
|
||
# 可以直接使用本机的 docker build 命令,不再需要下载外网的 buildx action。
|
||
- name: 构建并推送镜像 (本地 Docker)
|
||
run: |
|
||
# 允许本地 docker 引擎推送到不安全的 http 私有仓
|
||
# 注意:确保运行运行此任务的机器 /etc/docker/daemon.json 中配置了 "insecure-registries": ["192.168.10.236:31051"]
|
||
|
||
IMAGE_NAME="192.168.10.236:31051/你的应用名"
|
||
SHA_TAG="${{ steps.vars.outputs.sha_short }}"
|
||
|
||
docker build -t ${IMAGE_NAME}:latest -t ${IMAGE_NAME}:${SHA_TAG} -f ./Dockerfile .
|
||
docker push ${IMAGE_NAME}:latest
|
||
docker push ${IMAGE_NAME}:${SHA_TAG} |