1+ name : Release on GitHub
2+
3+
4+ # # Run only when we push a tag. See "docs/release.md" instructions
5+ on :
6+ push :
7+ tags :
8+ - " test*"
9+
10+ env :
11+ evomaster-version : 5.2.1
12+ jdk-jar : 17
13+ jdk-jpackage : 21
14+ java-distribution : temurin
15+ retention-days : 1
16+
17+
18+ jobs :
19+
20+ build-base :
21+ runs-on : ubuntu-latest
22+ steps :
23+ - uses : actions/checkout@v4
24+ - name : Setup JDK ${{env.jdk-jar}}
25+ uses : actions/setup-java@v5
26+ with :
27+ java-version : ${{env.jdk-jar}}
28+ distribution : ${{env.java-distribution}}
29+ - name : Cache Maven packages
30+ uses : actions/cache@v3
31+ with :
32+ path : ~/.m2
33+ key : ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
34+ restore-keys : ${{ runner.os }}-m2
35+ - name : Build with Maven
36+ # Don't run any test, as build should had already been verified (and it takes hours...)
37+ run : mvn clean verify -DskipTests
38+ env :
39+ CI_env : GithubAction
40+ - name : Upload evomaster.jar
41+ uses : actions/upload-artifact@v4
42+ with :
43+ name : evomaster.jar
44+ path : core/target/evomaster.jar
45+ retention-days : ${{env.retention-days}}
46+ if-no-files-found : error
47+
48+ # #########################################################
49+ build-app-image :
50+ name : Build app-image on ${{ matrix.os }}
51+ runs-on : ${{ matrix.os }}
52+
53+ strategy :
54+ matrix :
55+ os : [ubuntu-latest, macos-latest, macos-13, windows-latest]
56+
57+ steps :
58+ - uses : actions/checkout@v4
59+
60+ - name : Setup JDK ${{env.jdk-jpackage}}
61+ uses : actions/setup-java@v5
62+ with :
63+ java-version : ${{env.jdk-jpackage}}
64+ distribution : ${{env.java-distribution}}
65+
66+ - name : Set up Python
67+ uses : actions/setup-python@v5
68+ with :
69+ python-version : " 3.10"
70+
71+ - name : Download fat jar
72+ uses : actions/download-artifact@v4
73+ with :
74+ name : evomaster.jar
75+ path : core/target
76+
77+ - name : Build app-image
78+ shell : bash
79+ run : |
80+ if [ "${{ runner.os }}" = "Windows" ]; then
81+ bash makeExecutable.sh APPWIN
82+ else
83+ bash makeExecutable.sh APP
84+ fi
85+
86+ - name : Install cibuildwheel
87+ run : python -m pip install cibuildwheel
88+
89+ - name : Build Python Wheel
90+ working-directory : ./pypi-distribution
91+ run : |
92+ rm -fr dist
93+ python -m cibuildwheel --output-dir dist
94+
95+ - uses : actions/upload-artifact@v4
96+ with :
97+ name : wheel-${{ matrix.os }}
98+ path : dist/*.whl
99+
100+ publish :
101+ needs : build-base
102+ runs-on : ubuntu-latest
103+
104+ defaults :
105+ run :
106+ working-directory : ./pypi-distribution
107+
108+ steps :
109+ - uses : actions/download-artifact@v4
110+
111+ - name : Collect wheels
112+ run : |
113+ mkdir dist
114+ cp wheel-*/*.whl dist/
115+
116+ - name : Publish to PyPI
117+ uses : pypa/gh-action-pypi-publish@v1
118+ with :
119+ password : ${{ secrets.PYPI_API_TOKEN }}
0 commit comments