diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..971e5f9 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,19 @@ +pipeline { + agent any + + stages { + stage('Build') { + steps { + sh 'export PLATFORMIO_PATH=/root/.platformio/penv/bin/platformio' + sh 'python gen_release.py' + } + } + stage('Publish') { + steps { + sh 'mkdir -p artifacts' + sh 'cp -r release/ artifacts/' + archiveArtifacts artifacts: 'artifacts/**/*', fingerprint: true + } + } + } +} diff --git a/gen_release.py b/gen_release.py index 5e91300..0791e79 100644 --- a/gen_release.py +++ b/gen_release.py @@ -22,8 +22,16 @@ firmware_folder = os.path.join(current_dir, 'firmware') # Define the path to the release folder release_folder = os.path.join(current_dir, 'release') -# Add the path to the PlatformIO executable to the system PATH -platformio_path = os.path.expanduser('~/.platformio/penv/Scripts') +# Get the platformio path from environment variable +platformio_path = os.environ.get('PLATFORMIO_PATH') +# If the environment variable is not set, use the default path +if platformio_path is None: + if platform.system() == 'Darwin': + platformio_path = os.path.expanduser('~/.platformio/penv/bin/platformio') + elif platform.system() == 'Windows': + platformio_path = os.path.expanduser('~/.platformio/penv/Scripts/platformio.exe') + elif platform.system() == 'Linux': + platformio_path = os.path.expanduser('~/.platformio/penv/bin/platformio') if os.path.exists(release_folder): # If the release folder exists, delete it @@ -79,11 +87,11 @@ for environment in environments: # if argument is not supplied, build all environments listed in platformio.ini if len(sys.argv) == 1: - subprocess.run([f'{platformio_path}/platformio.exe', 'run','-c',f'{firmware_folder}/platformio.ini'], cwd=current_dir) + subprocess.run([f'{platformio_path}', 'run','-c',f'{firmware_folder}/platformio.ini'], cwd=current_dir) for environment in environments: if(len(sys.argv) > 1): - subprocess.run([f'{platformio_path}/platformio.exe', 'run', '-e', environment,'-c',f'{firmware_folder}/platformio.ini'], cwd=current_dir) + subprocess.run([f'{platformio_path}', 'run', '-e', environment,'-c',f'{firmware_folder}/platformio.ini'], cwd=current_dir) # Iterate over the subfolders in the firmware folder for subfolder in os.listdir(firmware_folder):