# 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@aa5489c8933f4cc7a4f7d45035b3b1440c9c10db

      - 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
