├── README.md
├── android.yaml
├── dotnetcore-powershell.yaml
├── dotnetcore-with-docker.yaml
├── email.html
├── golang-parallel.yaml
├── golang.yaml
├── helloworld.yaml
├── ios-xcode.yaml
├── maven.yaml
├── npm.yaml
├── php.yaml
├── ruby.yaml
└── templates.json
/README.md:
--------------------------------------------------------------------------------
1 | # YAML Configuration Template
2 |
3 | the yaml tempaltes can be used for docker setup
4 |
5 | - [Hello World](./helloworld.yaml): list per-installed environments and say hello from docker image 'hello world'
6 | - [Maven](./maven.yaml): git clone spring demo project and run maven unit test, package
7 | - [Golang](./golang.yaml): to run go lint, test, and upload test coverage report
8 | - [Golang-Parallel](./golang-parallel.yaml): to run go lint, test, and upload test coverage report in parallel
9 | - [Npm](./npm.yaml): to run npm install, lint, test and upload test coverage report
10 | - [Ruby](./ruby.yaml): bundle install, rubocop and test
11 | - [PHP](./php.yaml): composer install, run phpunit and upload coverage report
12 | - [Android-Gradle](./android.yaml): build android project with gradle
13 | - [.NetCore](./dotnetcore-powershell.yaml): build .netcore porject with powershell, run from windows Agent
14 | - [.NetCore-Docker](./dotnetcore-with-docker.yaml): build .netcore porject within docker
15 |
--------------------------------------------------------------------------------
/android.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # Android Project Template with Gradle
3 | #
4 |
5 | envs:
6 | FLOWCI_GIT_URL: "https://github.com/hidroh/materialistic.git"
7 |
8 | GRADLE_USER_HOME: "${FLOWCI_AGENT_WORKSPACE}/.gradle"
9 | GRADLE_OPTS: "-Dorg.gradle.daemon=false"
10 |
11 | docker:
12 | image: openjdk:11-jdk
13 |
14 | steps:
15 | - name: setup android sdk
16 | envs:
17 | ANDROID_COMPILE_SDK: "28"
18 | ANDROID_BUILD_TOOLS: "28.0.2"
19 | plugin: android-sdk-setup
20 |
21 | - name: clone
22 | docker:
23 | image: flowci/debian-git
24 | plugin: 'gitclone'
25 |
26 | - name: lint
27 | bash: |
28 | cd ${FLOWCI_GIT_REPO}
29 | ./gradlew -Pci --console=plain :app:lintDebug -PbuildDir=lint
30 |
31 | - name: build
32 | bash: |
33 | cd ${FLOWCI_GIT_REPO}
34 | ./gradlew assembleDebug
35 |
36 | - name: test
37 | timeout: 7200
38 | bash: |
39 | cd ${FLOWCI_GIT_REPO}
40 | ./gradlew -Pci --console=plain :app:testDebug
41 |
42 | - name: jacoco
43 | bash: |
44 | cd ${FLOWCI_GIT_REPO}
45 | mkdir -p ${PWD}/app/build/intermediates/classes
46 | ln -s ${PWD}/app/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes ${PWD}/app/build/intermediates/classes/debug
47 | ./gradlew -Pci --console=plain jacocoTestReport
48 |
49 | - name: upload report
50 | docker:
51 | image: ubuntu:18.04
52 | envs:
53 | # report from jacoco
54 | REPORT_PATH: ${FLOWCI_GIT_REPO}/app/build/reports/coverage
55 | REPORT_NAME: Code Coverage
56 | plugin: report-upload
57 |
58 | - name: build release
59 | bash: |
60 | cd ${FLOWCI_GIT_REPO}
61 | ./gradlew assembleRelease
62 |
63 |
64 | ###############################################
65 | ### to sign apk, it needs to create a 'secret' in admin page,
66 | ### and put the secret name to `SIGN_SECRET`
67 | ###############################################
68 |
69 | # - name: sign apk
70 | # envs:
71 | # SIGN_FILE_PATTERN: '*-unsigned.apk'
72 | # SIGN_SECRET: android-demo
73 | # docker:
74 | # image: openjdk:8-jdk
75 | # plugin: android-signing
76 |
77 | # - name: upload singed apk
78 | # docker:
79 | # image: ubuntu:18.04
80 | # envs:
81 | # artifact_pattern: '*-signed.apk'
82 | # plugin: 'artifact-upload'
83 |
--------------------------------------------------------------------------------
/dotnetcore-powershell.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # Example YAML for flow.ci
3 | #
4 | envs:
5 | FLOWCI_GIT_URL: https://gitlab.com/tobiaskoch/gitlab-ci-example-dotnetcore.git
6 |
7 | steps:
8 | - name: clone
9 | pwsh: |
10 | Remove-Item $env:FLOWCI_GIT_REPO -Force -ErrorAction SilentlyContinue
11 | git clone $env:FLOWCI_GIT_URL $env:FLOWCI_GIT_REPO
12 | echo "$env:FLOWCI_GIT_URL has been cloned"
13 |
14 | - name: test
15 | pwsh: |
16 | cd $env:FLOWCI_GIT_REPO
17 | dotnet --version
18 | dotnet test
19 |
20 | - name: publish
21 | pwsh: |
22 | cd $env:FLOWCI_GIT_REPO
23 | # output to publish directory
24 | dotnet publish -c Release -o publish MyProject/MyProject.csproj
--------------------------------------------------------------------------------
/dotnetcore-with-docker.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # Example YAML for flow.ci
3 | #
4 | envs:
5 | FLOWCI_GIT_URL: https://gitlab.com/tobiaskoch/gitlab-ci-example-dotnetcore.git
6 |
7 | docker:
8 | image: mcr.microsoft.com/dotnet/core/sdk:2.2.301
9 |
10 | steps:
11 | - name: clone
12 | docker:
13 | image: flowci/debian-git
14 | plugin: 'gitclone'
15 |
16 | - name: test
17 | bash: |
18 | cd $FLOWCI_GIT_REPO
19 | echo | dotnet --version
20 | dotnet tool install dotnet-reportgenerator-globaltool --tool-path tools
21 | dotnet test
22 |
23 | - name: publish
24 | bash: |
25 | cd $FLOWCI_GIT_REPO
26 |
27 | # output to publish directory
28 | dotnet publish -c Release -o ../publish MyProject/MyProject.csproj
29 |
30 | - name: upload
31 | envs:
32 | artifact_path: '${FLOWCI_AGENT_JOB_DIR}/${FLOWCI_GIT_REPO}/publish/'
33 | plugin: 'artifact-upload'
--------------------------------------------------------------------------------
/email.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
43 |
44 |
45 |
46 |
47 | #if( $FLOWCI_JOB_STATUS == 'SUCCESS' )
48 |
flow.ci report: $FLOWCI_FLOW_NAME $FLOWCI_JOB_BUILD_NUM
49 | #elseif( $FLOWCI_JOB_STATUS == 'FAILURE')
50 |
flow.ci report: $FLOWCI_FLOW_NAME $FLOWCI_JOB_BUILD_NUM
51 | #elseif( $FLOWCI_JOB_STATUS == 'CANCELLED')
52 |
flow.ci report: $FLOWCI_FLOW_NAME $FLOWCI_JOB_BUILD_NUM
53 | #elseif( $FLOWCI_JOB_STATUS == 'TIMEOUT')
54 |
flow.ci report: $FLOWCI_FLOW_NAME $FLOWCI_JOB_BUILD_NUM
55 | #end
56 |
57 |
58 |
59 |
60 | State: |
61 | $FLOWCI_JOB_STATUS |
62 |
63 |
64 | Trigger: |
65 | $FLOWCI_JOB_TRIGGER |
66 |
67 |
68 | Triggered By: |
69 | $FLOWCI_JOB_TRIGGER_BY |
70 |
71 |
72 | Start At: |
73 | $FLOWCI_JOB_START_AT |
74 |
75 |
76 | Finish At: |
77 | $FLOWCI_JOB_FINISH_AT |
78 |
79 |
80 | Duration: |
81 | $FLOWCI_JOB_DURATION (s) |
82 |
83 |
84 |
85 | #if ( $FLOWCI_JOB_TRIGGER == 'PUSH' || $$FLOWCI_JOB_TRIGGER == 'TAG' )
86 |
87 |
88 | Git Info:
89 |
90 | Branch: $FLOWCI_GIT_BRANCH
91 |
92 |
96 |
97 | Commit Message: $FLOWCI_GIT_COMMIT_MESSAGE
98 |
99 | |
100 |
101 | #end
102 |
103 |
104 | #if ( $FLOWCI_JOB_TRIGGER == 'PR_OPENED' || $$FLOWCI_JOB_TRIGGER == 'PR_MERGED' )
105 |
106 |
107 | Git Info:
108 |
112 |
113 | Message: $FLOWCI_GIT_PR_MESSAGE
114 |
115 |
116 | Number: $FLOWCI_GIT_PR_NUMBER
117 |
118 |
119 | Head Repo: $FLOWCI_GIT_PR_HEAD_REPO_NAME, $FLOWCI_GIT_PR_HEAD_REPO_BRANCH
120 |
121 |
122 | Base Repo: $FLOWCI_GIT_PR_BASE_REPO_NAME, $FLOWCI_GIT_PR_BASE_REPO_BRANCH
123 |
124 | |
125 |
126 | #end
127 |
128 |
129 |
130 |
131 | Steps:
132 | #foreach( $item in $$FLOWCI_JOB_STEPS.split(";") )
133 |
134 | #set ( $stepInfo = $item.split("=") )
135 | $stepInfo[0] : $stepInfo[1]
136 |
137 | #end
138 | |
139 |
140 |
141 |
142 |
143 |
144 |
--------------------------------------------------------------------------------
/golang-parallel.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # Build Golang project with parallel
3 | #
4 |
5 | envs:
6 | # Git config
7 | FLOWCI_GIT_URL: "https://github.com/FlowCI/gin.git"
8 |
9 | ## Credential name if git repo url is ssh or login required for http
10 | # FLOWCI_GIT_CREDENTIAL: "the credentail name your created"
11 |
12 | steps:
13 | - name: clone
14 | docker:
15 | image: flowci/debian-git
16 | plugin: 'gitclone'
17 | cache:
18 | key: repo
19 | paths:
20 | - "./${FLOWCI_GIT_REPO}"
21 |
22 | - parallel:
23 | lint-flow:
24 | steps:
25 | - name: lint
26 | plugin: 'go-lint'
27 | allow_failure: true
28 | cache:
29 | key: repo
30 |
31 | test-flow:
32 | steps:
33 | - name: test
34 | docker:
35 | image: golang:1.13
36 | plugin: 'go-test'
37 | cache:
38 | key: repo
--------------------------------------------------------------------------------
/golang.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # Golang Project Template
3 | #
4 |
5 | envs:
6 | # Git config
7 | FLOWCI_GIT_URL: "https://github.com/FlowCI/gin.git"
8 |
9 | ## Credential name if git repo url is ssh or login required for http
10 | # FLOWCI_GIT_CREDENTIAL: "the credentail name your created"
11 |
12 | steps:
13 | - name: clone
14 | docker:
15 | image: flowci/debian-git
16 | plugin: 'gitclone'
17 | allow_failure: false
18 |
19 | - name: lint
20 | plugin: 'go-lint'
21 | allow_failure: true
22 |
23 | - name: test
24 | docker:
25 | image: golang:1.13
26 | plugin: 'go-test'
27 |
--------------------------------------------------------------------------------
/helloworld.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # Example YAML for flow.ci
3 | #
4 |
5 | # environment variables in flow level which can be used in every steps
6 | envs:
7 | # Define Flow level variables
8 | EXAMPLE_VAR: "Hi, I'am an example YAML"
9 |
10 | steps:
11 | - name: run script
12 | envs:
13 | SAY_HELLO: "hello.flow.ci"
14 | allow_failure: true
15 | bash: |
16 | echo ${SAY_HELLO} ${EXAMPLE_VAR}
17 | sleep 1
18 |
19 | - name: build in envs
20 | bash: |
21 | echo "Server URL = ${FLOWCI_SERVER_URL}"
22 | echo "Ttoken = ${FLOWCI_AGENT_TOKEN}"
23 | echo "Port = ${FLOWCI_AGENT_PORT}"
24 | echo "Workspace = ${FLOWCI_AGENT_WORKSPACE}"
25 | echo "Current job dir = ${FLOWCI_AGENT_JOB_DIR}"
26 | echo "Plugin dir = ${FLOWCI_AGENT_PLUGIN_DIR}"
27 | echo "IP of en0 = ${FLOWCI_AGENT_IP_en0}"
28 |
29 | - name: state example
30 | docker:
31 | image: ubuntu:18.04
32 | bash: |
33 | echo 'this will executed on each sub steps'
34 | steps:
35 | - name: install dep A
36 | bash: |
37 | echo 'install something about A'
38 | echo 'the docker image from parent step will be used'
39 | - name: install dep B
40 | docker:
41 | image: node:14
42 | bash: |
43 | echo 'install something about B'
44 | echo 'the docker image on current step will be used'
45 |
46 | - name: run from docker
47 | envs:
48 | COND_VAR: "hello"
49 | condition: |
50 | return "$COND_VAR" == "hello"
51 | docker:
52 | image: golang:1.12
53 | bash: |
54 | go get github.com/golang/example/hello
55 | $GOPATH/bin/hello
56 |
57 | - name: run mutiple dockers
58 | dockers:
59 | - image: flowci/debian-docker
60 | is_runtime: true
61 |
62 | - image: mysql:5.6
63 | environment:
64 | MYSQL_ROOT_PASSWORD: 12345
65 | bash: |
66 | ## print container id
67 | echo "ubuntu:18.04 id = $CONTAINER_ID_0"
68 | echo "mysql:5.6 id = $CONTAINER_ID_1"
69 |
70 | ## print container ip, network mode is 'bridge' by default
71 | echo "ubuntu:18.04 ip = $CONTAINER_IP_0"
72 | echo "mysql:5.6 ip = $CONTAINER_IP_1"
73 |
74 | python3 --version
75 |
76 | ## wait-for-it.sh is built-in command to wait for other service, bash only
77 | wait-for-it.sh ${CONTAINER_IP_1}:3306 -t 30
78 | if [ $? == 0 ];then
79 | docker run --network ${FLOWCI_AGENT_DOCKER_NETWORK} --rm mysql:5.6 mysql -h${CONTAINER_IP_1} -uroot -p12345 mysql -e "select * from user"
80 | fi
81 |
--------------------------------------------------------------------------------
/ios-xcode.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # iOS Project Template with xcode
3 | #
4 |
5 | envs:
6 | # Git config
7 | FLOWCI_GIT_URL: "https://github.com/FlowCI/FaceLandmarksDetection.git"
8 |
9 | ## Credential name if git repo url is ssh or login required for http
10 | # FLOWCI_GIT_CREDENTIAL: "the credentail name your created"
11 |
12 | IOS_PROJECT_NAME: DetectFaceLandmarks.xcodeproj
13 |
14 | # schema name could be selected from 'xcodebuild -list'
15 | IOS_SCHEME_NAME: DetectFaceLandmarks
16 |
17 | steps:
18 | - name: clone
19 | plugin: 'gitclone'
20 | allow_failure: false
21 |
22 | # sudo gem install cocoapods
23 | - name: pod install
24 | allow_failure: true
25 | bash: |
26 | cd ${FLOWCI_GIT_REPO}
27 | pod install
28 |
29 | # If 'xcodebuild' not found, please install xcode and run 'sudo xcode-select -s /Applications/Xcode.app/Contents/Developer'
30 | # gem install xcpretty
31 | - name: test
32 | envs:
33 | TEST_DEST: 'platform=iOS Simulator,name=iPhone 11,OS=15.0'
34 | bash: |
35 | xcodebuild clean -project $IOS_PROJECT_NAME -scheme $IOS_SCHEME_NAME
36 | xcodebuild test -project $IOS_PROJECT_NAME -scheme $IOS_SCHEME_NAME -destination $TEST_DEST
37 |
38 | - name: archive
39 | bash: |
40 | xcodebuild clean archive -archivePath build/${IOS_PROJECT_NAME} -scheme ${IOS_SCHEME_NAME}
41 | xcodebuild archive -project ${IOS_PROJECT_NAME} -scheme ${IOS_SCHEME_NAME} -archivePath ./${IOS_SCHEME_NAME}.xcarchive -exportProvisioningProfile "ProvisioningProfileName"
--------------------------------------------------------------------------------
/maven.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # Maven Project Template
3 | #
4 |
5 | envs:
6 | # Git config
7 | FLOWCI_GIT_URL: "https://github.com/FlowCI/spring-petclinic-sample.git"
8 |
9 | ## Credential name if git repo url is ssh or login required for http
10 | # FLOWCI_GIT_CREDENTIAL: "the credentail name your created"
11 |
12 | docker:
13 | image: "maven:3.6-jdk-8"
14 |
15 | steps:
16 | - name: clone
17 | docker:
18 | image: flowci/debian-git
19 | plugin: 'gitclone'
20 | allow_failure: false
21 |
22 | - name: run unit test
23 | envs:
24 | MVN_CMD: "mvn clean test"
25 | plugin: 'maven-runner'
26 |
27 | - name: junit upload
28 | plugin: "junit-report-uploader"
29 |
30 | - name: jacoco upload
31 | plugin: "jacoco-report-uploader"
32 |
33 | - name: package
34 | envs:
35 | MVN_CMD: "mvn package -Dmaven.test.skip=true"
36 | plugin: 'maven-runner'
37 |
38 | - name: upload
39 | envs:
40 | artifact_pattern: "*.jar"
41 | plugin: 'artifact-upload'
--------------------------------------------------------------------------------
/npm.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # NPM Project Template
3 | #
4 |
5 | envs:
6 | FLOWCI_GIT_URL: "https://github.com/hexojs/hexo.git"
7 |
8 | ## default docker image for steps
9 | docker:
10 | image: node:12
11 |
12 | steps:
13 | - name: clone
14 | docker:
15 | image: flowci/debian-git
16 | plugin: 'gitclone'
17 |
18 | - name: install
19 | envs:
20 | NPM_CMD: "npm install"
21 | plugin: 'npm-runner'
22 |
23 | - name: lint
24 | envs:
25 | NPM_CMD: "npm run eslint"
26 | plugin: 'npm-runner'
27 |
28 | - name: test
29 | envs:
30 | NPM_CMD: "npm run test-cov"
31 | plugin: 'npm-runner'
32 |
33 | - name: gen-report
34 | envs:
35 | NPM_CMD: "nyc report --reporter=html"
36 | plugin: 'npm-runner'
37 |
38 | - name: report upload
39 | docker:
40 | image: ubuntu:18.04
41 | envs:
42 | REPORT_PATH: "${FLOWCI_GIT_REPO}/coverage"
43 | REPORT_NAME: "Code Coverage"
44 | plugin: 'report-upload'
45 |
--------------------------------------------------------------------------------
/php.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # PHP Project Template
3 | #
4 |
5 | envs:
6 | FLOWCI_GIT_URL: "https://gitlab.com/gitlab-examples/php.git"
7 |
8 | steps:
9 | - name: clone
10 | docker:
11 | image: flowci/debian-git
12 | plugin: 'gitclone'
13 |
14 | - name: composer install
15 | docker:
16 | image: composer:2
17 | bash: |
18 | cd $FLOWCI_GIT_REPO
19 | composer install
20 |
21 | - name: unit test
22 | dockers:
23 | - image: php:7.4
24 | is_runtime: true
25 | - image: mysql:5.7
26 | name: mysql
27 | environment:
28 | MYSQL_DATABASE: hello_world_test
29 | MYSQL_ROOT_PASSWORD: mysql
30 | bash: |
31 | cd $FLOWCI_GIT_REPO
32 |
33 | ## install db driver
34 | docker-php-ext-install pdo_mysql
35 |
36 | ## install phpunit test coverage driver
37 | pecl install xdebug && docker-php-ext-enable xdebug
38 |
39 | ## make sure mysql is upon running
40 | wait-for-it.sh mysql:3306 -t 30
41 |
42 | ## run phpunit
43 | ./vendor/bin/phpunit --configuration phpunit_mysql.xml --coverage-html reports
44 |
45 | - name: upload report
46 | docker:
47 | image: ubuntu:18.04
48 | envs:
49 | REPORT_PATH: "${FLOWCI_GIT_REPO}/reports"
50 | REPORT_NAME: "Code Coverage"
51 | plugin: 'report-upload'
52 |
--------------------------------------------------------------------------------
/ruby.yaml:
--------------------------------------------------------------------------------
1 | #
2 | # Ruby Project Template
3 | #
4 |
5 | envs:
6 | # Git config
7 | FLOWCI_GIT_URL: "https://github.com/rack/rack.git"
8 |
9 | ## Credential name if git repo url is ssh or login required for http
10 | # FLOWCI_GIT_CREDENTIAL: "the credentail name your created"
11 |
12 | GEM_HOME: ${FLOWCI_AGENT_WORKSPACE}/.gem_home
13 |
14 | docker:
15 | image: ruby:2.7
16 |
17 | steps:
18 | - name: clone
19 | docker:
20 | image: flowci/debian-git
21 | plugin: 'gitclone'
22 |
23 | - name: install
24 | bash: |
25 | cd $FLOWCI_GIT_REPO
26 | bundle install
27 |
28 | - name: rubocop
29 | bash: |
30 | cd $FLOWCI_GIT_REPO
31 | ${GEM_HOME}/bin/rubocop --format html -o rubocop.html
32 | allow_failure: true
33 |
34 | - name: upload report
35 | envs:
36 | REPORT_PATH: "${FLOWCI_GIT_REPO}/rubocop.html"
37 | REPORT_NAME: "Rubocop"
38 | REPORT_ENTRY_FILE: "rubocop.html"
39 | plugin: 'report-upload'
40 |
41 | - name: test
42 | bash: |
43 | cd $FLOWCI_GIT_REPO
44 | bundle exec rake test
45 | allow_failure: true
46 |
--------------------------------------------------------------------------------
/templates.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "url": "https://raw.githubusercontent.com/FlowCI/templates/master/helloworld.yaml",
4 | "url_cn": "https://gitee.com/flow_ci/flow-templates/raw/master/helloworld.yaml",
5 | "title": "Hello World",
6 | "desc": "Sample template shows how to define steps",
7 | "default": true
8 | },
9 | {
10 | "url": "https://raw.githubusercontent.com/FlowCI/templates/master/maven.yaml",
11 | "url_cn": "https://gitee.com/flow_ci/flow-templates/raw/master/maven.yaml",
12 | "title": "Maven",
13 | "desc": "Template of how to build, test Maven project"
14 | },
15 | {
16 | "url": "https://raw.githubusercontent.com/FlowCI/templates/master/golang.yaml",
17 | "url_cn": "https://gitee.com/flow_ci/flow-templates/raw/master/golang.yaml",
18 | "title": "Golang",
19 | "desc": "Template of how to build, test Golang project"
20 | },
21 | {
22 | "url": "https://raw.githubusercontent.com/FlowCI/templates/master/npm.yaml",
23 | "url_cn": "https://gitee.com/flow_ci/flow-templates/raw/master/npm.yaml",
24 | "title": "npm",
25 | "desc": "Template of how to build, test NPM project"
26 | },
27 | {
28 | "url": "https://raw.githubusercontent.com/FlowCI/templates/master/ruby.yaml",
29 | "url_cn": "https://gitee.com/flow_ci/flow-templates/raw/master/ruby.yaml",
30 | "title": "Ruby",
31 | "desc": "Template of how to build, test Ruby project"
32 | },
33 | {
34 | "url": "https://raw.githubusercontent.com/FlowCI/templates/master/php.yaml",
35 | "url_cn": "https://gitee.com/flow_ci/flow-templates/raw/master/php.yaml",
36 | "title": "PHP",
37 | "desc": "Template of how to build, test PHP project"
38 | },
39 | {
40 | "url": "https://raw.githubusercontent.com/FlowCI/templates/master/android.yaml",
41 | "url_cn": "https://gitee.com/flow_ci/flow-templates/raw/master/android.yaml",
42 | "title": "Android",
43 | "desc": "Template of how to build, test Android project by Gradle"
44 | },
45 | {
46 | "url": "https://raw.githubusercontent.com/FlowCI/templates/master/dotnetcore-powershell.yaml",
47 | "url_cn": "https://gitee.com/flow_ci/flow-templates/raw/master/dotnetcore-powershell.yaml",
48 | "title": ".NetCore with PowerShell",
49 | "desc": "Template of how to build, test .NetCore project with PowerShell"
50 | },
51 | {
52 | "url": "https://raw.githubusercontent.com/FlowCI/templates/master/dotnetcore-with-docker.yaml",
53 | "url_cn": "https://gitee.com/flow_ci/flow-templates/raw/master/dotnetcore-with-docker.yaml",
54 | "title": ".NetCore within Docker",
55 | "desc": "Template of how to build, test .NetCore project within docker"
56 | }
57 | ]
--------------------------------------------------------------------------------