# 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. name: Python API on: push: branches: - dev paths: - 'dolphinscheduler-python/**' pull_request: paths: - 'dolphinscheduler-python/**' concurrency: group: py-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true defaults: run: working-directory: dolphinscheduler-python/pydolphinscheduler # We have to update setuptools wheel to package with package_data, LICENSE, NOTICE env: DEPENDENCES: pip setuptools wheel tox jobs: lint: name: Lint timeout-minutes: 15 runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Python 3.7 uses: actions/setup-python@v2 with: python-version: 3.7 - name: Install Dependences run: | python -m pip install --upgrade ${{ env.DEPENDENCES }} - name: Run All Lint Check run: | python -m tox -vv -e lint pytest: name: Pytest timeout-minutes: 15 needs: lint runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: python-version: [3.6, 3.7, 3.8, 3.9] os: [ubuntu-18.04, macOS-latest, windows-latest] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - name: Install Dependences run: | python -m pip install --upgrade ${{ env.DEPENDENCES }} - name: Run All Tests run: | python -m tox -vv -e code-test doc-build: name: Docs Build Test timeout-minutes: 15 needs: lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Python 3.7 uses: actions/setup-python@v2 with: python-version: 3.7 - name: Install Dependences run: | python -m pip install --upgrade ${{ env.DEPENDENCES }} - name: Run Tests Build Docs run: | python -m tox -vv -e doc-build-test local-ci: name: Local CI timeout-minutes: 15 needs: - pytest - doc-build runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Python 3.7 uses: actions/setup-python@v2 with: python-version: 3.7 - name: Install Dependences run: | python -m pip install --upgrade ${{ env.DEPENDENCES }} - name: Run Tests Build Docs run: | python -m tox -vv -e local-ci build-image: name: Build Image runs-on: ubuntu-latest # Switch to project root directory to run mvnw command defaults: run: working-directory: ./ timeout-minutes: 20 steps: - uses: actions/checkout@v2 with: submodules: true - name: Sanity Check uses: ./.github/actions/sanity-check with: token: ${{ secrets.GITHUB_TOKEN }} - name: Cache local Maven repository uses: actions/cache@v3 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-maven- - name: Build Image run: | ./mvnw -B clean install \ -Dmaven.test.skip \ -Dmaven.javadoc.skip \ -Dcheckstyle.skip=true \ -Pdocker,release -Ddocker.tag=ci \ -pl dolphinscheduler-standalone-server -am - name: Export Docker Images run: | docker save apache/dolphinscheduler-standalone-server:ci -o /tmp/standalone-image.tar \ && du -sh /tmp/standalone-image.tar - uses: actions/upload-artifact@v2 name: Upload Docker Images with: name: standalone-image path: /tmp/standalone-image.tar retention-days: 1 integrate-test: name: Integrate Test timeout-minutes: 20 needs: - build-image runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/download-artifact@v2 name: Download Docker Images with: name: standalone-image path: /tmp - name: Load Docker Images run: | docker load -i /tmp/standalone-image.tar - name: Set up Python 3.7 uses: actions/setup-python@v2 with: python-version: 3.7 - name: Install Dependences run: | python -m pip install --upgrade ${{ env.DEPENDENCES }} - name: Run Tests Build Docs run: | python -m tox -vv -e integrate-test