


01
单个工作流
python tutorial.py
强大的 PyDolphinScheduler 可以帮你搞定所有设置并创建一个新的工作流,之后你可以在 DolphinScheduler web UI 中看到这个新的工作流。
02
多个工作流
python workflow1.pypython workflow2.pypython workflow3.py...python workflowN.py
我们可以将上述所有命令添加到一个 bash 脚本中,之后,我们只需要执行 bash 脚本
bash <bash-script-contain-all>
它虽然很有用,但是当一些工作流添加或删除时,我们也必须更改 bash 脚本,这意味着我们必须考虑同步更改代码。否则,bash 脚本会失败,或者我们的一些新工作流将触发失败。
for file in $(find . -name "*.py"); dopython "$file"done
01
什么是 GitHub Action
name: GitHub Actions Demoon:push:branches:- mainjobs:hello-world:runs-on: ubuntu-lateststeps:- name: Run my very first GitHub Actionsrun: echo "🎉 Hello World."
02
组合 GitHub Action 以触发多个工作流
name: Execute Workflowson:push:branches:- mainjobs:execute:runs-on: ubuntu-lateststeps:- name: Check out repository codeuses: actions/checkout@v3- name: Executerun: |for file in $(find . -name "*.py"); dopython "$file"done
# Modify Java Gateway Addressexport PYDS_JAVA_GATEWAY_ADDRESS="<YOUR-STATIC-IP-RUN-DOLPHINSCHEDULER-API-SERVER>"export PYDS_JAVA_GATEWAY_PORT="<PORT-RUN-DOLPHINSCHEDULER-API-SERVER>"
GitHub Actions 在 YAML 文件中支持 `env` 语法,可以在 github-actions: environment-variables 中看到更多详细信息,我们现在可以将 GitHub Actions 配置更改为
name: Execute Workflowson:push:branches:- mainjobs:execute:runs-on: ubuntu-lateststeps:- name: Check out repository codeuses: actions/checkout@v3- name: Executeenv:PYDS_JAVA_GATEWAY_ADDRESS: <YOUR-STATIC-IP-RUN-DOLPHINSCHEDULER-API-SERVER>PYDS_JAVA_GATEWAY_PORT: <PORT-RUN-DOLPHINSCHEDULER-API-SERVER>run: |for file in $(find . -name "*.py"); dopython "$file"done
name: Execute Workflowson:push:branches:- mainjobs:execute:runs-on: ubuntu-lateststeps:- name: Check out repository codeuses: actions/checkout@v3- name: Executeenv:PYDS_JAVA_GATEWAY_ADDRESS: <YOUR-STATIC-IP-RUN-DOLPHINSCHEDULER-API-SERVER>PYDS_JAVA_GATEWAY_PORT: <PORT-RUN-DOLPHINSCHEDULER-API-SERVER>PYDS_JAVA_GATEWAY_AUTH_TOKEN: ${{ secrets.YOUR-SECRET-NAME }}run: |for file in $(find . -name "*.py"); dopython "$file"done
看,不复杂吧?就像是在 GitHub Actions 中使用普通的环境变量。这就是我们从 GitHub Actions 部署工作流程所需要做的全部工作。
default_stages: [commit, push]default_language_version:# force all python hooks to run python3python: python3repos:# Python API Hooks- repo: https://github.com/pycqa/isortrev: 5.10.1hooks:- id: isortname: isort (python)- repo: https://github.com/psf/blackrev: 22.3.0hooks:- id: black- repo: https://github.com/pycqa/flake8rev: 4.0.1hooks:- id: flake8additional_dependencies: ['flake8-docstrings>=1.6','flake8-black>=0.2',]# pre-commit run in the root, so we have to point out the full path of configurationargs: [--config,.flake8]- repo: https://github.com/pycqa/autoflakerev: v1.4hooks:- id: autoflakeargs: [--remove-all-unused-imports,--ignore-init-module-imports,--in-place]
isort:自动对 Python 导入进行排序 black:自动格式化 Python 代码 autoflake:自动删除 pyflakes 报告未使用的导入和未使用的变量 flake8:检测其他代码和文档
name: Execute Workflowson:push:branches:- mainpull_request:jobs:lint:runs-on: ubuntu-lateststeps:- name: Check out repository codeuses: actions/checkout@v3- name: Install Dependenciesrun: |python -m pip install --upgrade pre-commit- name: lintrun: |pre-commit installpre-commit run --all-filesexecute:runs-on: ubuntu-latestif: github.event_name == 'push'needs: lintsteps:- name: Check out repository codeuses: actions/checkout@v3- name: Executeenv:PYDS_JAVA_GATEWAY_ADDRESS: <YOUR-STATIC-IP-RUN-DOLPHINSCHEDULER-API-SERVER>PYDS_JAVA_GATEWAY_PORT: <PORT-RUN-DOLPHINSCHEDULER-API-SERVER>PYDS_JAVA_GATEWAY_AUTH_TOKEN: ${{ secrets.YOUR-SECRET-NAME }}run: |for file in $(find . -name "*.py"); dopython "$file"done
有些人可能注意到,除了添加新 job 外,我们还在 `on` 下添加了 `pull_request` 节点,在 `execute` job 下添加了 `if` 节点。因为代码 lint 检查会测试 push 和 pull requests,但我们只想在有新提交到分支 main 时执行工作流。如果我们为 pull requests 创建执行工作流,即使 pull requests 未被访问或未准备好合并,每个 pull requests 提交也都会被执行并部署到我们的生产环境。所以,我们必须设置一个条件来执行工作流。
我们展示了什么是 DolphinScheduler 及其 Python API,GitHub Actions,如何通过 DolphinScheduler Python API 创建我们的第一个工作流,以及 GitHub Actions 中的第一个工作流。 演示了如何基于 GitHub Actions 创建 DolphinScheduler Python API 的 CI/CD。 最后,创建一个 GitHub Actions 来检测代码风格,自动检查我们的 DolphinScheduler Python API 的工作流代码。
参与贡献
随着国内开源的迅猛崛起,Apache DolphinScheduler 社区迎来蓬勃发展,为了做更好用、易用的调度,真诚欢迎热爱开源的伙伴加入到开源社区中来,为中国开源崛起献上一份自己的力量,让本土开源走向全球。

参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括:

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。
社区汇总了以下适合新手的问题列表:https://github.com/apache/dolphinscheduler/issues/5689
非新手问题列表:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22
如何参与贡献链接:https://dolphinscheduler.apache.org/zh-cn/community/development/contribute.html
来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的。
参与开源可以近距离与各路高手切磋,迅速提升自己的技能,如果您想参与贡献,我们有个贡献者种子孵化群,可以添加社区小助手微信(Leonard-ds) ,手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。

添加社区小助手微信(Leonard-ds)
添加小助手微信时请说明想参与贡献。
来吧,开源社区非常期待您的参与。
☞DolphinScheduler 登陆 AWS AMI 应用市场!
☞DolphinScheduler 机器学习工作流预测今年 FIFA 世界杯冠军大概率是荷兰!
☞手把手教你上手Apache DolphinScheduler机器学习工作流






