diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ff8801a2b56ac92edb5b29ec975441cb10362548
--- /dev/null
+++ b/.github/workflows/android.yml
@@ -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 }}/
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d372477c156fef059fbfdc460aa67df3c75f676e
--- /dev/null
+++ b/.github/workflows/linux.yml
@@ -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 }}/
diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml
new file mode 100644
index 0000000000000000000000000000000000000000..9816605c67c193e88e299c484b153e2be32c298a
--- /dev/null
+++ b/.github/workflows/mingw.yml
@@ -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 }}/
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
new file mode 100644
index 0000000000000000000000000000000000000000..e6da7c2817d4775ff31259ef423a2e5ebc786416
--- /dev/null
+++ b/.github/workflows/windows.yml
@@ -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
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 19651993d8e96b83b47407528efd2348abb48fd0..0000000000000000000000000000000000000000
--- a/.travis.yml
+++ /dev/null
@@ -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}/
diff --git a/README.md b/README.md
index 040f82a59bb165a64eae339af665a88d1434e315..cfbe4dab3cd7a4b293201c14678bdfda13636ad2 100644
--- a/README.md
+++ b/README.md
@@ -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
 
@@ -18,16 +18,16 @@ Read about all the [ways you can help](CONTRIBUTING.md)
 
 ### Note
 
-The University of California holds the copyright on all BOINC source code. By 
-submitting contributions to the BOINC code, you irrevocably assign all right, 
-title, and interest, including copyright and all copyright rights, in such 
-contributions to The Regents of the University of California, who may then 
-use the code for any purpose that it desires. 
+The University of California holds the copyright on all BOINC source code. By
+submitting contributions to the BOINC code, you irrevocably assign all right,
+title, and interest, including copyright and all copyright rights, in such
+contributions to The Regents of the University of California, who may then
+use the code for any purpose that it desires.
 
 ## Reporting Security Issues
-We strongly encourage you to report security problems to our private mailing 
-list and not by posting an issue.  You can do this by sending an email to 
-boinc_pmc@googlegroups.com.  This will be privately sent to the members of the 
+We strongly encourage you to report security problems to our private mailing
+list and not by posting an issue.  You can do this by sending an email to
+boinc_pmc@googlegroups.com.  This will be privately sent to the members of the
 BOINC Project Management Committee.
 
 # License
diff --git a/android/travis_build_all.sh b/android/ci_build_all.sh
similarity index 53%
rename from android/travis_build_all.sh
rename to android/ci_build_all.sh
index 37c78e5c4073cdf0c028a0ef4463e0cb0072e152..ba700c9d6889e46a11d92a72676b8f758df9b8c1 100755
--- a/android/travis_build_all.sh
+++ b/android/ci_build_all.sh
@@ -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 ====='
diff --git a/appveyor.yml b/appveyor.yml
deleted file mode 100644
index efed2efa9e9348255cc5ad346f2c0ddd5a837a85..0000000000000000000000000000000000000000
--- a/appveyor.yml
+++ /dev/null
@@ -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'))
diff --git a/deploy/deploy_to_bintray.bat b/deploy/deploy_to_bintray.bat
index 081f6b9398a350ddc92fbba18e932ac05c4cd59f..d7834ebba41d3052199e2a6dbafd5962f73933b0 100644
--- a/deploy/deploy_to_bintray.bat
+++ b/deploy/deploy_to_bintray.bat
@@ -1,11 +1,38 @@
 setlocal EnableDelayedExpansion
 rem @echo off
 
-if not defined bintray_deploy (
-    set bintray_deploy=False
-)
-if !bintray_deploy! == False (
-    goto :EOF
+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 not defined BINTRAY_API_KEY (
@@ -35,14 +62,11 @@ if not defined ISSUE_TRACKER_URL (
 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
 )
@@ -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 (
diff --git a/deploy/deploy_to_bintray.sh b/deploy/deploy_to_bintray.sh
index e44be724e25baabbba5d22628302a56ee9b6f8ae..915ecedb3d37c5ce83a0787ddad46e686875c53c 100755
--- a/deploy/deploy_to_bintray.sh
+++ b/deploy/deploy_to_bintray.sh
@@ -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
diff --git a/deploy/prepare_deployment.bat b/deploy/prepare_deployment.bat
index 9bc2429b4eccbfbb4219bac2d8c27e0644056312..ff101d9dce145194cf259afb11843f6e1c7fb516 100644
--- a/deploy/prepare_deployment.bat
+++ b/deploy/prepare_deployment.bat
@@ -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
diff --git a/deploy/prepare_deployment.sh b/deploy/prepare_deployment.sh
index 0bee1ec32e64cbb0defd055bb4a8e3274af8649c..885302b791b9250dd9955ad4cc30cbd282987995 100755
--- a/deploy/prepare_deployment.sh
+++ b/deploy/prepare_deployment.sh
@@ -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
+    ;;
+    linux_manager-without-webview)
         prepare_manager
     ;;
-    apps-mingw)
+    win_apps-mingw)
         prepare_apps_mingw
     ;;
-    manager-osx)
+    osx_manager)
         prepare_osx
     ;;
-    manager-android)
+    android_manager)
         prepare_android
     ;;
     *)