name: CI/CD Awesome Pipeline on: push: branches: [main] tags: - 'v*.*.*' pull_request: branches: [main] env: REGISTRY_URL: ${{ vars.REGISTRY_URL || 'gitea.iswearihadsomethingforthis.net' }} REGISTRY_USER: ${{ vars.REGISTRY_USER || 'francwa' }} jobs: test: name: Test runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Build and run tests env: DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }} TMDB_API_KEY: ${{ secrets.TMDB_API_KEY }} run: make _ci-run-tests build-and-push: name: Build & Push to Registry runs-on: ubuntu-latest needs: test if: github.ref_type == 'tag' && startsWith(github.ref_name, 'v') steps: - name: Debug ref run: | echo "github.ref = ${{ github.ref }}" echo "github.ref_type = ${{ github.ref_type }}" echo "github.ref_name = ${{ github.ref_name }}" - name: Checkout code uses: actions/checkout@v4 - name: Load config from Makefile id: config run: | eval "$(make _ci-image-name)" echo "image_name=${IMAGE_NAME}" >> $GITHUB_OUTPUT - name: Extract version from tag id: version run: echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT - name: Build production image run: make build - name: Tag and push to registry run: | docker tag ${{ steps.config.outputs.image_name }}:latest ${{ env.REGISTRY_URL }}/${{ env.REGISTRY_USER }}/${{ steps.config.outputs.image_name }}:${{ steps.version.outputs.version }} docker tag ${{ steps.config.outputs.image_name }}:latest ${{ env.REGISTRY_URL }}/${{ env.REGISTRY_USER }}/${{ steps.config.outputs.image_name }}:latest echo "${{ secrets.GITEA_TOKEN }}" | docker login ${{ env.REGISTRY_URL }} -u ${{ env.REGISTRY_USER }} --password-stdin docker push ${{ env.REGISTRY_URL }}/${{ env.REGISTRY_USER }}/${{ steps.config.outputs.image_name }}:${{ steps.version.outputs.version }} docker push ${{ env.REGISTRY_URL }}/${{ env.REGISTRY_USER }}/${{ steps.config.outputs.image_name }}:latest