Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dd5fe0194c |
@@ -0,0 +1,115 @@
|
|||||||
|
name: Code Check
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- "v*"
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check:
|
||||||
|
runs-on: docker
|
||||||
|
container:
|
||||||
|
image: node:20
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Build TypeScript
|
||||||
|
run: npm run build
|
||||||
|
|
||||||
|
build_image:
|
||||||
|
runs-on: docker
|
||||||
|
container:
|
||||||
|
image: node:20-alpine
|
||||||
|
needs: check
|
||||||
|
if: ${{ github.event_name == 'push' }}
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install Docker CLI + Buildx
|
||||||
|
shell: sh
|
||||||
|
run: |
|
||||||
|
apk add --no-cache docker-cli docker-cli-buildx
|
||||||
|
|
||||||
|
- name: Build image metadata
|
||||||
|
id: meta
|
||||||
|
shell: sh
|
||||||
|
run: |
|
||||||
|
SERVER_URL="${GITHUB_SERVER_URL:-${GITEA_SERVER_URL:-}}"
|
||||||
|
if [ -z "$SERVER_URL" ]; then
|
||||||
|
echo "Neither GITHUB_SERVER_URL nor GITEA_SERVER_URL is set."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
REGISTRY_HOST="${SERVER_URL#http://}"
|
||||||
|
REGISTRY_HOST="${REGISTRY_HOST#https://}"
|
||||||
|
IMAGE_REPO="$(echo "$GITHUB_REPOSITORY" | tr '[:upper:]' '[:lower:]')"
|
||||||
|
|
||||||
|
echo "registry_host=$REGISTRY_HOST" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "image=$REGISTRY_HOST/$IMAGE_REPO" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Log in to Gitea Container Registry
|
||||||
|
shell: sh
|
||||||
|
env:
|
||||||
|
REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }}
|
||||||
|
REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }}
|
||||||
|
LEGACY_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||||
|
ACTOR_USERNAME: ${{ github.actor }}
|
||||||
|
run: |
|
||||||
|
USERNAME="$REGISTRY_USERNAME"
|
||||||
|
TOKEN="$REGISTRY_TOKEN"
|
||||||
|
|
||||||
|
if [ -z "$USERNAME" ]; then
|
||||||
|
USERNAME="$ACTOR_USERNAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$TOKEN" ]; then
|
||||||
|
TOKEN="$LEGACY_TOKEN"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$USERNAME" ] || [ -z "$TOKEN" ]; then
|
||||||
|
echo "Registry login failed: set REGISTRY_USERNAME and REGISTRY_TOKEN (or fallback GITEA_TOKEN)."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$TOKEN" | docker login "${{ steps.meta.outputs.registry_host }}" -u "$USERNAME" --password-stdin
|
||||||
|
|
||||||
|
- name: Build and push image
|
||||||
|
shell: sh
|
||||||
|
run: |
|
||||||
|
IMAGE="${{ steps.meta.outputs.image }}"
|
||||||
|
SHA_TAG="${GITHUB_SHA}"
|
||||||
|
REF_TYPE="${GITHUB_REF_TYPE}"
|
||||||
|
REF_NAME="${GITHUB_REF_NAME}"
|
||||||
|
|
||||||
|
TAG_ARGS="--tag $IMAGE:$SHA_TAG"
|
||||||
|
|
||||||
|
if [ "$REF_TYPE" = "branch" ] && [ "$REF_NAME" = "main" ]; then
|
||||||
|
TAG_ARGS="$TAG_ARGS --tag $IMAGE:latest"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$REF_TYPE" = "tag" ]; then
|
||||||
|
case "$REF_NAME" in
|
||||||
|
v[0-9]*.[0-9]*.[0-9]*)
|
||||||
|
MAJOR="$(echo "$REF_NAME" | cut -d. -f1)"
|
||||||
|
MINOR="$(echo "$REF_NAME" | cut -d. -f2)"
|
||||||
|
TAG_ARGS="$TAG_ARGS --tag $IMAGE:$REF_NAME --tag $IMAGE:$MAJOR.$MINOR --tag $IMAGE:$MAJOR"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
TAG_ARGS="$TAG_ARGS --tag $IMAGE:$REF_NAME"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker buildx version
|
||||||
|
docker buildx build --push $TAG_ARGS .
|
||||||
Reference in New Issue
Block a user