Skip to content

ci: gate 'Python Integration Tests' rouge -- MSTEAMS_WEBHOOK absent (mesure 2026-10-06) #88

Open

Description

@jsboige

Symptome

Python Integration Tests est rouge sur les dernieres executions main (run 37409220102, 37409220056, etc.).

github-script step Microsoft Teams Notification (workflow python-integration-tests.yml L209-217) appelle actions/github-script@v6 avec webhook_url: ${{ secrets.MSTEAMS_WEBHOOK }}. Le secret MSTEAMS_WEBHOOK n est pas configure sur MyIntelligenceAgency/semantic-fleet ; il s evalue en chaine vide, l action echoue avec [Error] Missing Microsoft Teams Incoming Webhooks URL, et le job python-integration-tests-check passe failure.

Cela bloque le merge gate sans defaut reel de tests Python : les steps python-integration-tests et python-merge-gate sont skipped (dependance sur le job paths-filter qui, lui, est success).

Reproduction

gh run view 37409220102 --log-failed
# step: Microsoft Teams Notification
# ::[error]Action execution failed: [Error] Missing Microsoft Teams Incoming Webhooks URL.

Cause

La condition if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request' execute le step sur main, mais ne protege pas contre un webhook_url vide. Le step suivant Microsoft Teams Notification (Dry Run) (L219) utilise webhook_url: NONE (litteral) qui marche ; le precedent utilise un secret non-defini.

Voies de resolution

  1. RECOVERABLE-USER-HAND : configurer le secret MSTEAMS_WEBHOOK sur MyIntelligenceAgency/semantic-fleet (Settings > Secrets and variables > Actions). Necessite un webhook Teams valide cote owner du repo.

  2. RECOVERABLE-LOCAL : guarder le step :

    - name: Microsoft Teams Notification
      uses: skitionek/notify-microsoft-teams@master
      if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request' && secrets.MSTEAMS_WEBHOOK != ''
      with:
        webhook_url: ${{ secrets.MSTEAMS_WEBHOOK }}
        ...

    Le step est alors skipped quand le secret est vide, le job passe. Le merge gate redevient vert.

  3. RECOVERABLE-LOCAL variante : retirer le step si la notification Teams n est plus desiree.

Recommandation

Option 2 (guarder le step) est la voie la plus petite et preserve la fonctionnalite quand le secret sera configure ulterieurement. PR dediee ci(python): guard Teams notification sur secret vide est attendue, avec un test que le step est skipped sur PR (deja couvert par le if actuel) et sur main sans secret.

Liens

  • CoursIA lane myia-ai-01:CoursIA-2 (dispatch coordinateur 06/10)
  • Issue de triage des 18 PRs ouvertes (dependabot bumps obsoletes vs PRs substantives) : a ouvrir en follow-up
  • Diagnostic verifie firsthand via gh run view 37409220102 --log-failed

Activity

  1. jsboige commented on Oct 6, 2026

    @jsboige
    ContributorAuthor

    Verbatim log du rouge (mesure firsthand c.198) :

    Run 37409220102 (2026-10-06T03:29:33Z, schedule) — job 112093676433, step 8 :

    ##[group]Run skitionek/notify-microsoft-teams@master
    ##[endgroup]
    ##[error]Action execution failed: [Error] Missing Microsoft Teams Incoming Webhooks URL.
    ##[error]Please configure "MSTEAMS_WEBHOOK" as environment variable or
    ##[error]specify the key called "webhook_url" in "with" section.
    ##[error]Action execution failed: [Error] Missing Microsoft Teams Incoming Webhooks URL.
    ##[error]Please configure "MSTEAMS_WEBHOOK" as environment variable or
    ##[error]specify the key called "webhook_url" in "with" section.
    2026-10-06T03:29:46Z Cleaning up orphan processes
    

    Action : skitionek/notify-microsoft-teams@master (SHA 3e17a76608ddc8b8d95084c72a513bc677bd642c), step 8 du job python-integration-tests-check (workflow .github/workflows/python-integration-tests.yml L209-217).

    Cause : le secret MSTEAMS_WEBHOOK n est pas configuré sur ce repo. actions/github-script@v6 reçoit webhook_url qui s évalue en chaîne vide, l action échoue.

    Aggravation du rouge : le step notification fait passer le job check au rouge même en schedule. Les tests python-integration-tests et python-merge-gate sont skipped en schedule (la condition github.event_name != pull_request && github.event_name != schedule les exclut), mais le step notification tourne avant le core.setFailed final, donc le job échoue sur la notification, pas sur les tests.

    3 voies de retour au vert :

    1. RECOVERABLE-USER-HAND : créer le secret MSTEAMS_WEBHOOK sur ce repo (Settings → Secrets and variables → Actions) avec une URL de webhook Teams valide. Le step notification passe, le job check passe en schedule (les tests restent skipped, mais le job ne fail plus).

    2. RECOVERABLE-LOCAL : PR sur ce repo qui guard le step notification avec if: secrets.MSTEAMS_WEBHOOK != '' en plus du if: failure()|(cancelled()) actuel. Le step est skipped quand le secret est absent, le job check passe. C est 1 ligne de workflow, +1/-1.

    3. INTRINSIC : retirer purement le step Microsoft Teams Notification (la notification Teams est morte sur ce fork). Documenter la perte de capacité.

    Le choix entre 1/2/3 dépend de la stratégie : la voie 1 garde la notification fonctionnelle si elle est désirée ; la voie 2 la rend optionnelle ; la voie 3 l élimine.

    Mesure par lane myia-ai-01:CoursIA-2 (worker), coordinateur dispatch msg-20261006T102126-dnu09i. Prêt à livrer la PR voie 2 si GO.

    🤖 Generated with Claude Code

  2. added a commit that references this issue on Oct 6, 2026
  3. jsboige commented on Oct 6, 2026

    @jsboige
    ContributorAuthor

    [c.200 myia-ai-01:CoursIA-2] Voie 2 livrée : PR #89 sur fix/88-msteams-webhook-guard (commit 15cd848).

    Verbatim log mesure firsthand c.198 (run 37409220102 / job 112093676433 / step 8 / 2026-10-06T03:29:33Z)

    ##[error]Action execution failed: [Error] Missing Microsoft Teams Incoming Webhooks URL.
    ##[error]Please configure "MSTEAMS_WEBHOOK" as environment variable or
    ##[error]specify the key called "webhook_url" in "with" section.
    ##[error]Action execution failed: [Error] Missing Microsoft Teams Incoming Webhooks URL.
    ##[error]Please configure "MSTEAMS_WEBHOOK" as environment variable or
    ##[error]specify the key called "webhook_url" in "with" section.
    2026-10-06T03:29:46Z Cleaning up orphan processes
    

    Fix (pattern GitHub Actions)

    secrets.X n'est pas autorisé dans un if: de step. On hoist la valeur au niveau du job dans une env var, et le step guard lit la env var.

    python-integration-tests-check:
      if: always()
      runs-on: ubuntu-latest
      env:
        HAS_TEAMS: ${{ secrets.MSTEAMS_WEBHOOK != '' }}
      steps:
        - name: Microsoft Teams Notification
          uses: skitionek/notify-microsoft-teams@master
          if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request' && env.HAS_TEAMS == 'true'
          with:
            webhook_url: ${{ secrets.MSTEAMS_WEBHOOK }}
            ...

    Les 2 steps notification sont guardés. Le step 2 (Dry Run) a webhook_url: NONE mais le guard documente l'intention.

    Chemins

    Etat du secret Comportement
    MSTEAMS_WEBHOOK configuré HAS_TEAMS == 'true', step tourne comme avant
    MSTEAMS_WEBHOOK absent HAS_TEAMS == 'false', step skipped, job check passe

    Acceptance

    Refs PR #89.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions