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: 🚑 Fix DNS for Gitea (Hairpin NAT Patch) run: | echo "192.168.178.47 gitea.iswearihadsomethingforthis.net" | sudo tee -a /etc/hosts - name: Checkout code uses: actions/checkout@v4 - name: 🕵️ Sherlock Holmes Debug run: | echo "📍 JE SUIS ICI : $(pwd)" echo "📂 VOICI LE CONTENU DU DOSSIER :" ls -R - name: Build and run tests run: make _ci-run-tests build-and-push: name: Build & Push to Registry runs-on: ubuntu-latest needs: test if: startsWith(github.ref, 'refs/tags/v') steps: - 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