[CI] replace Travis and AppVeyor with Github Actions

This consolidates the different CI builds on one platform that provides support for the major three operating systems we build on (Linux, Windows, MacOS). The nomenclature and syntax is a bit different but it has the same functionality.
This commit introduces the Linux and Windows based workflows. All the build artifacts can now be downloaded from [bintray](https://bintray.com/beta/#/boinc/boinc-ci?tab=files). The CI workflows run for every pull request, every merge into the master branch and every Sunday around 12:00 (GMT).
Every first Sunday in a month a cleanup Script is run to delete old artifacts from Bintray. Artifacts from closed/merged pull requests get deleted then. Artifacts from weekly builds and merges into the master branch older than 6 months get deleted too.

Co-authored-by: Vitalii Koshura <lestat.de.lionkur@gmail.com>
This commit is contained in:
Christian Beer 2020-12-23 12:31:16 +01:00
parent 89fa2cf080
commit ebc507e082
12 changed files with 390 additions and 362 deletions

47
.github/workflows/android.yml vendored Normal file
View File

@ -0,0 +1,47 @@
name: Android
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
schedule:
- cron: '5 12 * * 0'
jobs:
build:
name: ${{ matrix.type }}-build
runs-on: ubuntu-latest
strategy:
matrix:
type: [manager]
fail-fast: false
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.9
uses: actions/setup-java@v1
with:
java-version: 1.9
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: Cache dependencies
uses: actions/cache@v2.1.3
with:
path: 3rdParty/buildCache
key: android-${{ matrix.type }}-${{ hashFiles('android/*.sh') }}
restore-keys: android-${{ matrix.type }}-
- name: Build
run: |
./android/ci_build_all.sh
bash <(curl -s https://codecov.io/bash)
- name: Deploy to BinTray
if: ${{ success() }}
env:
BINTRAY_API_KEY: ${{ secrets.BINTRAY_API_KEY }}
PULL_REQUEST: ${{ github.event.number }}
PULL_REQUEST_SHA: ${{ github.event.pull_request.head.sha }}
run: ./deploy/prepare_deployment.sh android_${{ matrix.type }} && ./deploy/deploy_to_bintray.sh deploy/android_${{ matrix.type }}/

90
.github/workflows/linux.yml vendored Normal file
View File

@ -0,0 +1,90 @@
name: Linux
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
schedule:
- cron: '10 12 * * 0'
jobs:
build:
name: ${{ matrix.type }}-build
runs-on: ubuntu-latest
strategy:
matrix:
type: [libs, server, client, apps, manager-with-webview, manager-without-webview, unit-test, integration-test]
fail-fast: false
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: |
sudo apt-get -qq update
sudo apt-get install -y freeglut3-dev libcurl4-openssl-dev libxmu-dev libxi-dev libfcgi-dev libxss-dev libnotify-dev libxcb-util0-dev libgtk2.0-dev libwebkitgtk-dev p7zip-full
- name: Install dependencies for integration testing
if: matrix.type == 'integration-test'
run: |
sudo apt-get install ansible
sudo service mysql stop
./integration_test/installTestSuite.sh
- name: Cache dependencies
uses: actions/cache@v2.1.3
with:
path: 3rdParty/buildCache
key: linux-${{ matrix.type }}-${{ hashFiles('3rdParty/*Linux*.sh') }}
restore-keys: linux-${{ matrix.type }}-
- name: Automake
if: ${{ success() }}
run: ./_autosetup
- name: Configure libs
if: ${{ success() && matrix.type == 'libs' }}
run: ./configure --disable-server --disable-client --disable-manager
- name: Configure server
if: ${{ success() && matrix.type == 'server' }}
run: ./configure --enable-server --disable-client --disable-manager
- name: Configure client
if: ${{ success() && matrix.type == 'client' }}
run: ./configure --disable-server --enable-client --disable-manager
- name: Configure apps
if: success() && matrix.type == 'apps'
run: ./configure --enable-apps --disable-server --disable-client --disable-manager
- name: Configure manager with webview
if: success() && matrix.type == 'manager-with-webview'
run: ./3rdParty/buildLinuxDependencies.sh && ./configure --disable-server --disable-client --with-wx-prefix=${GITHUB_WORKSPACE}/3rdParty/buildCache/linux
- name: Configure manager without webview
if: success() && matrix.type == 'manager-without-webview'
run: ./3rdParty/buildLinuxDependencies.sh --disable-webview && ./configure --disable-server --disable-client --with-wx-prefix=${GITHUB_WORKSPACE}/3rdParty/buildCache/linux
- name: Configure server for unit testing
if: success() && matrix.type == 'unit-test'
run: ./3rdParty/buildLinuxDependencies.sh --gtest-only && ./configure --disable-client --disable-manager --enable-unit-tests CFLAGS="-g -O0" CXXFLAGS="-g -O0"
- name: Make
if: success() && ! contains(matrix.type, 'integration-test')
run: make
- name: Execute unit-test and report coverage
if: success() && matrix.type == 'unit-test'
run: ./tests/executeUnitTests.sh --report-coverage
- name: Execute integration-test
if: success() && matrix.type == 'integration-test'
run: ./integration_test/executeTestSuite.sh
- name: Deploy to BinTray
if: ${{ success() && ! contains(matrix.type, 'libs') && ! contains(matrix.type, 'server') && ! contains(matrix.type, 'test') }}
env:
BINTRAY_API_KEY: ${{ secrets.BINTRAY_API_KEY }}
PULL_REQUEST: ${{ github.event.number }}
PULL_REQUEST_SHA: ${{ github.event.pull_request.head.sha }}
run: ./deploy/prepare_deployment.sh linux_${{ matrix.type }} && ./deploy/deploy_to_bintray.sh deploy/linux_${{ matrix.type }}/

40
.github/workflows/mingw.yml vendored Normal file
View File

@ -0,0 +1,40 @@
name: Linux-MinGW
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
schedule:
- cron: '0 12 * * 0'
jobs:
build:
name: ${{ matrix.type }}-build
runs-on: ubuntu-latest
strategy:
matrix:
type: [libs-mingw, apps-mingw]
fail-fast: false
steps:
- uses: actions/checkout@v2
- name: Install dependencies
run: |
sudo apt-get -qq update
sudo apt-get install -y mingw-w64 binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 gcc-mingw-w64 gcc-mingw-w64-i686 gcc-mingw-w64-x86-64 g++-mingw-w64 g++-mingw-w64-i686 g++-mingw-w64-x86-64 p7zip-full
- name: Make libs with mingw
if: success() && matrix.type == 'libs-mingw'
run: cd lib && MINGW=x86_64-w64-mingw32 make -f Makefile.mingw
- name: Make apps with mingw
if: success() && matrix.type == 'apps-mingw'
run: cd lib && MINGW=x86_64-w64-mingw32 make -f Makefile.mingw wrapper
- name: Deploy to BinTray
if: ${{ success() && ! contains(matrix.type, 'libs-mingw') }}
env:
BINTRAY_API_KEY: ${{ secrets.BINTRAY_API_KEY }}
PULL_REQUEST: ${{ github.event.number }}
PULL_REQUEST_SHA: ${{ github.event.pull_request.head.sha }}
run: ./deploy/prepare_deployment.sh win_${{ matrix.type }} && ./deploy/deploy_to_bintray.sh deploy/win_${{ matrix.type }}/

72
.github/workflows/windows.yml vendored Normal file
View File

@ -0,0 +1,72 @@
name: Windows
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
schedule:
- cron: '15 12 * * 0'
jobs:
build:
name: ${{ matrix.configuration }}-${{ matrix.platform }}-build
runs-on: windows-latest
strategy:
matrix:
platform: [x64]
configuration: [Release]
env:
VCPKG_BINARY_SOURCES: 'clear;files,${{ github.workspace }}\3rdParty\buildCache\windows\vcpkgcache\,readwrite'
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- name: Download GoogleTestAdapter
uses: suisei-cn/actions-download-file@v1
id: DownloadGoogleTestAdapter
with:
url: "https://github.com/csoltenborn/GoogleTestAdapter/releases/download/v0.18.0/GoogleTestAdapter-0.18.0.vsix"
target: ${{ github.workspace }}\temp\
- name: Unzip GoogleTestAdapter
uses: DuckSoft/extract-7z-action@v1.0
with:
pathSource: ${{ github.workspace }}\temp\GoogleTestAdapter-0.18.0.vsix
pathTarget: ${{ github.workspace }}\temp\GoogleTestAdapter
- name: Setup msbuild
uses: microsoft/setup-msbuild@v1
- name: Setup vstest
uses: darenm/Setup-VSTest@v1
- name: Fix vcpkg
run: vcpkg.exe integrate remove
- name: Cache dependencies
uses: actions/cache@v2.1.3
with:
path: |
${{ github.workspace }}\3rdParty\buildCache\windows\vcpkgcache\
${{ github.workspace }}\3rdParty\Windows\cuda\
key: windows-${{ matrix.platform }}-${{ matrix.configuration }}-${{ hashFiles('win_build/vcpkg_3rdparty_dependencies_vs2019.vcxproj') }}
restore-keys: windows-${{ matrix.platform }}-${{ matrix.configuration }}-
- name: Build
run: msbuild win_build\boinc_vs2019.sln -p:Configuration=${{ matrix.configuration }} -p:Platform=${{ matrix.platform }} -p:VcpkgTripletConfig=ci -m
- name: Run tests
run: vstest.console.exe win_build\Build\${{ matrix.platform }}\${{ matrix.configuration }}\unittests.exe /TestAdapterPath:${{ github.workspace }}\temp\GoogleTestAdapter
- name: Deploy to BinTray
if: ${{ success() }}
env:
BINTRAY_API_KEY: ${{ secrets.BINTRAY_API_KEY }}
PULL_REQUEST: ${{ github.event.number }}
PULL_REQUEST_SHA: ${{ github.event.pull_request.head.sha }}
platform: ${{ matrix.platform }}
configuration: ${{ matrix.configuration }}
shell: cmd
run: |
call deploy\prepare_deployment.bat
call deploy\deploy_to_bintray.bat

View File

@ -1,89 +0,0 @@
language: cpp
os: linux
compiler:
- gcc
branches:
only:
- master
- coverity_scan
dist: xenial
jdk:
- oraclejdk9
cache:
timeout: 600
directories:
- 3rdParty/buildCache
addons:
coverity_scan:
project:
name: "BOINC/boinc"
description: "Build submitted via Travis CI"
notification_email: christian.beer@posteo.de
build_command_prepend: "./configure --enable-apps"
build_command: "make -j 4"
branch_pattern: coverity_scan
env:
global:
# secret API keys for Coverity and bintray
- secure: "Rd++Hyurnwd/tvjH0PX2seO3QUZ6WOf8bSB2ZkKPfZCU6+tXVMvloyog6Mlc7vl0m3WFAzw24MDtNLFBUktRsVXOkqDup1s6PdkwwcwG+5wAnydN+kXF9PcqKyOi0xJvl48Wji+r92Y9SCLzPnQGjZg70xHET22bDZHt2FsjP80="
- secure: dYJhIQi9mB00HsyjNEbyyeh7ChHxbg9o6dkBvub/4dRwJKN+KAReU7yHshUTpHI+Nn4TdCjpwHcDMDOklRTSeUFz79jGEmCVqvnz0DynZFroryX3rdAnc/kW4QkupgLZk4JKCN0JRPOM/j9RS2zLxkqrDc7gibF7BNgIhu1jUXk=
jobs:
- BOINC_TYPE=libs
- BOINC_TYPE=server
- BOINC_TYPE=client
- BOINC_TYPE=apps
- BOINC_TYPE=manager
- BOINC_TYPE=libs-mingw
- BOINC_TYPE=apps-mingw
- BOINC_TYPE=unit-test
jobs:
fast_finish: true
include:
- language: php
os: linux
php: 7.0
env:
- BOINC_TYPE=integration-test
- language: cpp
os: osx
env: BOINC_TYPE=manager-osx
- language: android
android:
components:
- build-tools-29.0.3
- android-29
- extra-google-m2repository
- extra-android-m2repository
env: BOINC_TYPE=manager-android
before_install:
- if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then ( sudo apt-get -qq update ) fi
- if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then ( sudo apt-get install -y freeglut3-dev libxmu-dev libxi-dev libfcgi-dev libxss-dev libnotify-dev libxcb-util0-dev libgtk2.0-dev libwebkitgtk-dev mingw-w64 binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 gcc-mingw-w64 gcc-mingw-w64-i686 gcc-mingw-w64-x86-64 g++-mingw-w64 g++-mingw-w64-i686 g++-mingw-w64-x86-64 realpath p7zip-full ) fi
- if [[ "${BOINC_TYPE}" == "integration-test" ]]; then ( sudo apt-get install ansible/xenial-backports; sudo service mysql stop; ) fi
before_script:
- if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then ( ./_autosetup ) fi
- if [[ "${BOINC_TYPE}" == "integration-test" ]]; then ( ./integration_test/installTestSuite.sh ) fi
script:
- if [[ "${BOINC_TYPE}" == "libs" ]]; then ( ./configure --disable-server --disable-client --disable-manager && make ) fi
- if [[ "${BOINC_TYPE}" == "server" ]]; then ( ./configure --disable-client --disable-manager && make ) fi
- if [[ "${BOINC_TYPE}" == "client" ]]; then ( ./configure --disable-server --disable-manager && make ) fi
- if [[ "${BOINC_TYPE}" == "apps" ]]; then ( ./configure --enable-apps --disable-server --disable-client --disable-manager && make ) fi
- if [[ "${BOINC_TYPE}" == "manager" && "${TRAVIS_OS_NAME}" == "linux" ]]; then ( ./3rdParty/buildLinuxDependencies.sh && ./configure --disable-server --disable-client --with-wx-prefix=${TRAVIS_BUILD_DIR}/3rdParty/buildCache/linux && make ) fi
- if [[ "${BOINC_TYPE}" == "manager" && "${TRAVIS_OS_NAME}" == "linux" ]]; then ( make distclean && ./3rdParty/buildLinuxDependencies.sh --disable-webview --cache_dir ${TRAVIS_BUILD_DIR}/3rdParty/buildCache/linux2 && ./configure --disable-server --disable-client --with-wx-prefix=${TRAVIS_BUILD_DIR}/3rdParty/buildCache/linux2 && make ) fi
- if [[ "${BOINC_TYPE}" == "libs-mingw" ]]; then ( cd lib && MINGW=x86_64-w64-mingw32 make -f Makefile.mingw ) fi
- if [[ "${BOINC_TYPE}" == "apps-mingw" ]]; then ( cd lib && MINGW=x86_64-w64-mingw32 make -f Makefile.mingw wrapper ) fi
- if [[ "${BOINC_TYPE}" == "manager-osx" ]]; then ( ./3rdParty/buildMacDependencies.sh -q && ./mac_build/buildMacBOINC-CI.sh --no_shared_headers ) fi
- if [[ "${BOINC_TYPE}" == "manager-android" ]]; then ( cd android && ./travis_build_all.sh && cd BOINC && ./gradlew clean assemble jacocoTestReportDebug && bash <(curl -s https://codecov.io/bash) && cd ../../ ) fi
- if [[ "${BOINC_TYPE}" == "unit-test" ]]; then ( ./3rdParty/buildLinuxDependencies.sh --gtest-only && ./configure --disable-client --disable-manager --enable-unit-tests CFLAGS="-g -O0" CXXFLAGS="-g -O0" && make && ./tests/executeUnitTests.sh --report-coverage ) fi
- if [[ "${BOINC_TYPE}" == "integration-test" ]]; then ( ./integration_test/executeTestSuite.sh ) fi
after_success:
- ./deploy/prepare_deployment.sh ${BOINC_TYPE} deploy/${BOINC_TYPE}/ && ./deploy/deploy_to_bintray.sh deploy/${BOINC_TYPE}/

View File

@ -1,6 +1,6 @@
# Status
[![Build Status](https://travis-ci.org/BOINC/boinc.svg?branch=master)](https://travis-ci.org/BOINC/boinc) [![Build status](https://ci.appveyor.com/api/projects/status/9dgoc9h5ppos8vcy/branch/master?svg=true)](https://ci.appveyor.com/project/BOINC/boinc/branch/master) [![Coverity Scan Build Status](https://scan.coverity.com/projects/4226/badge.svg)](https://scan.coverity.com/projects/boinc-boinc) [![codecov](https://codecov.io/gh/BOINC/boinc/branch/master/graph/badge.svg)](https://codecov.io/gh/BOINC/boinc) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/BOINC/boinc/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/BOINC/boinc/?branch=master)
![Build Status](https://github.com/BOINC/boinc/workflows/Linux/badge.svg) ![Build Status](https://github.com/BOINC/boinc/workflows/Windows/badge.svg) ![Build Status](https://github.com/BOINC/boinc/workflows/Android/badge.svg) ![Build Status](https://github.com/BOINC/boinc/workflows/Linux-MinGW/badge.svg) [![Coverity Scan Build Status](https://scan.coverity.com/projects/4226/badge.svg)](https://scan.coverity.com/projects/boinc-boinc) [![codecov](https://codecov.io/gh/BOINC/boinc/branch/master/graph/badge.svg)](https://codecov.io/gh/BOINC/boinc) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/BOINC/boinc/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/BOINC/boinc/?branch=master)
# Social

View File

@ -7,9 +7,27 @@ set -e
# Script to compile everything BOINC needs for Android
# check working directory because the script needs to be called like: ./android/ci_build_all.sh
if [ ! -d "android" ]; then
echo "start this script in the source root directory"
exit 1
fi
cd android
echo '===== BOINC Client for all platforms build start ====='
./buildAndroidBOINC-CI.sh --cache_dir "$ANDROID_TC" --build_dir "$BUILD_DIR" --silent --ci --arch arm
./buildAndroidBOINC-CI.sh --cache_dir "$ANDROID_TC" --build_dir "$BUILD_DIR" --silent --ci --arch arm64
./buildAndroidBOINC-CI.sh --cache_dir "$ANDROID_TC" --build_dir "$BUILD_DIR" --silent --ci --arch x86
./buildAndroidBOINC-CI.sh --cache_dir "$ANDROID_TC" --build_dir "$BUILD_DIR" --silent --ci --arch x86_64
echo '===== BOINC for all platforms build done ====='
echo '===== BOINC Client for all platforms build done ====='
cd BOINC
echo '===== BOINC Manager build start ====='
./gradlew clean assemble jacocoTestReportDebug
echo '===== BOINC Manager build done ====='

View File

@ -1,129 +0,0 @@
# NOTE: settings in this file have precedence over settings on the website
image:
- Visual Studio 2013
- Visual Studio 2019
matrix:
fast_finish: true
exclude:
- platform: x64
TOOLCHAIN_VERSION: 10.0
- platform: Win32
TOOLCHAIN_VERSION: 10.0
image: Visual Studio 2019
- TOOLCHAIN_VERSION: 12.0
image: Visual Studio 2019
- platform: Win32
TOOLCHAIN_VERSION: 16.0
- platform: x64
TOOLCHAIN_VERSION: 16.0
image: Visual Studio 2013
platform:
- Win32
- x64
pull_requests:
do_not_increment_build_number: true
notifications:
- provider: Email
to:
- boinc_cvs@ssl.berkeley.edu
on_build_success: false
on_build_failure: true
on_build_status_changed: true
branches:
only:
- master
skip_tags: true
skip_commits:
files:
- .github/
- 3rdParty/*.sh
- android/
- client/android/
- client/os2/
- client/scripts/
- clientgui/gtk/
- clientgui/mac/
- clientgui/skins/
- db/
- doc/
- drupal/
- html/
- integration_test
- lib/mac/
- locale/
- m4/
- mac_build/
- mac_installer/
- packages/
- py/
- stripchart/
- tests/
- tools/
- vda/
- xcompile/
configuration:
- Release
environment:
matrix:
- TOOLCHAIN_VERSION: 10.0
solution_name: win_build\boinc_vs2010.sln
depends_zip_path: https://boinc.berkeley.edu/dl/boinc_depends/boinc_depends_win_vs2010.zip
depends_path: C:\projects\boinc_depends_win_vs2010
- TOOLCHAIN_VERSION: 12.0
solution_name: win_build\boinc_vs2013.sln
depends_zip_path: https://boinc.berkeley.edu/dl/boinc_depends/boinc_depends_win_vs2013.zip
depends_path: C:\projects\boinc_depends_win_vs2013
- TOOLCHAIN_VERSION: 16.0
solution_name: win_build\boinc_vs2019.sln
BINTRAY_API_KEY:
secure: kZI9k0Kh2bFSCbXfkz+J16fGNAee1ToRMl10D8QPQsKpC2PqhF/uVMpd6gRC+OSI
APPVEYOR_CACHE_ENTRY_ZIP_ARGS: "-t7z -m0=lzma2 -mx=9 -ms=on"
cache:
- C:\projects\boinc_depends_win_vs2010 -> appveyor.yml, win_build\load_dependencies.bat
- C:\projects\boinc_depends_win_vs2013 -> appveyor.yml, win_build\load_dependencies.bat
- '%LOCALAPPDATA%\vcpkg\archives -> appveyor.yml'
before_build:
- if %TOOLCHAIN_VERSION%==10.0 call win_build\load_dependencies.bat %depends_zip_path% %depends_path% %platform% %configuration%
- if %TOOLCHAIN_VERSION%==12.0 call win_build\load_dependencies.bat %depends_zip_path% %depends_path% %platform% %configuration%
- if %TOOLCHAIN_VERSION%==10.0 call "%VS100COMNTOOLS%\vsvars32.bat"
- if %TOOLCHAIN_VERSION%==10.0 call git apply boinc_vs2010.sln.ci.patch
- if %TOOLCHAIN_VERSION%==12.0 call "%VS120COMNTOOLS%\vsvars32.bat"
- if %TOOLCHAIN_VERSION%==12.0 call rmdir /S /Q %localappdata%\Microsoft\VisualStudio\%TOOLCHAIN_VERSION%\ComponentModelCache
- if %TOOLCHAIN_VERSION%==16.0 call "C:\Tools\vcpkg\vcpkg.exe" integrate remove
- if %TOOLCHAIN_VERSION%==16.0 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\vsdevcmd.bat"
build_script:
- msbuild %solution_name% /p:Configuration=%configuration%;Platform=%platform%;VcpkgTripletConfig=ci -m
after_build:
- if %TOOLCHAIN_VERSION%==12.0 call deploy\prepare_deployment.bat
- if %TOOLCHAIN_VERSION%==12.0 call deploy\deploy_to_bintray.bat
artifacts:
- path: deploy\win-apps\*.7z
name: win-apps
- path: deploy\win-client\*.7z
name: win-client
- path: deploy\win-manager\*.7z
name: win-manager
before_test:
- if %TOOLCHAIN_VERSION%==16.0 curl -fsSL https://github.com/csoltenborn/GoogleTestAdapter/releases/download/v0.18.0/GoogleTestAdapter-0.18.0.vsix -o C:\projects\GoogleTestAdapter.zip
- if %TOOLCHAIN_VERSION%==16.0 call 7z.exe x C:\projects\GoogleTestAdapter.zip -oC:\projects\GoogleTestAdapter -aoa
test_script:
- if %TOOLCHAIN_VERSION%==16.0 call vstest.console.exe win_build\Build\%platform%\%configuration%\unittests.exe /TestAdapterPath:C:\projects\GoogleTestAdapter /logger:Appveyor
# on_finish:
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))

View File

@ -1,11 +1,38 @@
setlocal EnableDelayedExpansion
rem @echo off
if not defined bintray_deploy (
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 pkg_name=custom
rem GITHUB_SHA might not be available here, better use "git rev-parse --short=8 HEAD" instead
set git_rev=%GITHUB_SHA:~0,8%
set pkg_version=custom_%build_date%_!git_rev!
set pkg_version_desc=Custom build created on %build_date%
if not defined GITHUB_ACTIONS (
set GITHUB_ACTIONS=False
)
set CI_RUN=%GITHUB_ACTIONS%
if "%CI_RUN%" == "True" (
if "%GITHUB_EVENT_NAME%" == "pull_request" (
set pkg_name=pull-requests
set git_rev=%PULL_REQUEST_SHA:~0,8%
set pkg_version=PR%PULL_REQUEST%_%build_date%_!git_rev!
set pkg_version_desc=CI build created from PR #%PULL_REQUEST% on %build_date%
)
if "%GITHUB_EVENT_NAME%" == "schedule" (
set pkg_name=weekly
set git_rev=%GITHUB_SHA:~0,8%
set pkg_version=weekly_%build_date%_!git_rev!
set pkg_version_desc=Weekly CI build created on %build_date%
)
if "%GITHUB_EVENT_NAME%" == "push" (
set pkg_name=master
set git_rev=%GITHUB_SHA:~0,8%
set pkg_version=master_%build_date%_!git_rev!
set pkg_version_desc=Custom build created on %build_date%
)
if !bintray_deploy! == False (
goto :EOF
)
if not defined BINTRAY_API_KEY (
@ -40,9 +67,6 @@ set CURL=curl -u%BINTRAY_USER%:%BINTRAY_API_KEY% -H Accept:application/json -w \
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
)
@ -51,37 +75,23 @@ 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!_%platform%.7z" (
echo Uploading and publishing "deploy\win-apps\win-apps_!pkg_version!_%platform%.7z"
%CURL% -H Content-Type:application/octet-stream -T "deploy\win-apps\win-apps_!pkg_version!_%platform%.7z" "%API%/content/%BINTRAY_REPO_OWNER%/%BINTRAY_REPO%/!pkg_name!/!pkg_version!/win-apps_!pkg_version!_%platform%.7z?publish=1&override=1"
if exist "deploy\win_apps\win_apps.7z" (
echo Uploading and publishing "deploy\win_apps\win_apps.7z"
%CURL% -H Content-Type:application/octet-stream -T "deploy\win_apps\win_apps.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!_%platform%.7z" (
echo Uploading and publishing "deploy\win-client\win-client_!pkg_version!_%platform%.7z"
%CURL% -H Content-Type:application/octet-stream -T "deploy\win-client\win-client_!pkg_version!_%platform%.7z" "%API%/content/%BINTRAY_REPO_OWNER%/%BINTRAY_REPO%/!pkg_name!/!pkg_version!/win-client_!pkg_version!_%platform%.7z?publish=1&override=1"
if exist "deploy\win_client\win_client.7z" (
echo Uploading and publishing "deploy\win_client\win_client.7z"
%CURL% -H Content-Type:application/octet-stream -T "deploy\win_client\win_client.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!_%platform%.7z" (
echo Uploading and publishing "deploy\win-manager\win-manager_!pkg_version!_%platform%.7z"
%CURL% -H Content-Type:application/octet-stream -T "deploy\win-manager\win-manager_!pkg_version!_%platform%.7z" "%API%/content/%BINTRAY_REPO_OWNER%/%BINTRAY_REPO%/!pkg_name!/!pkg_version!/win-manager_!pkg_version!_%platform%.7z?publish=1&override=1"
if exist "deploy\win_manager\win_manager.7z" (
echo Uploading and publishing "deploy\win_manager\win_manager.7z"
%CURL% -H Content-Type:application/octet-stream -T "deploy\win_manager\win_manager.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 (

View File

@ -2,7 +2,7 @@
# This file is part of BOINC.
# http://boinc.berkeley.edu
# Copyright (C) 2018 University of California
# Copyright (C) 2020 University of California
#
# BOINC is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License
@ -51,7 +51,7 @@ if [ "${BINTRAY_API_KEY}" == "" ] ; then
exit 0
fi
CI_RUN="${TRAVIS:-false}"
CI_RUN="${GITHUB_ACTIONS:-false}"
BOINC_TYPE="$(basename "${SOURCE_DIR}")" # TODO: do not infer TYPE from directory, instead make it an argument
API=https://api.bintray.com
BINTRAY_USER="${BINTRAY_USER:-ChristianBeer}"
@ -66,22 +66,23 @@ CURL="curl -u${BINTRAY_USER}:${BINTRAY_API_KEY} -H Accept:application/json -w \n
#CURL="echo " # use this for local debugging
BUILD_DATE=$(date "+%Y-%m-%d")
GIT_REV=$(git rev-parse --short HEAD)
GIT_REV=$(git rev-parse --short=8 HEAD)
PKG_NAME="custom"
PKG_DESC="Automated CI build of BOINC components"
VERSION="custom_${BUILD_DATE}_${GIT_REV}"
VERSION_DESC="Custom build created on ${BUILD_DATE}"
RUN_CLEANUP="false"
if [[ $CI_RUN == "true" ]]; then
case $TRAVIS_EVENT_TYPE in
case $GITHUB_EVENT_NAME in
pull_request)
PKG_NAME="pull-requests"
GIT_REV=${TRAVIS_PULL_REQUEST_SHA:0:8}
VERSION="PR${TRAVIS_PULL_REQUEST}_${BUILD_DATE}_${GIT_REV}"
VERSION_DESC="CI build created from PR #${TRAVIS_PULL_REQUEST} on ${BUILD_DATE}"
GIT_REV=${PULL_REQUEST_SHA:0:8}
VERSION="PR${PULL_REQUEST}_${BUILD_DATE}_${GIT_REV}"
VERSION_DESC="CI build created from PR #${PULL_REQUEST} on ${BUILD_DATE}"
;;
cron)
schedule)
PKG_NAME="weekly"
GIT_REV=${GITHUB_SHA:0:8}
VERSION="weekly_${BUILD_DATE}_${GIT_REV}"
VERSION_DESC="Weekly CI build created on ${BUILD_DATE}"
# run cleanup script once a month
@ -89,9 +90,11 @@ if [[ $CI_RUN == "true" ]]; then
RUN_CLEANUP="true"
fi
;;
*)
echo "event $TRAVIS_EVENT_TYPE not supported for deployment"
exit 0;
push)
PKG_NAME="master"
GIT_REV=${GITHUB_SHA:0:8}
VERSION="master_${BUILD_DATE}_${GIT_REV}"
VERSION_DESC="Master build created on ${BUILD_DATE}"
;;
esac
fi
@ -118,7 +121,7 @@ ${CURL} -H Content-Type:application/json -X POST -d "${data}" "${API}/packages/$
echo "Adding attributes to version ${VERSION}"
# this can be used to cleanup old versions
pr="${TRAVIS_PULL_REQUEST:-0}"
pr="${PULL_REQUEST:-0}"
created=$(date -u +%s)
data="[{\"name\": \"PR\", \"values\": [\"${pr}\"], \"type\": \"string\"},
{\"name\": \"create_time_utc\", \"values\": [${created}], \"type\": \"number\"}]"
@ -131,19 +134,19 @@ if [ -f "${SOURCE_DIR}/${BOINC_TYPE}.7z" ]; then
${CURL} -H Content-Type:application/octet-stream -T "${SOURCE_DIR}/${BOINC_TYPE}.7z" "${API}/content/${BINTRAY_REPO_OWNER}/${BINTRAY_REPO}/${PKG_NAME}/${VERSION}/${BOINC_TYPE}_${VERSION}.7z?publish=1&override=1"
fi
if [ "$TRAVIS_BUILD_ID" ] ; then
echo "Adding Travis CI log to release notes..."
BUILD_LOG="https://travis-ci.org/BOINC/boinc/builds/${TRAVIS_BUILD_ID}"
#BUILD_LOG="https://api.travis-ci.org/jobs/${TRAVIS_JOB_ID}/log.txt?deansi=true"
data='{
"bintray": {
"syntax": "markdown",
"content": "'${BUILD_LOG}'"
}
}'
set +x
${CURL} -H Content-Type:application/json -X POST -d "${data}" "${API}/packages/${BINTRAY_REPO_OWNER}/${BINTRAY_REPO}/${PKG_NAME}/versions/${VERSION}/release_notes"
fi
# if [ "$TRAVIS_BUILD_ID" ] ; then
# echo "Adding Travis CI log to release notes..."
# BUILD_LOG="https://travis-ci.org/BOINC/boinc/builds/${TRAVIS_BUILD_ID}"
# #BUILD_LOG="https://api.travis-ci.org/jobs/${TRAVIS_JOB_ID}/log.txt?deansi=true"
# data='{
# "bintray": {
# "syntax": "markdown",
# "content": "'${BUILD_LOG}'"
# }
# }'
# set +x
# ${CURL} -H Content-Type:application/json -X POST -d "${data}" "${API}/packages/${BINTRAY_REPO_OWNER}/${BINTRAY_REPO}/${PKG_NAME}/versions/${VERSION}/release_notes"
# fi
if [[ $RUN_CLEANUP == "true" ]]; then
./deploy/cleanup_bintray.sh

View File

@ -1,77 +1,38 @@
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%
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_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_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_desc=Weekly CI build created on %build_date%
set bintray_deploy=True
)
)
if not exist "deploy\win-apps" mkdir deploy\win-apps
copy "win_build\Build\%platform%\%configuration%\htmlgfx*.exe" "deploy\win-apps\"
copy "win_build\Build\%platform%\%configuration%\wrapper*.exe" "deploy\win-apps\"
copy "win_build\Build\%platform%\%configuration%\vboxwrapper*.exe" "deploy\win-apps\"
copy "win_build\Build\%platform%\%configuration%\boincsim.exe" "deploy\win-apps\"
copy "win_build\Build\%platform%\%configuration%\slide_show.exe" "deploy\win-apps\"
copy "win_build\Build\%platform%\%configuration%\example_app_multi_thread.exe" "deploy\win-apps\"
copy "win_build\Build\%platform%\%configuration%\example_app_graphics.exe" "deploy\win-apps\"
copy "win_build\Build\%platform%\%configuration%\example_app.exe" "deploy\win-apps\"
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!_%platform%.7z *.exe
if not exist "deploy\win_apps" mkdir deploy\win_apps
copy "win_build\Build\%platform%\%configuration%\htmlgfx*.exe" "deploy\win_apps\"
copy "win_build\Build\%platform%\%configuration%\wrapper*.exe" "deploy\win_apps\"
copy "win_build\Build\%platform%\%configuration%\vboxwrapper*.exe" "deploy\win_apps\"
copy "win_build\Build\%platform%\%configuration%\boincsim.exe" "deploy\win_apps\"
copy "win_build\Build\%platform%\%configuration%\slide_show.exe" "deploy\win_apps\"
copy "win_build\Build\%platform%\%configuration%\example*.exe" "deploy\win_apps\"
copy "win_build\Build\%platform%\%configuration%\worker*.exe" "deploy\win_apps\"
copy "win_build\Build\%platform%\%configuration%\sleeper*.exe" "deploy\win_apps\"
copy "win_build\Build\%platform%\%configuration%\boinclog.exe" "deploy\win_apps\"
copy "win_build\Build\%platform%\%configuration%\boincsim.exe" "deploy\win_apps\"
copy "win_build\Build\%platform%\%configuration%\multi_thread*.exe" "deploy\win_apps\"
copy "win_build\Build\%platform%\%configuration%\slide_show.exe" "deploy\win_apps\"
copy "win_build\Build\%platform%\%configuration%\test*.exe" "deploy\win_apps\"
copy "win_build\Build\%platform%\%configuration%\wrappture*.exe" "deploy\win_apps\"
cd deploy\win_apps
7z a win_apps.7z *.exe
cd ..\..
if not exist "deploy\win-client" mkdir deploy\win-client
copy "win_build\Build\%platform%\%configuration%\boinc.exe" "deploy\win-client\"
copy "win_build\Build\%platform%\%configuration%\boincsvcctrl.exe" "deploy\win-client\"
copy "win_build\Build\%platform%\%configuration%\boinccmd.exe" "deploy\win-client\"
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!_%platform%.7z *.exe *.scr
if not exist "deploy\win_client" mkdir deploy\win_client
copy "win_build\Build\%platform%\%configuration%\boinc.exe" "deploy\win_client\"
copy "win_build\Build\%platform%\%configuration%\boincsvcctrl.exe" "deploy\win_client\"
copy "win_build\Build\%platform%\%configuration%\boinccmd.exe" "deploy\win_client\"
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.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!_%platform%.7z *.exe
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.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

View File

@ -2,7 +2,7 @@
# This file is part of BOINC.
# http://boinc.berkeley.edu
# Copyright (C) 2018 University of California
# Copyright (C) 2020 University of California
#
# BOINC is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License
@ -19,7 +19,7 @@
#
## support script to put all build artefacts into a defined location
## BOINC_TYPE should always be consistent with content in .travis.yml and appveyor.yml
## BOINC_TYPE should always be consistent with content in CI configuration files
## Change artefacts in each prepare_*() function below.
## Don't hardlink files because this can be run on a filesystem without hardlinks
## On error always exit non-zero so the deploy script does not run
@ -85,6 +85,8 @@ prepare_manager() {
prepare_apps_mingw() {
mkdir -p "${TARGET_DIR}"
cp_if_exists lib/wrapper.exe "${TARGET_DIR}"
prepare_7z_archive
}
prepare_osx() {
@ -101,7 +103,7 @@ prepare_android() {
ROOTDIR=$(pwd)
if [[ $# -eq 0 || $# -gt 2 ]]; then
echo "Usage: $0 BOINC_TYPE [TARGET_DIR]"
echo "BOINC_TYPE : [client | apps | manager | apps-mingw | manager-osx | manager-android]"
echo "BOINC_TYPE : [linux_client | linux_apps | linux_manager-with-webview | linux_manager-without-webview | win_apps-mingw | osx_manager | android_manager]"
echo "TARGET_DIR : relative path where binaries should be copied to (default: deploy/BOINC_TYPE/)"
exit 1
fi
@ -110,22 +112,25 @@ TYPE="$1"
TARGET_DIR="${2:-deploy/$TYPE/}"
case $TYPE in
client)
linux_client)
prepare_client
;;
apps)
linux_apps)
prepare_apps
;;
manager)
linux_manager-with-webview)
prepare_manager
;;
apps-mingw)
linux_manager-without-webview)
prepare_manager
;;
win_apps-mingw)
prepare_apps_mingw
;;
manager-osx)
osx_manager)
prepare_osx
;;
manager-android)
android_manager)
prepare_android
;;
*)