forked from imazen/imageflow-server
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathappveyor.yml
119 lines (107 loc) · 7.95 KB
/
appveyor.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
version: '{build}-appveyor' # We override this during 'install'
image: Visual Studio 2019
install:
# This script is for automating releases triggered by GitHub.com - or, rather, determining all the right strings
# You MUST use tags in the format "v[0-9]+.[0-9]+.[0-9]+-[a-z][a-z0-9]*" (like v0.1.1 or v0.1.2-rc1). You must have at least one tag for this script to work.
# In tags, major, minor, and patch numbers are all mandatory (and build is prohibited) for this script to calculate AssemblyFileVersion correctly.
# You may use SemVer 2.0 suffixes (we support them, but older NuGet clients do not). You can also omit a -suffix. Use SEMVER_2 instead of SEMVER_1 in dotnet_csproj/assembly_info
# Before running, ensure you have a tag like "v0.1.0" or "v0.1.0-pre" in the repository.
# How these are calculated
# ASSEMBLY_VERSION = [major version component from most recent version tag].0.0.0
# NUMERIC_PART = [most recent version tag, excluding the dash '-' and everything after]
# FILE_VERSION = %NUMERIC_PART%.%CI_SEQUENTIAL_BUILD_NUMBER%
# INFORMATIONAL_VERSION = [last version tag]-[commit count since tag]-[short commit hash]
# SEMVER_1 = current tag (minus v), falling back to %NUMERIC_PART%-build[buildnumber] (non-tagged-commits are only uploaded to appeveyor feed)
# if current tag: SEMVER_2=%CI_TAG:~1%+git.hash.%SHORT_COMMIT%
# if last tag has -suffix: SEMVER_2=%LAST TAG:~1%.%COMMITS_SINCE_TAG%.build.[buildnumber]+git.hash.%SHORT_COMMIT%
# if last tag has no suffix: SEMVER_2=%LAST TAG:~1%-and.%COMMITS_SINCE_TAG%.build.[buildnumber]+git.hash.%SHORT_COMMIT%
# ARTIFACT_NAME=%CI_REPO%-%CI_TAG%-%SHORT_COMMIT%%PLATFORM_SUFFIX%
# if no tag: ARTIFACT_NAME=%CI_REPO%-build-%PADDED_BUILD_NUMBER%-%ARTIFACT_SERIES_NAME%-%LAST_TAG%-%COMMITS_SINCE_TAG%-%SHORT_COMMIT%%PLATFORM_SUFFIX%
- SET "OS_SPECIFIC_SUFFIX=" # "-win", if windows-specific binaries are being produced by the project. For os-neutral assemblies leave blank
#Next we provide values to CI_TAG, CI_REPO, GIT_COMMIT, GIT_OPTIONAL_BRANCH, SHORT_COMMIT, CI_RELATED_BRANCH, CI_PULL_REQUEST_INFO, CI_SEQUENTIAL_BUILD_NUMBER, CI_BUILD_URL, CI_JOB_TITLE, CI_JOB_URL, CI_STRING,
# ARTIFACT_SERIES_NAME, PLATFORM_SUFFIX, ARTIFACT_NAME, ESTIMATED_ARTIFACT_URL, SEMVER, FILE_VERSION
- SET "GIT_COMMIT=%APPVEYOR_REPO_COMMIT%"
- SET "CI_SEQUENTIAL_BUILD_NUMBER=%APPVEYOR_BUILD_NUMBER%"
- SET "PADDED_BUILD_NUMBER=%CI_SEQUENTIAL_BUILD_NUMBER%"
- IF "%CI_SEQUENTIAL_BUILD_NUMBER:~2%"=="" SET "PADDED_BUILD_NUMBER=0%CI_SEQUENTIAL_BUILD_NUMBER%"
- IF "%CI_SEQUENTIAL_BUILD_NUMBER:~1%"=="" SET "PADDED_BUILD_NUMBER=00%CI_SEQUENTIAL_BUILD_NUMBER%"
- SET "CI_BUILD_URL=https://ci.appveyor.com/project/%APPVEYOR_ACCOUNT_NAME%/%APPVEYOR_PROJECT_SLUG%/build/%APPVEYOR_BUILD_VERSION%"
- SET "CI_JOB_TITLE=AppVeyor %APPVEYOR_BUILD_VERSION% %APPVEYOR_JOB_NAME%"
- SET "CI_JOB_URL=https://ci.appveyor.com/project/%APPVEYOR_ACCOUNT_NAME%/%APPVEYOR_PROJECT_SLUG%/branch/%APPVEYOR_REPO_BRANCH%/job/%APPVEYOR_JOB_ID%"
- SET "CI_STRING=name:AppVeyor job_id:%APPVEYOR_JOB_ID% build_id:%APPVEYOR_BUILD_ID% build_number:%APPVEYOR_BUILD_NUMBER% build_version:%APPVEYOR_BUILD_VERSION% account_name:%APPVEYOR_ACCOUNT_NAME% project_slug:%APPVEYOR_PROJECT_SLUG% tag_name:%APPVEYOR_REPO_TAG_NAME% pull_request_number:%APPVEYOR_PULL_REQUEST_NUMBER% branch:%APPVEYOR_REPO_BRANCH%"
- SET "CI_TAG=%APPVEYOR_REPO_TAG_NAME%"
- SET "CI_REPO=%APPVEYOR_REPO_NAME%"
- SET "CI_PROJECT=%APPVEYOR_PROJECT_NAME%"
- SET "CI_RELATED_BRANCH=%APPVEYOR_REPO_BRANCH%"
- SET "CI_PULL_REQUEST_INFO=%APPVEYOR_PULL_REQUEST_NUMBER%"
- SET "GIT_OPTIONAL_BRANCH="
- if "%CI_PULL_REQUEST_INFO%"=="" SET "GIT_OPTIONAL_BRANCH=%CI_RELATED_BRANCH%"
- SET "ARTIFACT_SERIES_NAME=pullrequest"
- if "%CI_PULL_REQUEST_INFO%"=="" SET "ARTIFACT_SERIES_NAME=%CI_TAG%"
- if "%CI_TAG%,%CI_PULL_REQUEST_INFO%"=="," SET "ARTIFACT_SERIES_NAME=%CI_RELATED_BRANCH%"
- echo "Debug GIT_OPTIONAL_BRANCH=%GIT_OPTIONAL_BRANCH%, ARTIFACT_SERIES_NAME=%ARTIFACT_SERIES_NAME%, CI_TAG=%CI_TAG%, CI_PULL_REQUEST_INFO=%CI_PULL_REQUEST_INFO%"
- git rev-parse --short HEAD>tempfile.txt&set /p SHORT_COMMIT=<tempfile.txt
- git describe --always --tags --long>tempfile.txt&set /p INFORMATIONAL_VERSION=<tempfile.txt
- echo If this fails, you need to add at least one version tag to the repo in the form "v0.0.1"
- git describe --tags --abbrev=0 --match v*>tempfile.txt&set /p LAST_VERSION_TAG=<tempfile.txt
- git rev-list %LAST_VERSION_TAG%.. --count>tempfile.txt&set /p COMMITS_SINCE_TAG=<tempfile.txt
- SET "PLATFORM_SUFFIX=%OS_SPECIFIC_SUFFIX%-%PLATFORM%"
- if "%PLATFORM%"=="Any CPU" SET "PLATFORM_SUFFIX=%OS_SPECIFIC_SUFFIX%"
- if "%PLATFORM%"=="" SET "PLATFORM_SUFFIX=%OS_SPECIFIC_SUFFIX%"
- if "%CI_TAG%"=="" SET "ARTIFACT_NAME=%CI_PROJECT%-build-%PADDED_BUILD_NUMBER%-%ARTIFACT_SERIES_NAME%-%INFORMATIONAL_VERSION%%PLATFORM_SUFFIX%"
- if NOT "%CI_TAG%"=="" SET "ARTIFACT_NAME=%CI_PROJECT%-%CI_TAG%-%SHORT_COMMIT%%PLATFORM_SUFFIX%"
- SET "ESTIMATED_ARTIFACT_URL=https://ci.appveyor.com/api/buildjobs/%APPVEYOR_JOB_ID%/artifacts/%ARTIFACT_NAME%.zip"
- echo. && echo. && echo Estimated upload URL && echo. && echo %ESTIMATED_ARTIFACT_URL% && echo. && echo.
- echo "GIT_COMMIT=%GIT_COMMIT%" && echo "CI_STRING=%CI_STRING%" && echo "CI_TAG=%CI_TAG%" && echo "CI_RELATED_BRANCH=%CI_RELATED_BRANCH%" && echo "CI_PULL_REQUEST_INFO=%CI_PULL_REQUEST_INFO%" && echo "ARTIFACT_SERIES_NAME=%ARTIFACT_SERIES_NAME%"
- echo.
# Provide LAST_VERSION (without 'v' prefix), FILE_VERSION, NUMERIC_PART, ASSEMBLY_VERSION, HAS_SUFFIX
- echo "LAST_VERSION_TAG=%LAST_VERSION_TAG%"
- SET "TAG=%CI_TAG%"
- IF "%TAG%"=="" SET "TAG=none"
- IF "%LAST_VERSION_TAG:~0,1%"=="v" SET "LAST_VERSION=%LAST_VERSION_TAG:~1%"
- IF "%TAG:~0,1%"=="v" SET "LAST_VERSION=%TAG:~1%"
- echo "LAST_VERSION=%LAST_VERSION%"
- FOR /F "tokens=1,2 delims=-" %%a in ("%LAST_VERSION%") do (SET "NUMERIC_PART=%%a" & SET "HAS_SUFFIX=%%b")
- SET "FILE_VERSION=%NUMERIC_PART%.%CI_SEQUENTIAL_BUILD_NUMBER%"
- FOR /F "delims=." %%a in ("%LAST_VERSION%") do (SET "ASSEMBLY_VERSION=%%a.0.0.0")
#- IF "%ASSEMBLY_VERSION%"=="0.0.0.0" SET "ASSEMBLY_VERSION=0.0.0.1"
# Determine SEMVER_1
- IF "%TAG:~0,1%"=="v" SET "SEMVER_1=%TAG:~1%"
- IF "%SEMVER_1%"=="" SET "SEMVER_1=%NUMERIC_PART%-build%PADDED_BUILD_NUMBER%"
# Determine SEMVER_2
- IF "%TAG:~0,1%"=="v" SET "SEMVER_2=%TAG:~1%"
- IF "%SEMVER_2%,%HAS_SUFFIX%"=="," SET "SEMVER_2=%LAST_VERSION%-and.%COMMITS_SINCE_TAG%.build.%CI_SEQUENTIAL_BUILD_NUMBER%+git.%SHORT_COMMIT%"
- IF "%SEMVER_2%"=="" SET "SEMVER_2=%LAST_VERSION%.%COMMITS_SINCE_TAG%.build.%CI_SEQUENTIAL_BUILD_NUMBER%+git.%SHORT_COMMIT%"
- ps: Update-AppveyorBuild -Version "$env:SEMVER_2"
- echo "SEMVER_1=%SEMVER_1%, SEMVER_2=%SEMVER_2% ASSEMBLY_VERSION=%ASSEMBLY_VERSION% FILE_VERSION=%FILE_VERSION% INFORMATIONAL_VERSION=%INFORMATIONAL_VERSION%"
dotnet_csproj:
patch: true
file: '**\*.csproj'
version: $(FILE_VERSION)
package_version: $(SEMVER_1) #Use SEMVER_1 instead for compatibility with older clients
informational_version: $(INFORMATIONAL_VERSION)
assembly_version: $(ASSEMBLY_VERSION)
file_version: $(FILE_VERSION)
nuget:
disable_publish_on_pr: true # disable publishing of .nupkg artifacts to
# account/project feeds for pull request builds
# platform: Any CPU - Don't explicitly set Any CPU, causes problems
configuration: Release
before_build:
- dotnet restore Imageflow.Server.sln
build:
parallel: true # enable MSBuild parallel builds
project: Imageflow.Server.sln # path to Visual Studio solution or project
publish_nuget: true # package projects with .nuspec files and push to artifacts
publish_nuget_symbols: true # generate and publish NuGet symbol packages
test_script:
- dotnet build --configuration Release
- dotnet test
deploy:
- provider: NuGet
api_key:
secure: W0fJC3/ZD5Ur1OyoaBxa4c95rGP8sREZq7gn4B839bK1oDfr5/wJ0e7cBDA7pp1a
skip_symbols: true
artifact: /.*\.nupkg/
on:
appveyor_repo_tag: true