name: Publish Fast Tabler Docker image on: push: branches: - tabler - v3 - v4 jobs: lint-and-test: runs-on: ubuntu-latest defaults: run: working-directory: frontend steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 1 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' cache-dependency-path: frontend/package-lock.json - name: Install dependencies run: npm ci - name: Lint run: npm run lint - name: Test (frontend build) run: npm run build build-and-push-fast: runs-on: ubuntu-latest needs: lint-and-test timeout-minutes: 15 steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 with: driver-opts: | image=moby/buildkit:v0.13.2 - name: Log in to Gitea Registry uses: docker/login-action@v3 with: registry: git.shts.su username: ${{ gitea.actor }} password: ${{ secrets.ACTIONS_PAT }} - name: Build and push Fast Tabler Docker image uses: docker/build-push-action@v5 with: context: . file: ./Dockerfile.fast push: true platforms: linux/amd64 cache-from: | type=registry,ref=git.shts.su/${{ gitea.repository }}:tabler-fast cache-to: type=inline tags: | git.shts.su/${{ gitea.repository }}:latest git.shts.su/${{ gitea.repository }}:tabler-fast git.shts.su/${{ gitea.repository }}:tabler-fast-${{ gitea.sha }} labels: | org.opencontainers.image.title=RouterOS Manager with Tabler UI (Fast Build) org.opencontainers.image.description=Modern RouterOS Manager with Tabler UI design - Fast Alpine build org.opencontainers.image.version=tabler-fast org.opencontainers.image.revision=${{ gitea.sha }} org.opencontainers.image.created=${{ gitea.event.head_commit.timestamp }} provenance: false - name: Cleanup old images run: | echo "Skipping container registry cleanup (inline cache in image). Keep 3 latest image tags logic can be added with regctl if needed." - name: Trigger container update webhook run: | curl -X POST -sS --fail "${{ secrets.portainer_webhook }}"