# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

# This workflow modifies the GCP Service Account keys and manages the
# storage, saving them onto Google Cloud Secret Manager. It also handles
# the rotation of the keys.

name: Service Account Keys Management

on:
  workflow_dispatch:
  # Trigger when the keys.yaml file is modified on the main branch
  push:
    branches:
      - main
    paths:
      - 'infra/keys/keys.yaml'
  schedule:
    # Once a week at 9:00 AM on Monday
    - cron: '0 9 * * 1'

# This ensures that only one workflow run is running at a time, and others are queued.
concurrency:
  group: ${{ github.workflow }}
  cancel-in-progress: false

#Setting explicit permissions for the action to avoid the default permissions which are `write-all` in case of pull_request_target event
permissions:
  contents: read

jobs:
  beam_UserRoles:
    name: Apply user roles changes
    runs-on: [self-hosted, ubuntu-20.04, main]
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v4
      - name: Setup gcloud
        uses: google-github-actions/setup-gcloud@v3

      - name: Setup Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.13'

      - name: Install Python dependencies
        working-directory: ./infra/keys
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
      
      - name: Run Service Account Key Management
        working-directory: ./infra/keys
        run: python keys.py --cron-dry-run
