From c612e39c3d02ff510af619458afb9ffe61ce214f Mon Sep 17 00:00:00 2001 From: Vitalii Koshura Date: Tue, 20 Nov 2018 15:54:35 +0200 Subject: [PATCH] [AppVeyor] Deploy to Bintray Implementation Signed-off-by: Vitalii Koshura --- appveyor.yml | 3 ++ deploy/deploy_to_bintray.bat | 94 +++++++++++++++++++++++++++++++++++ deploy/prepare_deployment.bat | 35 ++++++++++--- 3 files changed, 125 insertions(+), 7 deletions(-) create mode 100644 deploy/deploy_to_bintray.bat diff --git a/appveyor.yml b/appveyor.yml index 2b324556ec..ff7a14a339 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -62,6 +62,8 @@ environment: solution_name: win_build\boinc_vs2013.sln depends_git_path: http://boinc.berkeley.edu/git/boinc_depends_win_vs2013.git depends_path: C:\projects\boinc_depends_win_vs2013 + BINTRAY_API_KEY: + secure: kZI9k0Kh2bFSCbXfkz+J16fGNAee1ToRMl10D8QPQsKpC2PqhF/uVMpd6gRC+OSI cache: - C:\projects\boinc_depends_win_vs2013 -> appveyor.yml, win_build\load_dependencies.bat @@ -75,6 +77,7 @@ build_script: after_build: - call deploy\prepare_deployment.bat + - call deploy\deploy_to_bintray.bat artifacts: - path: deploy\win-apps\*.7z diff --git a/deploy/deploy_to_bintray.bat b/deploy/deploy_to_bintray.bat new file mode 100644 index 0000000000..320bcbc9c6 --- /dev/null +++ b/deploy/deploy_to_bintray.bat @@ -0,0 +1,94 @@ +setlocal EnableDelayedExpansion +rem @echo off + +if not defined bintray_deploy ( + set bintray_deploy=False +) +if !bintray_deploy! == False ( + goto :EOF +) + +if not defined BINTRAY_API_KEY ( + goto :EOF +) +if [%BINTRAY_API_KEY%] == [] ( + goto :EOF +) + +set API=https://api.bintray.com +if not defined BINTRAY_USER ( + set BINTRAY_USER=ChristianBeer +) +if not defined BINTRAY_REPO ( + set BINTRAY_REPO=boinc-ci +) +rem owner and user not always the same +if not defined BINTRAY_REPO_OWNER ( + set BINTRAY_REPO_OWNER=boinc +) +if not defined WEBSITE_URL ( + set WEBSITE_URL=https://boinc.berkeley.edu +) +if not defined ISSUE_TRACKER_URL ( + set ISSUE_TRACKER_URL=https://github.com/BOINC/boinc/issues +) +rem Mandatory for packages in free Bintray repos +if not defined VCS_URL ( + set VCS_URL=https://github.com/BOINC/boinc.git +) +set CURL=curl -u%BINTRAY_USER%:%BINTRAY_API_KEY% -H Accept:application/json -w \n +rem use this for local debugging +rem set CURL=echo + +if not defined pkg_name ( + set pkg_name=custom +) +if not defined pkg_desc ( + set pkg_desc=Automated CI build of BOINC components +) + +echo Creating package %pkg_name%... +set data={\"name\": \"!pkg_name!\", \"desc\": \"!pkg_desc!\", \"desc_url\": \"auto\", \"website_url\": [\"%WEBSITE_URL%\"], \"vcs_url\": [\"%VCS_URL%\"], \"issue_tracker_url\": [\"%ISSUE_TRACKER_URL%\"], \"licenses\": [\"LGPL-3.0\"]} +%CURL% -H Content-Type:application/json -X POST -d "%data%" "%API%/packages/%BINTRAY_REPO_OWNER%/%BINTRAY_REPO%" + +for /f "tokens=2-4 delims=/ " %%a in ("%date%") do (set MM=%%a& set DD=%%b& set YYYY=%%c) +if not defined build_date ( + set build_date=%YYYY%-%MM%-%DD% +) +if not defined git_rev ( + set git_rev=%APPVEYOR_REPO_COMMIT:~0,8% +) +if not defined pkg_version ( + set pkg_version=custom_%build_date%_!git_rev! +) +if not defined pkg_version_desc ( + set pkg_version_desc=Custom build created on %build_date% +) + +echo Creating version !pkg_version!... +set data={\"name\": \"!pkg_version!\", \"desc\": \"!pkg_version_desc!\"} +%CURL% -H Content-Type:application/json -X POST -d "%data%" "%API%/packages/%BINTRAY_REPO_OWNER%/%BINTRAY_REPO%/!pkg_name!/versions" + +if exist "deploy\win-apps\win-apps_!pkg_version!.7z" ( + echo Uploading and publishing "deploy\win-apps\win-apps_!pkg_version!.7z" + %CURL% -H Content-Type:application/octet-stream -T "deploy\win-apps\win-apps_!pkg_version!.7z" "%API%/content/%BINTRAY_REPO_OWNER%/%BINTRAY_REPO%/!pkg_name!/!pkg_version!/win-apps_!pkg_version!.7z?publish=1&override=1" +) + +if exist "deploy\win-client\win-client_!pkg_version!.7z" ( + echo Uploading and publishing "deploy\win-client\win-client_!pkg_version!.7z" + %CURL% -H Content-Type:application/octet-stream -T "deploy\win-client\win-client_!pkg_version!.7z" "%API%/content/%BINTRAY_REPO_OWNER%/%BINTRAY_REPO%/!pkg_name!/!pkg_version!/win-client_!pkg_version!.7z?publish=1&override=1" +) + +if exist "deploy\win-manager\win-manager_!pkg_version!.7z" ( + echo Uploading and publishing "deploy\win-manager\win-manager_!pkg_version!.7z" + %CURL% -H Content-Type:application/octet-stream -T "deploy\win-manager\win-manager_!pkg_version!.7z" "%API%/content/%BINTRAY_REPO_OWNER%/%BINTRAY_REPO%/!pkg_name!/!pkg_version!/win-manager_!pkg_version!.7z?publish=1&override=1" +) + +rem if defined APPVEYOR_JOB_ID ( +rem echo Adding AppVeyor log to release notes... +rem set BUILD_LOG=https://ci.appveyor.com/api/buildjobs/%APPVEYOR_JOB_ID%/log +rem set data='{"bintray": {"syntax": "markdown", "content": "'%BUILD_LOG%'"}}' +rem %CURL% -H Content-Type:application/json -X POST -d "%data%" "%API%/packages/%BINTRAY_REPO_OWNER%/%BINTRAY_REPO%/!pkg_name!/versions/!pkg_version!/release_notes" +rem ) + +:EOF diff --git a/deploy/prepare_deployment.bat b/deploy/prepare_deployment.bat index a469e3be43..de576a7a50 100644 --- a/deploy/prepare_deployment.bat +++ b/deploy/prepare_deployment.bat @@ -1,24 +1,27 @@ +setlocal EnableDelayedExpansion rem @echo off set bintray_deploy=False for /f "tokens=2-4 delims=/ " %%a in ("%date%") do (set MM=%%a& set DD=%%b& set YYYY=%%c) set build_date=%YYYY%-%MM%-%DD% -set git_rev=%APPVEYOR_REPO_COMMIT:~0,8% rem Default values because %bintray_deploy% is currently unused set pkg_name=master set git_rev=%APPVEYOR_REPO_COMMIT:~0,8% -set pkg_version=master_%build_date%_%git_rev% +set pkg_version=master_%build_date%_!git_rev! +set pkg_version_desc=Custom build created on %build_date% if defined APPVEYOR_PULL_REQUEST_NUMBER ( set pkg_name=pull-requests set git_rev=%APPVEYOR_PULL_REQUEST_HEAD_COMMIT:~0,8% - set pkg_version=PR%APPVEYOR_PULL_REQUEST_NUMBER%_%build_date%_%git_rev% + set pkg_version=PR%APPVEYOR_PULL_REQUEST_NUMBER%_%build_date%_!git_rev! + set pkg_version_desc=CI build created from PR #%APPVEYOR_PULL_REQUEST_NUMBER% on %build_date% set bintray_deploy=True ) if defined APPVEYOR_SCHEDULED_BUILD ( if "%APPVEYOR_SCHEDULED_BUILD%" == "True" ( set pkg_name=weekly - set pkg_version=weekly_%build_date%_%git_rev% + set pkg_version=weekly_%build_date%_!git_rev! + set pkg_version_desc=Weekly CI build created on %build_date% set bintray_deploy=True ) ) @@ -35,7 +38,7 @@ copy "win_build\Build\%platform%\%configuration%\example_app.exe" "deploy\win-ap copy "win_build\Build\%platform%\%configuration%\worker.exe" "deploy\win-apps\" copy "win_build\Build\%platform%\%configuration%\sleeper.exe" "deploy\win-apps\" cd deploy\win-apps -7z a win-apps_%pkg_version%.7z *.exe +7z a win-apps_!pkg_version!.7z *.exe cd ..\.. if not exist "deploy\win-client" mkdir deploy\win-client @@ -45,12 +48,30 @@ copy "win_build\Build\%platform%\%configuration%\boinccmd.exe" "deploy\win-clien copy "win_build\Build\%platform%\%configuration%\boincscr.exe" "deploy\win-client\" copy "win_build\Build\%platform%\%configuration%\boinc.scr" "deploy\win-client\" cd deploy\win-client -7z a win-client_%pkg_version%.7z *.exe *.scr +7z a win-client_!pkg_version!.7z *.exe *.scr cd ..\.. if not exist "deploy\win-manager" mkdir deploy\win-manager copy "win_build\Build\%platform%\%configuration%\boinctray.exe" "deploy\win-manager\" copy "win_build\Build\%platform%\%configuration%\boincmgr.exe" "deploy\win-manager\" cd deploy\win-manager -7z a win-manager_%pkg_version%.7z *.exe +7z a win-manager_!pkg_version!.7z *.exe cd ..\.. + +rem setlocal mode is very 'interesting' +rem see https://stackoverflow.com/questions/33898076/passing-variable-out-of-setlocal-code for details + +( + endlocal + set "bintray_deploy=%bintray_deploy%" + set "pkg_name=%pkg_name%" + set "git_rev=%git_rev%" + set "pkg_version=%pkg_version%" + set "pkg_version_desc=%pkg_version_desc%" +) + +set bintray_deploy +set pkg_name +set git_rev +set pkg_version +set pkg_version_desc