-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathModule.Taskfile.yaml
More file actions
125 lines (105 loc) · 3.97 KB
/
Module.Taskfile.yaml
File metadata and controls
125 lines (105 loc) · 3.97 KB
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
120
121
122
123
124
125
# https://taskfile.dev
#Called by the vnbuild system to produce builds for my website
#https://www.vaughnnugent.com/resources/software
#This taskfile performs the build operations for a module, it handles
#git code updates, msbuild on solutions, and sleet NuGet feed pushes.
#this file must be in the same directory as the solution file
version: '3'
includes:
plugin-tests:
taskfile: './tests/plugin-tests'
dir: './tests/plugin-tests'
vars:
ARCHIVE_FILE_NAME: '{{ .ARCHIVE_FILE_NAME | default "archive.tgz" }}'
tasks:
default:
desc: 'Builds the managed libraries in this module for development'
cmds:
- cmd: dotnet build -c debug {{ .CLI_ARGS }}
#called by build pipeline to sync repo
update:
cmds:
- cmd: git reset --hard #clean up any local changes
- cmd: git remote update
- cmd: git pull origin {{ .BRANCH_NAME }} --verify-signatures
tag-current-commit:
desc: 'Tags the current commit with the current build version from gitversion'
vars:
#get the current build version from gitversion
BUILD_VERSION:
sh: dotnet gitversion /showvariable FullSemver
#ensure the current branch is master
status:
#see if tag already exists otherwise error on windows
- git tag --list v{{ .BUILD_VERSION }} | findstr . >nul
cmds:
- cmd: echo "Tagging current commit with version v{{ .BUILD_VERSION }}"
- cmd: git tag -s -a v{{ .BUILD_VERSION }} -m "CI Build version {{ .BUILD_VERSION }}"
- cmd: git push origin v{{ .BUILD_VERSION }}
configure-dep:
desc: 'CI task to clone a dependency repo at a specific branch and version and initialzies it'
dir: '{{ .USER_WORKING_DIR }}'
requires:
vars: [DEP_REPO, DEP_REVISION]
vars:
DEP_BRANCH: '{{ splitList "/" .DEP_REVISION | first }}'
DEP_VERSION: '{{ splitList "/" .DEP_REVISION | last }}'
IMPLICIT_DIR: '{{ splitList "/" .DEP_REPO | last }}'
DEP_DIR: '{{ default .IMPLICIT_DIR .DEP_DIR }}'
cmds:
- cmd: git clone {{ .DEP_REPO }} --single-branch --branch {{ .DEP_BRANCH }} {{ .DEP_DIR }}
- cmd: cd {{ .DEP_DIR }} && git fetch --tags
- cmd: cd {{ .DEP_DIR }} && git reset --hard {{ .DEP_VERSION }}
- cmd: cd {{ .DEP_DIR }} && dotnet gitversion /updateprojectfiles
#called by build pipeline to build module
build:
desc: "Used by vnbuild to build the entire module at CI time"
vars:
PACK_OUT: '{{ .OUTPUT_DIR }}/{{ .HEAD_SHA }}/pkg'
INT_DIR: '{{ .SCRATCH_DIR }}/obj/{{ .MODULE_NAME }}/'
MS_ARGS: '
--nologo
/p:UseCommonOutputDirectory=true
/p:IntermediateOutputPath="{{ .INT_DIR }}"'
cmds:
- cmd: echo "building module {{ .MODULE_NAME }}"
silent: true
#re-write semver after hard reset
- cmd: dotnet gitversion /updateprojectfiles
#build debug mode first
- cmd: dotnet publish -c debug {{ .MS_ARGS }}
- cmd: dotnet publish -c release {{ .MS_ARGS }}
# ONLY Pack release config with debug symbols
# pack can be run without build or restore because the previous commands build it
- cmd: dotnet pack
--no-build
--no-restore
--include-symbols
--configuration release
--output "{{ .PACK_OUT }}/release/"
{{ .MS_ARGS }}
publish:
desc: "Used by vnbuild to prepare the packages for build servers"
cmds:
#git archive in the module directory
- cmd: git archive --format {{ .ARCHIVE_FILE_FORMAT }} --output {{ .ARCHIVE_FILE_NAME }} HEAD
test:
desc: "Runs managed unit testing"
cmds:
- task: plugin-tests:test
#called by build pipeline to clean module
clean:
desc: "Used by vnbuild to clean the entire module"
ignore_error: true
cmds:
#clean solution
- cmd: dotnet clean
- cmd: rm -f '{{ .ARCHIVE_FILE_NAME }}'
write-changelog:
cmds:
- cmd: git-cliff
--verbose
--config ci/cliff.toml
--output 'CHANGELOG.md'
--tag v{{ .VERSION }}
{{ .CLI_ARGS }}