#
#  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.
#

version: 2

updates:
  - package-ecosystem: maven
    directory: "/"
    schedule:
      interval: monthly
    target-branch: "master"
    ignore:
      - dependency-name: "*"
        update-types: [ "version-update:semver-major", "version-update:semver-minor" ]
    labels:
      - "master"
      - "dependencies"
      - "java"

  - package-ecosystem: maven
    directory: "/"
    schedule:
      interval: monthly
    target-branch: "rel/0.13"
    ignore:
      - dependency-name: "*"
        update-types: [ "version-update:semver-major", "version-update:semver-minor" ]
    labels:
      - "0.13"
      - "dependencies"
      - "java"

  - package-ecosystem: maven
    directory: "/"
    schedule:
      interval: monthly
    target-branch: "rel/0.12"
    ignore:
      - dependency-name: "*"
        update-types: [ "version-update:semver-major", "version-update:semver-minor" ]
    labels:
      - "0.12"
      - "dependencies"
      - "java"

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: monthly
    target-branch: "master"
    ignore:
      - dependency-name: "*"
        update-types: [ "version-update:semver-major", "version-update:semver-minor" ]
    labels:
      - "master"
      - "dependencies"
      - "github_actions"

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: monthly
    target-branch: "rel/0.13"
    ignore:
      - dependency-name: "*"
        update-types: [ "version-update:semver-major", "version-update:semver-minor" ]
    labels:
      - "0.13"
      - "dependencies"
      - "github_actions"

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: monthly
    target-branch: "rel/0.12"
    ignore:
      - dependency-name: "*"
        update-types: [ "version-update:semver-major", "version-update:semver-minor" ]
    labels:
      - "0.12"
      - "dependencies"
      - "github_actions"
