name: CI — Test & Build on: push: branches: [main, develop] pull_request: branches: [main] jobs: test-and-build: name: Test & Build runs-on: ubuntu-latest container: image: node:22-bookworm steps: - name: Checkout run: | git clone ${{ gitea.server_url }}/${{ gitea.repository }}.git . git checkout ${{ gitea.sha }} - name: Install dependencies run: npm ci - name: Type check run: npm run typecheck - name: Run unit tests run: npm test -- --run - name: Install zip run: apt-get update -qq && apt-get install -y zip - name: Build extension run: npm run build - name: Verify build output run: | echo "Build contents:" ls -la .output/chrome-mv3/ echo "✅ Build successful" - name: Package as ZIP run: | VERSION=$(node -p "require('./package.json').version")-$(echo ${{ gitea.sha }} | cut -c1-7) zip -r lexai-chrome-mv3-${VERSION}.zip .output/chrome-mv3/ echo "VERSION=${VERSION}" >> $GITHUB_ENV - name: Publish to Gitea Package Registry run: | curl -s -X PUT "https://git.juankibin.space/api/packages/kibin/generic/lexai-extension/${{ env.VERSION }}/lexai-chrome-mv3-${{ env.VERSION }}.zip" \ -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ -T lexai-chrome-mv3-${{ env.VERSION }}.zip echo "✅ Published lexai-chrome-mv3-${{ env.VERSION }}.zip to package registry" echo "📦 Download: https://git.juankibin.space/kibin/LexAI/packages"