forked from jk_yinzy/cicd-test
70 lines
2.0 KiB
YAML
70 lines
2.0 KiB
YAML
kind: pipeline
|
||
type: docker
|
||
name: multi-lang-ci
|
||
|
||
trigger:
|
||
event:
|
||
- push
|
||
- pull_request
|
||
branch:
|
||
- main
|
||
|
||
# 克隆策略:只拉最新 commit,加速
|
||
clone:
|
||
depth: 0
|
||
image: drone/git:latest
|
||
pull: false
|
||
|
||
steps:
|
||
# 自动检测是否存在 Java (pom.xml)
|
||
- name: java-build
|
||
image: maven:3.9-eclipse-temurin
|
||
pull: false
|
||
environment:
|
||
MAVEN_OPTS: -Dmaven.repo.local=.m2/repository
|
||
commands:
|
||
# 先创建 .m2 目录
|
||
- mkdir -p ~/.m2
|
||
# 动态生成 settings.xml(仅用于 CI)
|
||
- |
|
||
cat > ~/.m2/settings.xml << 'EOF'
|
||
<?xml version="1.0" encoding="UTF-8"?>
|
||
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
|
||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
|
||
<mirrors>
|
||
<mirror>
|
||
<id>aliyun</id>
|
||
<mirrorOf>*</mirrorOf>
|
||
<name>Aliyun Maven</name>
|
||
<url>https://maven.aliyun.com/repository/public</url>
|
||
</mirror>
|
||
</mirrors>
|
||
</settings>
|
||
EOF
|
||
- mvn clean verify
|
||
- if [ -f pom.xml ]; then mvn clean compile; fi
|
||
when:
|
||
event: [ push, pull_request ]
|
||
|
||
# 自动检测是否存在 Python (requirements.txt)
|
||
- name: python-test
|
||
image: python:3.12.0-slim
|
||
pull: false
|
||
commands:
|
||
# 临时设置 pip 源(仅本次会话)
|
||
- pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/
|
||
- pip config set install.trusted-host pypi.tuna.tsinghua.edu.cn
|
||
- if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
|
||
- if [ -f test_example.py ]; then python -m pytest test_example.py -v; fi
|
||
when:
|
||
event: [ push, pull_request ]
|
||
|
||
# 最终报告(无论成功失败都运行)
|
||
- name: summary
|
||
image: alpine
|
||
pull: false
|
||
commands:
|
||
- echo "✅ CI completed at $(date)"
|
||
when:
|
||
status: [ success, failure ] |