You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
178 lines
5.2 KiB
178 lines
5.2 KiB
# 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 |
|
- 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 \ |
|
-Dmaven.checkstyle.skip \ |
|
-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
|
|
|