name: Build on: push: branches: [main] tags: - 'v*' env: IMAGE: ${{ vars.REGISTRY_HOST }}/${{ gitea.repository_owner }}/catalyst jobs: test: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node uses: actions/setup-node@v4 with: node-version: lts/* cache: npm - name: Install dependencies run: npm ci - name: Run tests run: npm test build: runs-on: ubuntu-latest needs: test if: startsWith(gitea.ref, 'refs/tags/v') steps: - name: Checkout uses: actions/checkout@v4 - name: Docker metadata id: meta uses: docker/metadata-action@v5 with: images: ${{ env.IMAGE }} tags: | type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=sha,prefix=,format=short type=raw,value=latest,enable={{is_default_branch}} - name: Log in to Gitea registry uses: docker/login-action@v3 with: registry: ${{ vars.REGISTRY_HOST }} username: ${{ gitea.actor }} password: ${{ secrets.TOKEN }} - name: Build and push uses: docker/build-push-action@v5 with: context: . push: true tags: ${{ steps.meta.outputs.tags }} release: runs-on: ubuntu-latest needs: build if: startsWith(gitea.ref, 'refs/tags/v') steps: - name: Create release run: | curl -sf -X POST \ -H "Authorization: token ${{ secrets.TOKEN }}" \ -H "Content-Type: application/json" \ "${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/releases" \ -d "{ \"tag_name\": \"${{ gitea.ref_name }}\", \"name\": \"Catalyst ${{ gitea.ref_name }}\", \"body\": \"### Image\n\n\`${{ env.IMAGE }}:${{ gitea.ref_name }}\`\", \"draft\": false, \"prerelease\": false }"