Files
GoldenCheetah/appveyor.yml
Alejandro Martinez a1247996d4 AppVeyor - Refactor Windows build scripts (#4820)
To cleanup appveyor.yml and to match macOS/Linux scripts:
- Move install code to appveyor/windows/install.ps1
- Move after_build code to appveyor/windows/after_build.ps1
Continuation of 40db2bc8ec
2026-02-04 21:05:37 -03:00

234 lines
9.8 KiB
YAML

version: ci.{build}
clone_depth: 1
skip_tags: true
branches:
only:
- master
image:
- Visual Studio 2022
- Ubuntu2204
- macos-sonoma
environment:
APPVEYOR_SAVE_CACHE_ON_ERROR: true
PYTHON_VERSION: "3.11"
GC_GOOGLE_CALENDAR_CLIENT_SECRET:
secure: hwjHTrSAMEbKd9PA+5x/zI4x5Uk4KQm1hdfZzkwiu8k=
GC_GOOGLE_DRIVE_CLIENT_ID:
secure: mNqG+pqpMl21ZFVvAMKvhm2rfOdv42fFpnLwfrvX5QqpWVcHEeBuUFeJeUAZfTR0GQGfWfPOEmhb9CG0W1ZJ05TIyb+kTLrWF7iijCiVR6s=
GC_GOOGLE_DRIVE_CLIENT_SECRET:
secure: T+BaB/L7x4dPPf592e0kfw4sTlAslUXl10irJqiUjpY=
GC_GOOGLE_DRIVE_API_KEY:
secure: oxTAhK/kiLUsXdYvITAgzSqeB5FRcL+XANFuAYpoW5P/xBb7XaLbNnL2gyrmzQeG
GC_CLOUD_OPENDATA_SECRET:
secure: 6fPhBiHKvJeOMqXdHGqpkPS+NpUDMczEXjedx8GcjbHr82ISX+gwSuXfOUDLq/S9
GC_NOKIA_CLIENT_SECRET:
secure: pvPWraDplrKeRNamt5MKga8fzDmI2+zgFx+y3lsQE6gmBadZU2xkTIc/xCaP7UPv2erNCmKivfMOh2NIcRmqvIHynDoifNVy2P61KyG5v3E=
GC_DROPBOX_CLIENT_SECRET:
secure: 7pCVnVEKKmSU4SZN6IFqUw==
GC_STRAVA_CLIENT_SECRET:
secure: n3cMS1yy709xhSnTeWABMsoAIkJzy5euh3Pw4ehv0BzszJKoWkypF0cyW8RXSm3M
GC_CYCLINGANALYTICS_CLIENT_SECRET:
secure: UY+m3YypNNLUzKyGdrLw8xdCvxuQWRZi9EHS3j1ubLC4qyRL7iEVW6ubumfdh6gT
GC_CLOUD_DB_BASIC_AUTH:
secure: OEBetrOnXjsY7wN8hYqmMj6482oDORmAmCq8PI7mfnfiWE6Z4jB676JvgdNlP98q
GC_CLOUD_DB_APP_NAME:
secure: bpkyuw/BsJw0OrpuBqQwZ46CHbhkbmcjcMttVtfJoZU=
GC_POLARFLOW_CLIENT_SECRET:
secure: h2JdlC1i4QOmwpkz+Xxbrw==
GC_SPORTTRACKS_CLIENT_SECRET:
secure: n6a8nJgqMyg+VsVeoIIR8TFzxyDFVi2w/ggetQk5agY=
GC_RWGPS_API_KEY:
secure: uUtCyF5ByZ1VYJOztUngIA==
GC_NOLIO_CLIENT_ID:
secure: /OFVjEBwU7o3SItIQVf/YlJ8XErxneXIT2N0JyPMSXR1tCbdZVWixMHpqKNWoNk4
GC_NOLIO_SECRET:
secure: mmMksvVnfBiXufBDn2gAhQY53n0J9BokSCtDY51uU918QJ/LL4XOojtJp5tMFn8T7ugyDhNASpqZXiK55vxSD53vm+tjufpfzppKEeh93Babvc/VrndLB1X/RZCRUQTR6rka05fYl4e0eBzP1H091A==
GC_XERT_CLIENT_SECRET:
secure: /1rVLT8LyJCZ4xNJ5W+NtAcZ1rtKaUjW9SYm/T3gHoc=
GC_AZUM_CLIENT_SECRET:
secure: 2ZpXsA3TQv1zftYVyZSF6f83ftCzza+K22ZX1doj7Yc/5dmGl1bnsSeVChJgJ8lQ2fRPYpdmun9cjqwcrtG/zXTTsYuTvYWegHz/4Y0u6Mg=
GC_TRAINERDAY_API_KEY:
secure: nDgxUdgLkp0+gaxKRCaAVD5WYAl9pLmOnZ9JLSx3ulqT346nieakd02V3Q7dZYEU
init:
# Windows
# Setup QT 6.8 - 64Bit
- cmd: set QTDIR=C:\Qt\6.8\msvc2022_64
- cmd: set PATH=%QTDIR%\bin;%PATH%
- cmd: qmake --version
# Setup MSVC - VS 2022
- cmd: call c:\"Program Files"\"Microsoft Visual Studio"\2022\Community\VC\Auxiliary\Build\vcvarsall.bat amd64
# Setup NSIS
- cmd: set PATH=%PATH%;C:\"Program Files (x86)"\NSIS
# Setup Python for building
- cmd: set PATH=C:\Python311-x64\Scripts\;C:\Python311-x64\;%PATH%
- cmd: python --version
# Setup JOM
- cmd: set PATH=%PATH%;C:\JOM\;
# Setup R
- cmd: set PATH=%PATH%;C:\R\bin\;
# Linux / macOS
- sh: >-
if $CI_LINUX; then
export OS_NAME=linux
# Select gcc-11 for AppImage backward compatibility
sudo update-alternatives --set gcc "/usr/bin/gcc-11"
# Setup QT 6.8
export QTDIR=$HOME/Qt/6.8
export LD_LIBRARY_PATH=$QTDIR:$LD_LIBRARY_PATH
export PATH=$QTDIR/bin:$PATH
qmake --version
else
export OS_NAME=macos
# Setup QT 6.5
export QTDIR=$HOME/Qt/6.5/macos
export PATH=$QTDIR/bin:$PATH
qmake --version
# Setup Xcode 15.2
sudo xcode-select -s /Applications/Xcode-15.2.0.app
fi
cache:
- C:\LIBS -> appveyor.yml
- C:\JOM
- C:\R -> appveyor.yml
- C:\Python -> src\Python\requirements.txt, appveyor.yml
- c:\tools\vcpkg\installed\
- qwt -> qwt/qwtconfig.pri.in, appveyor.yml
- srmio -> appveyor.yml
- D2XX
- src\Python\SIP\release\sip_lib.lib -> src\Python\SIP\goldencheetah.sip
- src\Python\SIP\libsip_lib.a -> src\Python\SIP\goldencheetah.sip
install:
# Install dependencies first
# Windows
- ps: if ($isWindows) { ./appveyor/windows/install.ps1 }
# Linux / macOS
- sh: bash appveyor/$OS_NAME/install.sh
before_build:
# Configure src/gcconfig.pri
# Windows
- ps: if ($isWindows) { appveyor\windows\before_build.ps1 }
# Linux / macOS
- sh: bash appveyor/$OS_NAME/before_build.sh
# For tagged builds, define GC version string
- ps: if ($env:APPVEYOR_REPO_TAG -eq "true") { Add-Content src/gcconfig.pri "DEFINES += GC_VERSION=VERSION_STRING" }
# Show config.
- ps: Get-Content src/gcconfig.pri
# update translations
- cmd: lupdate src\src.pro
- sh: lupdate src/src.pro
# Patch Secrets.h (Windows / Linux / macOS)
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_GOOGLE_CALENDAR_CLIENT_SECRET__', $env:GC_GOOGLE_CALENDAR_CLIENT_SECRET | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_GOOGLE_DRIVE_CLIENT_ID__', $env:GC_GOOGLE_DRIVE_CLIENT_ID | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_GOOGLE_DRIVE_CLIENT_SECRET__', $env:GC_GOOGLE_DRIVE_CLIENT_SECRET | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_GOOGLE_DRIVE_API_KEY__', $env:GC_GOOGLE_DRIVE_API_KEY | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace 'OPENDATA_DISABLE', 'OPENDATA_ENABLE' | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_CLOUD_OPENDATA_SECRET__', $env:GC_CLOUD_OPENDATA_SECRET | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_WITHINGS_CONSUMER_SECRET__', $env:GC_WITHINGS_CONSUMER_SECRET | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_NOKIA_CLIENT_SECRET__', $env:GC_NOKIA_CLIENT_SECRET | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_DROPBOX_CLIENT_SECRET__', $env:GC_DROPBOX_CLIENT_SECRET | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_STRAVA_CLIENT_SECRET__', $env:GC_STRAVA_CLIENT_SECRET | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_CYCLINGANALYTICS_CLIENT_SECRET__', $env:GC_CYCLINGANALYTICS_CLIENT_SECRET | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_CLOUD_DB_BASIC_AUTH__', $env:GC_CLOUD_DB_BASIC_AUTH | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_CLOUD_DB_APP_NAME__', $env:GC_CLOUD_DB_APP_NAME | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_POLARFLOW_CLIENT_SECRET__', $env:GC_POLARFLOW_CLIENT_SECRET | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_SPORTTRACKS_CLIENT_SECRET__', $env:GC_SPORTTRACKS_CLIENT_SECRET | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_RWGPS_API_KEY__', $env:GC_RWGPS_API_KEY | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_NOLIO_CLIENT_ID__', $env:GC_NOLIO_CLIENT_ID | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_NOLIO_SECRET__', $env:GC_NOLIO_SECRET | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_XERT_CLIENT_SECRET__', $env:GC_XERT_CLIENT_SECRET | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_AZUM_CLIENT_SECRET__', $env:GC_AZUM_CLIENT_SECRET | Set-Content src\Core\Secrets.h
- ps: (Get-Content src\Core\Secrets.h) -replace '__GC_TRAINERDAY_API_KEY__', $env:GC_TRAINERDAY_API_KEY | Set-Content src\Core\Secrets.h
build_script:
# Windows
- cmd: qmake.exe build.pro -r -spec win32-msvc
- cmd: if not exist qwt\lib\qwt.lib jom -j1 sub-qwt
- cmd: jom -j2 sub-src
# Linux / macOS
- sh: qmake build.pro -r QMAKE_CXXFLAGS_WARN_ON+="-Wno-unused-private-field -Wno-c++11-narrowing -Wno-deprecated-declarations -Wno-deprecated-register -Wno-nullability-completeness -Wno-sign-compare -Wno-inconsistent-missing-override" QMAKE_CFLAGS_WARN_ON+="-Wno-deprecated-declarations -Wno-sign-compare"
- sh: if test ! -f qwt/lib/libqwt.a; then make -j2 sub-qwt; fi
- sh: make -j2 sub-src
after_build:
# Windows/macOS/Linux: set PUBLISH_BINARIES according to commit message
- ps: Set-AppveyorBuildVariable -Name 'PUBLISH_BINARIES' -Value false
- ps: if ($env:APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED -Match "\[publish binaries\]") { Set-AppveyorBuildVariable -Name 'PUBLISH_BINARIES' -Value true }
# Windows
- ps: if ($isWindows) { ./appveyor/windows/after_build.ps1 }
# Linux / macOS
- sh: bash appveyor/$OS_NAME/after_build.sh
test_script:
# Windows
- cmd: src\release\GoldenCheetah --version 2>GCversionWindows.txt
- cmd: git log -1 >> GCversionWindows.txt
- ps: if ($isWindows) { CertUtil -hashfile GoldenCheetah_v3.8_x64.exe sha256 | Select-Object -First 2 | Add-Content GCversionWindows.txt }
- cmd: type GCversionWindows.txt
# Linux / macOS
- sh: >-
if $CI_LINUX; then
./GoldenCheetah_v3.8_x64.AppImage --version 2>GCversionLinux.txt
git log -1 >> GCversionLinux.txt
shasum -a 256 GoldenCheetah_v3.8_x64.AppImage | cut -f 1 -d ' ' >> GCversionLinux.txt
cat GCversionLinux.txt
else
src/GoldenCheetah.app/Contents/MacOS/GoldenCheetah --version 2>GCversionMacOS.txt
git log -1 >> GCversionMacOS.txt
shasum -a 256 GoldenCheetah_v3.8_x64.dmg | cut -f 1 -d ' ' >> GCversionMacOS.txt
cat GCversionMacOS.txt
fi
artifacts:
# Windows
- path: GoldenCheetah_v3.8_x64.exe
name: GCwindowsInstaller
- path: GCversionWindows.txt
name: GCversionWindows
# macOS
- path: GoldenCheetah_v3.8_x64.dmg
name: GCmacOSpackage
- path: GCversionMacOS.txt
name: GCversionMacOS
# Linux
- path: GoldenCheetah_v3.8_x64.AppImage
name: GClinuxAppImage
- path: GCversionLinux.txt
name: GCversionLinux
deploy:
# deploy continuous builds to GitHub release
- provider: GitHub
auth_token:
secure: 807DE/9vib/Kjz5Tah/Zc6zkoigLEWRzASw/DUWjLwZ5d8HHomXqWQ7iln4VtOqL
tag: snapshot
release: 'Snapshot Builds'
description: ''
artifact: GCwindowsInstaller, GCversionWindows, GCmacOSpackage, GCversionMacOS, GClinuxAppImage, GCversionLinux
draft: false
prerelease: true
force_update: true
on:
PUBLISH_BINARIES: true
APPVEYOR_REPO_NAME: "GoldenCheetah/GoldenCheetah"