# Licensed to 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. Apache Software Foundation (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.

github:
  description: MLFlow examples for Apache Dolphinscheduler
  homepage: https://dolphinscheduler.apache.org/
  labels:
    - dolphinscheduler
    - mlops
  enabled_merge_buttons:
    squash: true
    merge: false
    rebase: false
  protected_branches:
    main:
      required_status_checks:
        strict: true
      required_pull_request_reviews:
        dismiss_stale_reviews: true
        required_approving_review_count: 1

notifications:
  commits:      commits@dolphinscheduler.apache.org
  issues:       commits@dolphinscheduler.apache.org
  pullrequests: commits@dolphinscheduler.apache.org
  pullrequests_status:  commits@dolphinscheduler.apache.org
  pullrequests_comment: commits@dolphinscheduler.apache.org