Problem z pustym plikiem credentials.json w GitHub Actions

Problem z pustym plikiem credentials.json w GitHub Actions
3P
  • Rejestracja:około 5 lat
  • Ostatnio:6 miesięcy
  • Postów:72
0

Cześć!

Mam problem z GitHub Actions podczas próby integracji z Google Sheets API. Próbuję zapisać dane uwierzytelniające Google Sheets jako plik credentials.json z sekretów repozytorium. Niestety, plik tworzony przez workflow jest pusty, co skutkuje błędem w skrypcie Pythona, gdy próbuję użyć tych danych do autoryzacji.

Konfiguracja:
W repozytorium GitHub dodałem sekret GOOGLE_SHEETS_CREDENTIALS, który zawiera poprawną zawartość pliku JSON wygenerowanego z Google Cloud Console.
W workflow GitHub Actions próbuję zapisać sekret jako plik credentials.json w poniższy sposób:

  • name: Save Google Sheets credentials
    run: echo "${{ secrets.GOOGLE_SHEETS_CREDENTIALS }}" | tr -d '\r' > credentials.json

Następnie sprawdzam, czy plik został poprawnie zapisany:

  • name: Debug: Check if credentials.json is empty
    run: |
    if [ ! -s credentials.json ]; then
    echo "Error: credentials.json is empty!"
    exit 1
    fi

Zawsze otrzymuję komunikat o błędzie, że plik credentials.json jest pusty.

Sprawdziłem zawartość sekreta bezpośrednio w GitHub, i wygląda na to, że jest tam poprawny plik JSON. Dodałem też krok, aby wyświetlić zawartość sekreta w logach, ale nawet wtedy nie widzę żadnych danych.

Co próbowałem:
Sprawdziłem kilkakrotnie zawartość sekreta, na pewno jest to pełny i poprawny plik JSON z Google Cloud Console.
Użyłem polecenia tr -d '\r', aby usunąć ewentualne problematyczne znaki nowej linii.
Dodałem dodatkowe kroki debugowania, ale plik zawsze wychodzi pusty.
Czy ktoś spotkał się z podobnym problemem i wie, co może być przyczyną? Będę wdzięczny za każdą pomoc!

obscurity
a plik się w ogóle tworzy? masz prawo do zapisu w tym folderze? spróbuj zapisać prosty tekst zamiast sekretu i zobaczyć na którym etapie naprawdę jest problem
DarekRepos
  • Rejestracja:prawie 3 lata
  • Ostatnio:5 dni
  • Postów:49
0

tu pisze w jakiś sposób aplikacja nie jest autoryzowana i może tu poszukać problemu:
tu https://developers.google.com/sheets/api/troubleshoot-authentication-authorization pisze że

Ten błąd występuje, jeśli nie autoryzowano aplikacji komputerowej

Z ciekawości uruchomiłem Gemini od Googla i wypluło cos takiego:

ten kod używa biblioteki gspread do edycji arkusza i żeby połaczyc sie z api , a ta korzysta z jakis bibliotetek do autentyfikacji. Jak nie ma możliwości użycia gspread , może te dwie biblioteki coś pomogą google-auth-httplib2 i google-auth-oauthlib

Google Auth Python Library (google-auth-oauthlib) służy do autentyfikacji, żeby moc korzystać z api

Kopiuj
name: Google Sheets API Integration

on:
  push:
    branches: [main]

jobs:
  google_sheets_api:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Install dependencies
        run: |
          pip install --upgrade google-auth-httplib2 google-auth-oauthlib gspread

      - name: Authenticate with Google Sheets API
        run: |
          service = gspread.service_account_from_json('${{ secrets.GOOGLE_SHEETS_API_KEY }}')

      - name: Access Google Sheet
        run: |
          sheet_id = 'YOUR_SHEET_ID'
          sheet = service.open_by_key(sheet_id)
          worksheet = sheet.worksheet('YOUR_WORKSHEET_NAME')

      - name: Perform actions on the sheet (e.g., read, write, update)
        run: |
          # Your code to interact with the worksheet here

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.