| # |
| # 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 keeps the GitHub Action Caches up-to-date in the repository. |
| # |
| # A pull request build cannot update the cache of the upstream repository. Pull |
| # requests have a cache in the context of the fork of the upstream repository. |
| # A pull request build will lookup cache entries from the cache of the upstream |
| # repository in the case that a cache entry is missing in the pull request source |
| # repository's cache. |
| # To reduce cache misses for pull request builds, it is necessary that the |
| # caches in the upstream repository are up-to-date. |
| # If the cache entry already exists, the cache won't be updated. This will keep the |
| # update job very efficient and the downloading and updating will only run if one of the pom.xml |
| # files has been modified or the cache entry expires. |
| # |
| |
| name: CI - Maven Dependency Cache Update |
| on: |
| # trigger on every commit to given branches |
| push: |
| branches: |
| - master |
| # trigger on a schedule so that the cache will be rebuilt if it happens to expire |
| schedule: |
| - cron: '30 */12 * * *' |
| |
| env: |
| MAVEN_OPTS: -Xss1500k -Xmx1024m -Daether.connector.http.reuseConnections=false -Daether.connector.requestTimeout=60000 -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3 -Dmaven.wagon.http.retryHandler.requestSentEnabled=true -Dmaven.wagon.http.serviceUnavailableRetryStrategy.class=standard -Dmaven.wagon.rto=60000 |
| |
| jobs: |
| update-maven-dependencies-cache: |
| name: Update Maven dependency cache for ${{ matrix.name }} |
| env: |
| JOB_NAME: Update Maven dependency cache for ${{ matrix.name }} |
| GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }} |
| runs-on: ${{ matrix.runs-on }} |
| timeout-minutes: 45 |
| |
| strategy: |
| fail-fast: false |
| matrix: |
| include: |
| - name: all modules |
| runs-on: ubuntu-22.04 |
| cache_name: 'm2-dependencies-all' |
| mvn_arguments: '' |
| |
| - name: all modules - macos |
| runs-on: macos-11 |
| cache_name: 'm2-dependencies-all' |
| |
| - name: core-modules |
| runs-on: ubuntu-22.04 |
| cache_name: 'm2-dependencies-core-modules' |
| mvn_arguments: '-Pcore-modules,-main' |
| |
| steps: |
| - name: checkout |
| uses: actions/checkout@v3 |
| |
| - name: Tune Runner VM |
| uses: ./.github/actions/tune-runner-vm |
| |
| - name: Detect changed files |
| if: ${{ github.event_name != 'schedule' }} |
| id: changes |
| uses: apache/pulsar-test-infra/paths-filter@master |
| with: |
| filters: | |
| poms: |
| - 'pom.xml' |
| - '**/pom.xml' |
| |
| - name: Cache local Maven repository |
| if: ${{ github.event_name == 'schedule' || steps.changes.outputs.poms == 'true' }} |
| id: cache |
| uses: actions/cache@v3 |
| timeout-minutes: 5 |
| with: |
| path: | |
| ~/.m2/repository/*/*/* |
| !~/.m2/repository/org/apache/pulsar |
| key: ${{ runner.os }}-${{ matrix.cache_name }}-${{ hashFiles('**/pom.xml') }} |
| # there is no restore-keys here so that the cache size doesn't keep |
| # on growing from old entries which wouldn't never expire if the old |
| # cache would be used as the starting point for a new cache entry |
| |
| - name: Set up JDK 17 |
| uses: actions/setup-java@v3 |
| if: ${{ (github.event_name == 'schedule' || steps.changes.outputs.poms == 'true') && steps.cache.outputs.cache-hit != 'true' }} |
| with: |
| distribution: 'temurin' |
| java-version: 17 |
| |
| - name: Download dependencies |
| if: ${{ (github.event_name == 'schedule' || steps.changes.outputs.poms == 'true') && steps.cache.outputs.cache-hit != 'true' }} |
| run: | |
| # download dependencies, ignore errors |
| mvn -B -fn -ntp ${{ matrix.mvn_arguments }} dependency:go-offline |