-
-
Notifications
You must be signed in to change notification settings - Fork 824
Expand file tree
/
Copy pathTaskfile.yml
More file actions
117 lines (105 loc) · 2.49 KB
/
Taskfile.yml
File metadata and controls
117 lines (105 loc) · 2.49 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
version: '3'
tasks:
# Simple text input prompt
greet:
desc: Greet someone by name
requires:
vars:
- NAME
cmds:
- echo "Hello, {{.NAME}}!"
# Enum selection (dropdown menu)
deploy:
desc: Deploy to an environment
requires:
vars:
- name: ENVIRONMENT
enum: [dev, staging, prod]
cmds:
- echo "Deploying to {{.ENVIRONMENT}}..."
choose_file:
desc: Choose a file
requires:
vars:
- name: SELECTED_FILE
sh: printf "val1\nval2\nval3\n"
cmds:
- echo "You have selected {{.SELECTED_FILE}}"
# Multiple variables at once
release:
desc: Create a release with version and environment
requires:
vars:
- VERSION
- name: ENVIRONMENT
enum: [dev, staging, prod]
cmds:
- echo "Releasing {{.VERSION}} to {{.ENVIRONMENT}}"
# Nested dependencies - all prompts happen upfront
full-deploy:
desc: Full deployment pipeline with nested deps
deps:
- task: build
- task: test
cmds:
- task: deploy
build:
requires:
vars:
- name: BUILD_MODE
enum: [debug, release]
cmds:
- echo "Building in {{.BUILD_MODE}} mode..."
test:
requires:
vars:
- name: TEST_SUITE
enum: [unit, integration, e2e, all]
cmds:
- echo "Running {{.TEST_SUITE}} tests..."
# Variable already set - no prompt shown
greet-world:
desc: Greet the world (no prompt needed)
vars:
NAME: World
requires:
vars:
- NAME
cmds:
- echo "Hello, {{.NAME}}!"
# Complex scenario with multiple levels
pipeline:
desc: Run the full CI/CD pipeline
cmds:
- task: setup
- task: build
- task: test
- task: deploy
setup:
requires:
vars:
- PROJECT_NAME
cmds:
- echo "Setting up project {{.PROJECT_NAME}}..."
# Docker example with multiple selections
docker-build:
desc: Build a Docker image
requires:
vars:
- IMAGE_NAME
- IMAGE_TAG
- name: PLATFORM
enum: [linux/amd64, linux/arm64, linux/arm/v7]
cmds:
- echo "Building {{.IMAGE_NAME}}:{{.IMAGE_TAG}} for {{.PLATFORM}}"
# Database migration example
db-migrate:
desc: Run database migrations
requires:
vars:
- name: DIRECTION
enum: [up, down]
- name: DATABASE
enum: [postgres, mysql, sqlite]
cmds:
- echo "Running {{.DIRECTION}} migrations on {{.DATABASE}}"