Skip to content

[WIP] Merge copilot and mail workflows into combined.yml#5

Merged
Fossicker merged 1 commit intomainfrom
copilot/merge-workflows-copilot-mail
Apr 20, 2026
Merged

[WIP] Merge copilot and mail workflows into combined.yml#5
Fossicker merged 1 commit intomainfrom
copilot/merge-workflows-copilot-mail

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 20, 2026

  • Delete .github/workflows/copilot.yml
  • Delete .github/workflows/mail.yml
  • Create .github/workflows/combined.yml with merged workflow (copilot run + email send)
  • Update .github/scripts/send-email.mjs to include the Copilot response in the email body
Original prompt

Ziel

Die beiden Workflows .github/workflows/copilot.yml und .github/workflows/mail.yml sollen zu einem einzigen Workflow zusammengeführt werden. Die Antwort des Copilot CLI soll anschließend automatisch per E-Mail versendet werden.

Aufgaben

1. .github/workflows/copilot.yml und .github/workflows/mail.yml löschen

Diese beiden Dateien werden durch den neuen kombinierten Workflow ersetzt.

2. Neuen kombinierten Workflow erstellen: .github/workflows/combined.yml

  • Trigger: workflow_dispatch und schedule: cron: '30 17 * * *'
  • permissions: contents: read
  • env: GMAIL_APP_PASSWORD: ${{ secrets.GMAIL_APP_PASSWORD }}
  • Ein einzelner Job daily-summary mit folgenden Steps:
    1. Checkout (actions/checkout@v4, fetch-depth: 0)
    2. Node.js Setup (actions/setup-node@v4, node-version: '20')
    3. npm install
    4. npm install -g @github/copilot
    5. Copilot CLI ausführen und die Antwort in eine Umgebungsvariable schreiben:
      - name: Run Copilot CLI
        env:
          COPILOT_GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
        run: |
          COPILOT_RESPONSE=$(copilot -p "wie ist das wetter in berlin?")
          echo "COPILOT_RESPONSE<<EOF" >> $GITHUB_ENV
          echo "$COPILOT_RESPONSE" >> $GITHUB_ENV
          echo "EOF" >> $GITHUB_ENV
    6. E-Mail versenden:
      - name: Send Email
        env:
          COPILOT_RESPONSE: ${{ env.COPILOT_RESPONSE }}
        run: node .github/scripts/send-email.mjs

3. .github/scripts/send-email.mjs anpassen

Das Script soll die Copilot-Antwort aus der Umgebungsvariable COPILOT_RESPONSE lesen und als E-Mail-Body verwenden:

import nodemailer from 'nodemailer';

const transporter = nodemailer.createTransport({
  service: 'Gmail',
  host: 'smtp.gmail.com',
  port: 465,
  secure: true,
  auth: {
    user: 'davidgoldmann2@gmail.com',
    pass: process.env.GMAIL_APP_PASSWORD,
  },
});

(async () => {
  const copilotResponse = process.env.COPILOT_RESPONSE || '(keine Antwort erhalten)';
  const email = 'davidgoldmann2@gmail.com';

  try {
    await transporter.sendMail({
      from: '"Copilot Daily Summary" <davidgoldmann2@gmail.com>',
      to: email,
      subject: 'Copilot Daily Summary',
      html: `<pre>${copilotResponse}</pre>`,
    });
    console.log('E-Mail erfolgreich versendet.');
  } catch (error) {
    console.error(error);
  }
})();

Hinweis: Den dotenv/config-Import entfernen, da die Umgebungsvariablen im Workflow direkt gesetzt werden.

The following is the prior conversation context from the user's chat exploration (may be truncated):

User: fasse die beiden workflows copilot.yml und mail.yml zusammen

Assistant: Hier ist der zusammengeführte Workflow. Ich habe beide Jobs in einer Datei vereint, den Cron-Schedule auf einen sinnvollen gemeinsamen Zeitpunkt konsolidiert und doppelte Steps (Checkout, Node.js-Setup) zusammengeführt:

name: Daily Copilot & Email

on:
  workflow_dispatch:
  schedule:
    # Runs daily at 5:30pm UTC (original copilot schedule; adjust as needed)
    - cron: '30 17 * * *'

permissions:
  contents: read

env:
  GMAIL_APP_PASSWORD: ${{ secrets.GMAIL_APP_PASSWORD }}

jobs:
  daily-summary:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Install Dependencies
        run: npm install

      - name: Install Copilot CLI
        run: npm install -g @github/copilot

      - name: Run Copilot CLI
        env:
          COPILOT_GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
        run: |
          copilot -p "wie ist das wetter in berlin?"

      - name: Send Email
        run: |
          node .github/scripts/send-email.mjs

Was wurde zusammengeführt / geändert:

Aspekt Entscheidung
Name Neuer gemeinsamer Name Daily Copilot & Email
Schedule Der Copilot-Cron 30 17 * * * wurde beibehalten (Mail lief um Mitternacht) – passe den Zeitpunkt gerne an
Checkout Einmalig mit fetch-depth: 0 (aus copilot.yml)
Node.js Einmalig, mit expliziter node-version: '20' (aus mail.yml)
npm install Bleibt für die Projekt-Dependencies erhalten; Copilot CLI wird separat global installiert
permissions contents: read beibehalten

Soll ich den Workflow direkt in das Repository pushen und die beiden alten Dateien entfernen?

User: ich möchte dass die anwort vom co pilot per mail verschicket wird.

Assistant: Ich sehe wie das Script funktioniert. Der Plan:

  1. Copilot-Antwort in eine Umgebungsvariable (COPILOT_RESPONSE) speichern
  2. send-email.mjs so anpassen, dass es COPILOT_RESPONSE aus der Umgebung liest und als E-Mail-Body verwendet
  3. Workflow zusammenführen

Soll ich direkt einen PR mit beiden geänderten ...

This pull request was created from Copilot chat.

@Fossicker Fossicker marked this pull request as ready for review April 20, 2026 19:28
@Fossicker Fossicker merged commit 884d5b5 into main Apr 20, 2026
1 check failed
Copilot stopped work on behalf of Fossicker due to an error April 20, 2026 19:28
Copilot AI requested a review from Fossicker April 20, 2026 19:28
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.

2 participants