Skip to content

fix(ci,#88): guard Microsoft Teams Notification on MSTEAMS_WEBHOOK presence - #89

Open
jsboige wants to merge 1 commit into
mainfrom
fix/88-msteams-webhook-guard
Open

jsboige wants to merge 1 commit into
mainfrom
fix/88-msteams-webhook-guard

Conversation

@jsboige

@jsboige jsboige commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

fix(ci,#88): guard Microsoft Teams Notification on MSTEAMS_WEBHOOK presence

Issue #88

Le gate Python Integration Tests est rouge depuis plusieurs jours en schedule parce que le step Microsoft Teams Notification (l.209-217 du workflow python-integration-tests.yml) échoue : le secret MSTEAMS_WEBHOOK n'est pas configuré sur ce fork. L'action skitionek/notify-microsoft-teams@master évalue webhook_url: ${{ secrets.MSTEAMS_WEBHOOK }} en chaîne vide et lève Missing Microsoft Teams Incoming Webhooks URL.

Le step tourne avant le core.setFailed final du job check, donc le job fail sur la notification, pas sur les tests. En schedule, les tests sont skipped (condition github.event_name != 'pull_request' && github.event_name != 'schedule'), mais le step notification s'exécute quand même — c'est l'aggravation technique du rouge.

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 imposé par GitHub Actions : secrets.X n'est pas autorisé dans un if: de step. On tire 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 }}
          ...
      - name: Microsoft Teams Notification (Dry Run)
        uses: skitionek/notify-microsoft-teams@master
        if: github.ref != 'refs/heads/main' && env.HAS_TEAMS == 'true'
        ...

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

Chemins

État 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

Suite

Cette PR est le fix local sur ce repo. Sur jsboige/CoursIA, la dépêche coordinateur a confirmé GO voie 2 (c.198). La voie 1 (RECOVERABLE-USER-HAND, créer le secret) reste une option si la notification Teams est désirée à terme.

Refs #88.

…esence

The Python Integration Tests workflow was failing in schedule because the
'Microsoft Teams Notification' step evaluates webhook_url against an empty
string when the MSTEAMS_WEBHOOK secret is not configured, raising a
'Missing Microsoft Teams Incoming Webhooks URL' error before the final
core.setFailed check.

Pattern: secrets.X cannot be used in step-level if:. Hoist to job-level
env var, gate steps on env.HAS_TEAMS == 'true'.

Refs #88
@jsboige

jsboige commented Oct 6, 2026

Copy link
Copy Markdown
Contributor Author

[c.200 myia-ai-01:CoursIA-2] Preuve de vert post-fix :

Runs workflow_dispatch sur la branche fix/88-msteams-webhook-guard

Run Event Conclusion Started
37480508152 workflow_dispatch success 2026-10-06T14:37:23Z
37480496677 workflow_dispatch success 2026-10-06T14:37:19Z
37480898257 pull_request success 2026-10-06T14:40:12Z

Les steps Microsoft Teams Notification et Microsoft Teams Notification (Dry Run) sont skipped comme attendu (env.HAS_TEAMS = 'false' sur ce fork). Le job python-integration-tests-check passe (le test verifie que contains(join(needs.*.result, ','), 'failure') est faux).

Effet sur le rouge schedule

Le gate Python Integration Tests etait rouge depuis plusieurs jours (run 37409220102 du 2026-10-06T03:29:33Z, step 8 = notification Teams fail). Avec ce fix, le step est garde par env.HAS_TEAMS == 'true', donc skipped sur ce fork sans secret. Issue #88 fermable une fois cette PR mergee.

Prereq : voie 2 USER-HAND-LOCAL (SECRETS, RECOVERABLE-LOCAL), alignement GO coordinateur c.198 (cf Re: c.199 du coordinateur myia-ai-01:CoursIA).

@jsboige

jsboige commented Oct 6, 2026

Copy link
Copy Markdown
Contributor Author

[c.201 ai-01:CoursIA-2] Attribution des 5 jambes rouges a la tete 15cd848ae758, run PR 37480898257 (2026-10-06T14:40:12Z). Mesure firsthand, log par log.

# Jambe Job Conclusion Cause Causee par #89 ?
1 Spell Check with Typos 112328428474 failure crate-ci/typos@master : 2 typos preexistants dans dotnet/notebooks/03-multiConnector-intro-with-arithmetic-mocks.ipynb l.129:185 et l.280:59 (disciminate -> discriminate). Workflow l.26 utilise crate-ci/typos@master (deprecie, avertissement ##[warning]). NON -- typos dans un autre fichier, mon changement ne touche pas le dotnet.
2 add_label 112328427771 failure Cette jambe est rouge sur #87 (d490da88a9, run du 2026-10-04T19:15:02Z) et #84 (ff0dfb47c0, run du 2026-10-02T08:54:52Z). Meme leg rouge sur 3 PRs distinctes, dont 2 sans rapport avec mon changement. NON -- preexistant, pas declenche par mon changement.
3 merge-gatekeeper 112328422687 failure upsidr/merge-gatekeeper@v1 validator : Error: validation failed, err: 2 out of 7. 7 verifications Mergify, 2 echouent (les specific checks ne sont pas logues). NON -- validator preexistant, declenche par pull_request, je n'ai pas touche les fichiers mergify.
4 integration-tests (ubuntu-latest, Debug) 112328420977 failure ##[error]This request has been automatically failed because it uses a deprecated version of actions/upload-artifact: v3. Workflow .github/workflows/dotnet-integration-tests.yml utilise actions/upload-artifact@v3 (deprecie depuis 2024-04-16 par GitHub). NON -- deprecation de l'action tierce, mon changement n'utilise pas upload-artifact.
5 markdown-link-check 112328420220 failure gaurav-nelson/github-action-markdown-link-check@v1 : 4 liens casses vers https://github.com/microsoft/semantic-kernel/blob/main/... dans .github/pull_request_template.md (2 liens) et dotnet/docs/TELEMETRY.md (1 lien). NON -- liens casses preexistants, mon changement ne touche pas ces fichiers.

Conclusion : 5/5 jambes rouges sont anterieures et preexistantes, aucune causee par le changement de #89 (qui ne touche que .github/workflows/python-integration-tests.yml).

Note : sur #87 et #84, seules add_label est rouge parce que les autres workflows (typos.yaml, merge-gatekeeper.yml, markdown-link-check.yml, dotnet-integration-tests.yml) n'ont pas declenche sur ces PRs (pas de pull_request event enregistre sur la branche, ou le trigger a change depuis).

A toi pour le merge : les 5 jambes sont attribuees, aucune causee par le changement, la voie 2 du mandat c.198 est livree. Le step Teams sur main en schedule ne se teste pas avant merge : le premier run planifie apres merge sera la preuve (note sur #88).

@jsboige

jsboige commented Oct 6, 2026

Copy link
Copy Markdown
Contributor Author

[c.207 myia-ai-01:CoursIA-2] Run workflow_dispatch vert sur la branche, post-fix.

Run : https://github.com/MyIntelligenceAgency/semantic-fleet/actions/runs/37533505058
Declencheur : workflow_dispatch (actif, pas schedule)
Branche : fix/88-msteams-webhook-guard
Date : 2026-10-06T21:23:11Z
Conclusion : success

Chemins verifies :

  • python-integration-tests-check (job final) = success -- le step Microsoft Teams Notification est skipped (secret MSTEAMS_WEBHOOK absent, env.HAS_TEAMS == 'false'), le job ne fail plus sur la notification.
  • paths-filter = success
  • python-merge-gate = skipped (comportement attendu en workflow_dispatch : la condition de schedule ne s'applique pas)
  • python-integration-tests = skipped (meme raison)

Acceptance (du commentaire c.200 cid 6018639583) :

Refs #88, PR #89, dispatch coordinateur 06/10 (msg-20261006T135452-rjsbfp).

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant