name: pipeline on: push: branches: - "main" permissions: packages: write jobs: lint-and-format: runs-on: ubuntu-latest container: image: ubuntu:25.10 steps: - name: Install node and npm run: apt-get update && apt-get install -y nodejs npm - name: Checkout repository uses: https://gitea.com/actions/checkout@v4 - name: Install dependencies for frontend working-directory: ./frontend run: npm ci - name: Lint frontend working-directory: ./frontend run: npm run lint - name: Check formatting for frontend working-directory: ./frontend run: npm run format:check - name: Install dependencies for match_collector working-directory: ./match_collector run: npm ci - name: Lint match_collector working-directory: ./match_collector run: npm run lint - name: Check formatting for match_collector working-directory: ./match_collector run: npm run format:check build-and-push-images: needs: lint-and-format runs-on: ubuntu-latest steps: - name: Checkout repository uses: https://gitea.com/actions/checkout@v4 - name: Log in to container registry uses: docker/login-action@v3 with: registry: https://git.vhaudiquet.fr username: ${{ github.actor }} password: ${{ secrets.PACKAGES_TOKEN }} - name: Build and push frontend docker image uses: docker/build-push-action@v6 with: context: . file: ./frontend/Dockerfile push: true tags: | git.vhaudiquet.fr/vhaudiquet/lolstats-frontend:latest git.vhaudiquet.fr/vhaudiquet/lolstats-frontend:${{ github.sha }} - name: Build and push match_collector docker image uses: docker/build-push-action@v6 with: context: . file: ./match_collector/Dockerfile push: true tags: | git.vhaudiquet.fr/vhaudiquet/lolstats-match_collector:latest git.vhaudiquet.fr/vhaudiquet/lolstats-match_collector:${{ github.sha }} lint-and-publish-chart: runs-on: ubuntu-latest needs: build-and-push-images steps: - name: Checkout repository uses: https://gitea.com/actions/checkout@v4 with: fetch-depth: 0 - name: Install Helm uses: azure/setup-helm@v5 - name: Update Chart version and appVersion run: | # Get base chart version from Chart.yaml BASE_VERSION=$(grep '^version:' helm/buildpath/Chart.yaml | awk '{print $2}') # Use timestamp for ordered versions (e.g., 0.1.0-20240511-130400) # Note: SemVer pre-release cannot contain dots, only hyphens and alphanumerics TIMESTAMP=$(date -u +"%Y%m%d-%H%M%S") CHART_VERSION="${BASE_VERSION}-${TIMESTAMP}" # Update both version and appVersion sed -i "s/^version:.*/version: \"${CHART_VERSION}\"/" helm/buildpath/Chart.yaml sed -i "s/^appVersion:.*/appVersion: \"${{ github.sha }}\"/" helm/buildpath/Chart.yaml echo "chart_version=${CHART_VERSION}" >> $GITHUB_ENV - name: Lint Helm chart run: helm lint helm/buildpath/ - name: Package Helm chart run: | helm package helm/buildpath/ \ --version "${{ env.chart_version }}" \ --app-version "${{ github.sha }}" - name: Push Helm chart to Gitea registry run: | echo "Uploading chart to Gitea registry..." echo "User: ${{ github.actor }}" echo "URL: https://git.vhaudiquet.fr/api/packages/vhaudiquet/helm/api/charts" # Trim any trailing newline from the token TOKEN=$(echo -n "${{ secrets.PACKAGES_TOKEN }}" | tr -d '\n') curl --fail -v --user "${{ github.actor }}:${TOKEN}" -X POST --upload-file buildpath-*.tgz "https://git.vhaudiquet.fr/api/packages/vhaudiquet/helm/api/charts"