From dd5fe0194c3a2e1ac7662ccf9e6bc28f46ece8ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20H=C3=B6ppner?= Date: Tue, 19 May 2026 20:10:32 +0200 Subject: [PATCH] Add GitHub Actions workflow for code check and TypeScript build --- .gitea/workflows/build.yml | 115 +++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 .gitea/workflows/build.yml diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..31afab8 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -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 .