捐赠版windows 增加文档提示 #29
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Docker Build Image And Push Docker Registry | |
on: | |
push: | |
paths-ignore: | |
- '**.md' | |
- 'LICENSE' | |
workflow_dispatch: # 手动触发 | |
jobs: | |
build: | |
name: Docker Build Image And Push Docker Registry | |
runs-on: blacksmith-4vcpu-ubuntu-2204 | |
env: | |
SECRET_REPO_PREFIX: REPO_ | |
SECRET_USERNAME_PREFIX: USERNAME_ | |
SECRET_PASSWORD_PREFIX: PASSWORD_ | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Node | |
# uses: actions/setup-node@v4 | |
uses: useblacksmith/setup-node@v5 | |
with: | |
node-version: '20' | |
- name: Install yarn | |
run: | | |
npm install -g yarn | |
- name: Setup Node Cache | |
# uses: actions/setup-node@v4 | |
uses: useblacksmith/setup-node@v5 | |
with: | |
node-version: '20' | |
cache: 'yarn' | |
cache-dependency-path: yarn.lock | |
- name: Build front | |
run: | | |
yarn && yarn build | |
- name: Set up QEMU # 设置 QEMU 环境,用来模拟操作系统,用来编译 arm64 镜像和 amd64 镜像 | |
uses: docker/setup-qemu-action@v3 | |
with: | |
platforms: linux/amd64,linux/arm64 | |
- name: Set up Docker Buildx # 设置 Docker Buildx 环境 | |
id: buildx | |
uses: docker/setup-buildx-action@v3 | |
with: | |
version: latest | |
- name: Inspect builder # 查看 builder 状态 | |
run: | | |
echo "Name: ${{ steps.buildx.outputs.name }}" | |
echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}" | |
echo "Status: ${{ steps.buildx.outputs.status }}" | |
echo "Flags: ${{ steps.buildx.outputs.flags }}" | |
echo "Platforms: ${{ steps.buildx.outputs.platforms }}" | |
- name: Login and Build Docker Image And Push | |
shell: bash | |
env: | |
ALL_SECRETS: ${{ toJSON(secrets) }} | |
run: | | |
repos=() | |
for key in $(echo $ALL_SECRETS | jq -r "keys[]"); do | |
if [[ $key == $SECRET_REPO_PREFIX* ]]; then | |
repo_key=$key | |
char=$(echo $repo_key | sed "s/$SECRET_REPO_PREFIX//") | |
username_key="${SECRET_USERNAME_PREFIX}${char}" | |
password_key="${SECRET_PASSWORD_PREFIX}${char}" | |
repo=$(echo $ALL_SECRETS | jq -r ".${repo_key}") | |
username=$(echo $ALL_SECRETS | jq -r ".${username_key}") | |
password=$(echo $ALL_SECRETS | jq -r ".${password_key}") | |
repos+=($repo) | |
# 如果 repo 只有一个 / ,则说明是 docker hub 的镜像,登录时后面不需要加 repo | |
if [[ $(echo $repo | grep -o '/' | wc -l) -eq 1 ]]; then | |
echo $password | docker login -u $username --password-stdin | |
else | |
echo $password | docker login -u $username --password-stdin $repo | |
fi | |
fi | |
done | |
command="docker buildx build --provenance=false --platform linux/amd64,linux/arm64 --push . " | |
for repo in ${repos[@]}; do | |
command="$command -t $repo\:latest -t $repo\:$(TZ=Asia/Shanghai date +%Y-%m-%d_%H-%M-%S)_$(git rev-parse --short HEAD)" | |
done | |
eval $command |