diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml deleted file mode 100644 index eedb276..0000000 --- a/.gitea/workflows/ci.yml +++ /dev/null @@ -1,201 +0,0 @@ -name: CI - -on: - push: - branches: [main] - pull_request: - branches: [main] - -env: - NTFY_URL: http://ntfy.observability.svc.cluster.local:80 - REGISTRY: gitea-http.gitea.svc.cluster.local:3000/daviestechlabs - REGISTRY_HOST: gitea-http.gitea.svc.cluster.local:3000 - IMAGE_NAME: stt-module - -jobs: - lint: - name: Lint - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up uv - run: curl -LsSf https://astral.sh/uv/install.sh | sh && echo "$HOME/.local/bin" >> $GITHUB_PATH - - - name: Set up Python - run: uv python install 3.12 - - - name: Install dependencies - run: uv sync --frozen --extra dev - - - name: Run ruff check - run: uv run ruff check . - - - name: Run ruff format check - run: uv run ruff format --check . - - test: - name: Test - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up uv - run: curl -LsSf https://astral.sh/uv/install.sh | sh && echo "$HOME/.local/bin" >> $GITHUB_PATH - - - name: Set up Python - run: uv python install 3.12 - - - name: Install dependencies - run: uv sync --frozen --extra dev - - - name: Run tests - run: uv run pytest -v - - release: - name: Release - runs-on: ubuntu-latest - needs: [lint, test] - if: gitea.ref == 'refs/heads/main' && gitea.event_name == 'push' - outputs: - version: ${{ steps.version.outputs.version }} - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Determine version bump - id: version - run: | - # Get latest tag or default to v0.0.0 - LATEST=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0") - VERSION=${LATEST#v} - IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION" - - # Check commit message for keywords - MSG="${{ gitea.event.head_commit.message }}" - if echo "$MSG" | grep -qiE "^major:|BREAKING CHANGE"; then - MAJOR=$((MAJOR + 1)); MINOR=0; PATCH=0 - BUMP="major" - elif echo "$MSG" | grep -qiE "^(minor:|feat:)"; then - MINOR=$((MINOR + 1)); PATCH=0 - BUMP="minor" - else - PATCH=$((PATCH + 1)) - BUMP="patch" - fi - - NEW_VERSION="v${MAJOR}.${MINOR}.${PATCH}" - echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT - echo "bump=$BUMP" >> $GITHUB_OUTPUT - echo "Bumping $LATEST → $NEW_VERSION ($BUMP)" - - - name: Create and push tag - run: | - git config user.name "gitea-actions[bot]" - git config user.email "actions@git.daviestechlabs.io" - git tag -a ${{ steps.version.outputs.version }} -m "Release ${{ steps.version.outputs.version }}" - git push origin ${{ steps.version.outputs.version }} - - docker: - name: Docker Build & Push - runs-on: ubuntu-latest - needs: [lint, test, release] - if: gitea.ref == 'refs/heads/main' && gitea.event_name == 'push' - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - with: - buildkitd-config-inline: | - [registry."gitea-http.gitea.svc.cluster.local:3000"] - http = true - insecure = true - - - name: Login to Docker Hub - if: vars.DOCKERHUB_USERNAME != '' - uses: docker/login-action@v3 - with: - username: ${{ vars.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Configure Docker for insecure registry - run: | - sudo mkdir -p /etc/docker - echo '{"insecure-registries": ["${{ env.REGISTRY_HOST }}"]}' | sudo tee /etc/docker/daemon.json - sudo systemctl restart docker || sudo service docker restart || true - sleep 2 - - - name: Login to Gitea Registry - run: | - AUTH=$(echo -n "${{ secrets.REGISTRY_USER }}:${{ secrets.REGISTRY_TOKEN }}" | base64 -w0) - mkdir -p ~/.docker - cat > ~/.docker/config.json << EOF - { - "auths": { - "${{ env.REGISTRY_HOST }}": { - "auth": "$AUTH" - } - } - } - EOF - echo "Auth configured for ${{ env.REGISTRY_HOST }}" - - - name: Extract metadata - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - tags: | - type=semver,pattern={{version}},value=${{ needs.release.outputs.version }} - type=semver,pattern={{major}}.{{minor}},value=${{ needs.release.outputs.version }} - type=raw,value=latest,enable={{is_default_branch}} - - - name: Build and push - uses: docker/build-push-action@v5 - with: - context: . - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max - - notify: - name: Notify - runs-on: ubuntu-latest - needs: [lint, test, release, docker] - if: always() - steps: - - name: Notify on success - if: needs.lint.result == 'success' && needs.test.result == 'success' - run: | - curl -s \ - -H "Title: ✅ CI Passed: ${{ gitea.repository }}" \ - -H "Priority: default" \ - -H "Tags: white_check_mark,github" \ - -H "Click: ${{ gitea.server_url }}/${{ gitea.repository }}/actions/runs/${{ gitea.run_id }}" \ - -d "Branch: ${{ gitea.ref_name }} - Commit: ${{ gitea.event.head_commit.message || gitea.sha }} - Release: ${{ needs.release.result == 'success' && needs.release.outputs.version || 'skipped' }} - Docker: ${{ needs.docker.result }}" \ - ${{ env.NTFY_URL }}/gitea-ci - - - name: Notify on failure - if: needs.lint.result == 'failure' || needs.test.result == 'failure' - run: | - curl -s \ - -H "Title: ❌ CI Failed: ${{ gitea.repository }}" \ - -H "Priority: high" \ - -H "Tags: x,github" \ - -H "Click: ${{ gitea.server_url }}/${{ gitea.repository }}/actions/runs/${{ gitea.run_id }}" \ - -d "Branch: ${{ gitea.ref_name }} - Commit: ${{ gitea.event.head_commit.message || gitea.sha }} - Lint: ${{ needs.lint.result }} - Test: ${{ needs.test.result }}" \ - ${{ env.NTFY_URL }}/gitea-ci diff --git a/.gitea/workflows/update-dependency.yml b/.gitea/workflows/update-dependency.yml new file mode 100644 index 0000000..94a0d2b --- /dev/null +++ b/.gitea/workflows/update-dependency.yml @@ -0,0 +1,59 @@ +name: Update handler-base + +on: + repository_dispatch: + types: [handler-base-release] + +env: + NTFY_URL: http://ntfy.observability.svc.cluster.local:80 + +jobs: + update: + name: Update handler-base dependency + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + token: ${{ secrets.GITEA_TOKEN }} + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version-file: go.mod + cache: true + + - name: Configure Git + run: | + git config user.name "gitea-actions[bot]" + git config user.email "actions@git.daviestechlabs.io" + + - name: Update handler-base + run: | + VERSION="${{ gitea.event.client_payload.version }}" + echo "Updating handler-base to ${VERSION}" + GONOSUMCHECK=git.daviestechlabs.io GONOSUMDB=git.daviestechlabs.io \ + go get git.daviestechlabs.io/daviestechlabs/handler-base@${VERSION} + go mod tidy + + - name: Commit and push + run: | + VERSION="${{ gitea.event.client_payload.version }}" + if git diff --quiet go.mod go.sum; then + echo "No changes to commit" + exit 0 + fi + git add go.mod go.sum + git commit -m "chore(deps): bump handler-base to ${VERSION}" + git push + + - name: Notify + if: success() + run: | + VERSION="${{ gitea.event.client_payload.version }}" + curl -s \ + -H "Title: 📦 Dep Update: ${{ gitea.repository }}" \ + -H "Priority: default" \ + -H "Tags: package,github" \ + -d "handler-base updated to ${VERSION}" \ + ${{ env.NTFY_URL }}/gitea-ci