github.com/upcmd/up@v0.8.1-0.20230108151705-ad8b797bf04f/up.yml (about) 1 2 version: 1.0.0 3 4 vars: 5 ver_yq: v3.3.2 6 release_api_ep: https://api.github.com/repos/upcmd/up/releases 7 release_upload_ep: https://uploads.github.com/repos/upcmd/up/releases 8 9 dists_for_latest: 10 - os: darwin 11 arch: amd64 12 - os: darwin 13 arch: arm64 14 - os: linux 15 arch: amd64 16 - os: windows 17 arch: amd64 18 19 license_header: | 20 // Ultimate Provisioner: UP cmd 21 // Copyright (c) 2019 Stephen Cheng and contributors 22 23 /* This Source Code Form is subject to the terms of the Mozilla Public 24 * License, v. 2.0. If a copy of the MPL was not distributed with this 25 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ 26 27 latest_tagged_version: 0.9.1 28 29 version_gofile_template: | 30 package main 31 var version_info = `{{.TRACEABLE_VERSION_MARKER}}` 32 33 version_template: | 34 35 version_info: 36 Type: {{.releaseType}} 37 Tag: {{.releaseTag}} 38 Vesion: {{.releaseVersion}} 39 SHA: {{.releaseSHA}} 40 Source: https://github.com/upcmd/up/tree/{{.releaseSHA}} 41 ReleaseDate: {{now|date "20060102"}} 42 Changes: | 43 {{.releaseNote | indent 4}} 44 45 rolling_version_notes: | 46 bleeding-edge rolling release 47 based on {{.latest_tagged_version}} with updates 48 full regression tested and stable 49 {{ printf "./release/rolling/%s.md" .releaseDate |fileContent}} 50 51 rolling_version_template: | 52 53 version_info: 54 Type: bleeding-edge-rolling 55 Tag: master 56 Vesion: rolling-{{now|date "20060102"}} 57 SHA: {{.releaseSHA}} 58 Source: https://github.com/upcmd/up/tree/{{.releaseSHA}} 59 ReleaseDate: {{now|date "20060102"}} 60 BaseOn: {{.latest_tagged_version}} with updates 61 62 latest_version_notes: | 63 latest bleeding-edge release 64 based on {{.latest_tagged_version}} with updates 65 full regression tested and stable 66 {{ printf "./release/rolling/%s.md" .releaseDate |fileContent}} 67 68 latest_version_template: | 69 70 version_info: 71 Type: bleeding-edge-latest 72 Tag: master 73 Vesion: latest 74 SHA: {{.releaseSHA}} 75 Source: https://github.com/upcmd/up/tree/{{.releaseSHA}} 76 ReleaseDate: {{now|date "20060102"}} 77 BaseOn: {{.latest_tagged_version}} with updates 78 79 dvars: 80 - name: releaseDate 81 value: '{{now|date "20060102"}}' 82 - name: rolling_version_notes 83 value: '{{.rolling_version_notes}}' 84 expand: 2 85 - name: latest_version_notes 86 value: '{{.latest_version_notes}}' 87 expand: 2 88 89 tasks: 90 - 91 name: deps 92 desc: update key deps 93 task: 94 - 95 func: shell 96 do: 97 - go list -m -versions github.com/upcmd/yq/v3 98 - 'go get github.com/upcmd/yq/v3@{{.ver_yq}}' 99 - 100 name: facts 101 desc: gather facts 102 task: 103 - 104 func: shell 105 do: 106 - uname 107 reg: result 108 109 - func: cmd 110 desc: get os - [Darwin | Linux] 111 dvars: 112 - name: os 113 value: '{{ .result.Output }}' 114 flags: 115 - v 116 do: 117 - name: print 118 cmd: 'OS: {{.os}}' 119 - name: return 120 cmd: 121 - os 122 123 - 124 name: Publish_untagged 125 desc: publish both rolling and latest releases 126 task: 127 - func: call 128 do: 129 - Publish_rolling 130 - Publish_latest 131 132 - 133 name: Publish_latest 134 desc: build the latest bleeding-edge release 135 task: 136 - 137 func: shell 138 do: git rev-parse --verify HEAD 139 140 - 141 func: cmd 142 dvars: 143 - name: releaseSHA 144 value: '{{ .last_result.Output }}' 145 flags: [taskScope] 146 do: 147 - name: print 148 cmd: | 149 SHA: {{.releaseSHA}} 150 151 - func: cmd 152 desc: | 153 get the release version info 154 dvars: 155 - name: TRACEABLE_VERSION_MARKER 156 value: '{{.latest_version_template}}' 157 expand: 2 158 flags: 159 - v 160 - name: version_gofile_content 161 value: '{{.version_gofile_template}}' 162 expand: 2 163 flags: 164 - v 165 166 do: 167 - name: print 168 - name: print 169 desc: go version file 170 cmd: | 171 {{.version_gofile_content}} 172 - name: writeFile 173 desc: prepare the release info to be built into binary 174 cmd: 175 content: "{{.version_gofile_content}}" 176 filename: version.go 177 dir: ./app/up 178 179 - namex: inspect 180 cmd: 181 - exec_vars 182 183 - namex: pause 184 desc: double check release note 185 186 - namex: exit 187 188 - 189 func: call 190 desc: build only the common distros 191 vars: 192 ver: latest 193 dvars: 194 - name: distlist 195 value: | 196 {{ range $idx, $dist := .dists_for_latest -}} 197 {{- with $dist }} 198 - {{ .os}}/{{.arch -}} 199 {{end}} 200 {{end}} 201 flags: 202 - toObj 203 - keepName 204 - v 205 do: buildDistro 206 207 - func: shell 208 desc: enquire the latest release 209 do: 210 - curl -s https://api.github.com/repos/upcmd/up/releases/tags/latest 211 reg: result 212 213 - func: shell 214 desc: delete the latest release remotely if it exists 215 dvars: 216 - name: release 217 value: '{{.result.Output}}' 218 flags: 219 - toObj 220 - name: releaseid 221 value: '{{.release_object.id}}' 222 flags: 223 - taskScope 224 - v 225 if: '{{ne (printf "%s" .releaseid) "None" }}' 226 do: 227 - echo "deleting release - {{.releaseid}}" 228 - echo """curl -sX DELETE {{.release_api_ep}}/{{.releaseid}}""" 229 - | 230 curl -s \ 231 -X DELETE \ 232 -u ${GITHUB_USERNAME}:${GITHUB_TOKEN} \ 233 {{.release_api_ep}}/{{.releaseid}} 234 else: 235 - func: cmd 236 do: 237 - name: print 238 cmd: "no latest release in remote, ignore" 239 240 - func: shell 241 desc: | 242 delete the remote tag latest 243 create latest release tag 244 do: 245 - git push --delete origin latest 246 - git tag -d latest 247 - git tag latest 248 - git push origin refs/tags/latest 249 flags: 250 - ignoreError 251 252 - func: shell 253 desc: create the latest master release 254 dvars: 255 - name: quick_notes 256 value: '{{.latest_version_notes| replace "\n" "\\n"}}' 257 expand: 2 258 flags: 259 - v 260 do: | 261 curl -s -d ' 262 { 263 "tag_name": "latest", 264 "target_commitish": "master", 265 "name": "latest", 266 "body": "{{.quick_notes}}", 267 "draft": false, 268 "prerelease": false 269 } 270 ' \ 271 -X POST \ 272 -u ${GITHUB_USERNAME}:${GITHUB_TOKEN} \ 273 -H "Content-Type: application/json" \ 274 {{.release_api_ep}} 275 reg: result 276 277 - func: block 278 loop: dists_for_latest 279 desc: upload binary files 280 dvars: 281 - name: release 282 value: '{{.result.Output}}' 283 flags: 284 - toObj 285 - name: releaseid 286 value: '{{.release_object.id}}' 287 flags: 288 - v 289 do: 290 - func: shell 291 desc: upload the most used distros only 292 dvars: 293 - name: os 294 value: '{{.loopitem.os}}' 295 - name: arch 296 value: '{{.loopitem.arch}}' 297 do: 298 - echo "upload for latest release - {{.releaseid}} for {{.os}}-{{.arch}}" 299 - | 300 curl -s \ 301 -X POST \ 302 --data-binary '@build/up_{{.os}}_{{.arch}}_latest' \ 303 -u ${GITHUB_USERNAME}:${GITHUB_TOKEN} \ 304 -H "Content-Type: application/json" \ 305 {{.release_upload_ep}}/{{.releaseid}}/assets?name=up_{{.os}}_{{.arch}}_latest 306 if: '{{ne (printf "%s" .releaseid) "None" }}' 307 308 - 309 name: Publish_rolling 310 desc: build the bleeding-edge rolling release 311 task: 312 - 313 func: shell 314 do: git rev-parse --verify HEAD 315 316 - 317 func: cmd 318 dvars: 319 - name: releaseSHA 320 value: '{{ .last_result.Output }}' 321 flags: [taskScope] 322 do: 323 - name: print 324 cmd: | 325 SHA: {{.releaseSHA}} 326 327 - func: cmd 328 desc: | 329 get the release version info 330 dvars: 331 - name: TRACEABLE_VERSION_MARKER 332 value: '{{.rolling_version_template}}' 333 expand: 2 334 flags: 335 - v 336 - name: version_gofile_content 337 value: '{{.version_gofile_template}}' 338 expand: 2 339 flags: 340 - v 341 342 do: 343 - name: print 344 desc: go version file 345 cmd: | 346 {{.version_gofile_content}} 347 - name: writeFile 348 desc: prepare the release info to be built into binary 349 cmd: 350 content: "{{.version_gofile_content}}" 351 filename: version.go 352 dir: ./app/up 353 354 - namex: exit 355 356 - 357 func: call 358 desc: build only the common distros 359 dvars: 360 - name: ver 361 value: 'rolling-{{now|date "20060102"}}' 362 - name: distlist 363 value: | 364 {{ range $idx, $dist := .dists_for_latest -}} 365 {{- with $dist }} 366 - {{ .os}}/{{.arch -}} 367 {{end}} 368 {{end}} 369 flags: 370 - toObj 371 - keepName 372 - v 373 do: buildDistro 374 375 - func: shell 376 desc: | 377 delete the remote tag latest 378 create latest release tag 379 do: 380 - git push --delete origin latest 381 - git tag -d latest 382 - git tag latest 383 - git push origin refs/tags/latest 384 flags: 385 - ignoreError 386 387 - func: shell 388 desc: | 389 create rolling release tag 390 do: 391 - 'git push --delete origin rolling-{{now|date "20060102"}}' 392 - 'git tag -d rolling-{{now|date "20060102"}}' 393 - 'git tag rolling-{{now|date "20060102"}}' 394 - 'git push origin refs/tags/rolling-{{now|date "20060102"}}' 395 flags: 396 - ignoreError 397 398 - func: shell 399 desc: create the latest rolling release 400 dvars: 401 - name: quick_notes 402 value: '{{.rolling_version_notes| replace "\n" "\\n"}}' 403 expand: 2 404 do: | 405 curl -s -d ' 406 { 407 "tag_name": "rolling-{{now|date "20060102"}}", 408 "target_commitish": "master", 409 "name": "rolling-{{now|date "20060102"}}", 410 "body": "{{.quick_notes}}", 411 "draft": false, 412 "prerelease": false 413 } 414 ' \ 415 -X POST \ 416 -u ${GITHUB_USERNAME}:${GITHUB_TOKEN} \ 417 -H "Content-Type: application/json" \ 418 {{.release_api_ep}} 419 reg: result 420 421 - func: block 422 loop: dists_for_latest 423 desc: upload binary files 424 dvars: 425 - name: release 426 value: '{{.result.Output}}' 427 flags: 428 - toObj 429 - name: releaseid 430 value: '{{.release_object.id}}' 431 flags: 432 - v 433 do: 434 - func: shell 435 desc: upload the most used distros only 436 dvars: 437 - name: os 438 value: '{{.loopitem.os}}' 439 - name: arch 440 value: '{{.loopitem.arch}}' 441 do: 442 - echo "upload for latest release - {{.releaseid}} for {{.os}}-{{.arch}}" 443 - | 444 curl -s \ 445 -X POST \ 446 --data-binary '@build/up_{{.os}}_{{.arch}}_rolling-{{now|date "20060102"}}' \ 447 -u ${GITHUB_USERNAME}:${GITHUB_TOKEN} \ 448 -H "Content-Type: application/json" \ 449 {{.release_upload_ep}}/{{.releaseid}}/assets?name=up_{{.os}}_{{.arch}}_rolling-{{now|date "20060102"}} 450 if: '{{ne (printf "%s" .releaseid) "None" }}' 451 452 - 453 name: build 454 desc: build binary 455 task: 456 - 457 func: shell 458 desc: build the binary to build directory 459 do: 460 - rm -rf ./build 461 - mkdir -p ./build/linux 462 - mkdir -p ./build/mac 463 - mkdir -p ./build/arm 464 - GOOS=darwin GOARCH=amd64 go build -o build/mac/up app/up/*.go 465 - GOOS=darwin GOARCH=arm64 go build -o build/m1/up app/up/*.go 466 - GOOS=linux GOARCH=amd64 go build -o build/linux/up app/up/*.go 467 468 - 469 name: buildDistro 470 desc: build distro 471 task: 472 - 473 func: shell 474 desc: build the binary into build directory 475 do: 476 - echo "build version - {{.ver}}" 477 - rm -rf ./build 478 - mkdir -p ./build 479 480 - 481 func: block 482 desc: | 483 conditionally to take common distros for latest release or all distros 484 default to build all types of distros supported 485 if instructed the dist=common, then only build: linux, darwin and windows 486 if: '{{not (pathExisted "distlist") }}' 487 do: 488 - 489 func: shell 490 desc: | 491 this gives a list of supported os/arch types 492 eg: 493 android/arm64 494 darwin/amd64 495 darwin/arm64 496 freebsd/amd64 497 illumos/amd64 498 linux/amd64 499 linux/ppc64 500 netbsd/arm64 501 windows/amd64 502 ..... more ... 503 do: go tool dist list 504 505 - 506 func: cmd 507 desc: obtain the full list of different type of distros 508 dvars: 509 - name: void 510 value: '{{ .last_result.Output |splitLines |reg "distlist" }}' 511 else: 512 - func: cmd 513 desc: build the supplied list of dist types 514 do: 515 - name: print 516 cmd: 'building {{.distlist}}' 517 - name: printObj 518 cmd: 'distlist' 519 520 - func: block 521 desc: build the instructed distribution binary 522 loop: distlist 523 do: 524 - func: shell 525 desc: iterate and build all distros - go ahead if one platform is not supported 526 dvars: 527 - name: void 528 value: '{{.loopitem |split "/" |reg "dist"}}' 529 flags: 530 - v 531 - name: os 532 value: '{{.dist._0}}' 533 - name: arch 534 value: '{{.dist._1}}' 535 do: 536 - 'echo "build release version - {{.ver}} > [ os = {{.os}}, arch = {{.arch}} ]"' 537 - GOOS={{.os}} GOARCH={{.arch}} go build -o build/up_{{.os}}_{{.arch}}_{{.ver}} app/up/*.go 538 flags: 539 - ignoreError 540 541 - 542 func: shell 543 desc: list all built results 544 do: ls -l build/ 545 546 - name: Publish 547 desc: publish for github tagged version 548 task: 549 - 550 func: shell 551 do: git rev-parse --verify HEAD 552 553 - 554 func: cmd 555 dvars: 556 - name: releaseSHA 557 value: '{{ .last_result.Output }}' 558 flags: [taskScope] 559 do: 560 - name: print 561 cmd: | 562 SHA: {{.releaseSHA}} 563 564 - 565 func: shell 566 desc: get the tag version. eg. 0.9.0 567 do: 568 - echo "sha - {{.releaseSHA}}" 569 - git describe --exact-match --tags $(git log -n1 --pretty='%h') 570 reg: result 571 572 - func: cmd 573 desc: get the tag/release version 574 vars: 575 releaseType: tagged-version 576 dvars: 577 - name: ver 578 value: '{{ .result.Output }}' 579 flags: 580 - v 581 - taskScope 582 - name: releaseTag 583 value: '{{ .ver }}' 584 - name: releaseVersion 585 value: '{{ .ver }}' 586 - name: releaseNote 587 value: '{{ printf "%s%s%s" "./release/tags/" .ver ".md" |fileContent}}' 588 flags: 589 - v 590 - taskScope 591 - name: TRACEABLE_VERSION_MARKER 592 value: '{{.version_template}}' 593 expand: 2 594 flags: 595 - v 596 - name: version_gofile_content 597 value: '{{.version_gofile_template}}' 598 expand: 2 599 flags: 600 - v 601 602 do: 603 - name: print 604 cmdx: | 605 version: {{.ver}} 606 SHA: {{.releaseSHA}} 607 - name: print 608 cmdx: | 609 {{.TRACEABLE_VERSION_MARKER}} 610 - name: print 611 desc: go version file 612 cmd: | 613 {{.version_gofile_content}} 614 - name: writeFile 615 desc: prepare the release info to be built into binary 616 cmd: 617 content: "{{.version_gofile_content}}" 618 filename: version.go 619 dir: ./app/up 620 621 - namex: inspect 622 cmd: 623 - exec_vars 624 625 - namex: pause 626 desc: double check release note 627 628 - namex: exit 629 630 - func: call 631 do: 632 - buildDistro 633 634 - func: shell 635 desc: get build binary file list 636 do: ls build 637 638 - func: cmd 639 desc: get binary list as object 640 dvars: 641 - name: void 642 value: '{{ .last_result.Output | splitLines |reg "distList" }}' 643 flags: 644 - v 645 - name: release_note_js_string 646 value: '{{ .releaseNote| replace "\n" "\\n"}}' 647 flags: 648 - v 649 - taskScope 650 do: 651 - name: print 652 cmd: 'distro list: {{.distList}}' 653 654 - func: shell 655 desc: create the tagged release 656 do: 657 - | 658 curl -s -d ' 659 { 660 "tag_name": "{{.ver}}", 661 "target_commitish": "master", 662 "name": "{{.ver}}", 663 "body": "{{.release_note_js_string }}", 664 "draft": false, 665 "prerelease": false 666 } 667 ' \ 668 -X POST \ 669 -u ${GITHUB_USERNAME}:${GITHUB_TOKEN} \ 670 -H "Content-Type: application/json" \ 671 {{.release_api_ep}} 672 reg: result 673 674 - func: block 675 desc: upload all build distro binary files 676 loop: distList 677 dvars: 678 - name: release 679 value: '{{.result.Output}}' 680 flags: 681 - toObj 682 - name: releaseid 683 value: '{{.release_object.id}}' 684 flags: 685 - v 686 do: 687 - func: shell 688 desc: upload the most used distros only 689 do: 690 - echo "upload for {{.ver}} release - {{.releaseid}} with file {{.loopitem}}" 691 - | 692 curl -s \ 693 -X POST \ 694 --data-binary '@build/{{.loopitem}}' \ 695 -u ${GITHUB_USERNAME}:${GITHUB_TOKEN} \ 696 -H "Content-Type: application/json" \ 697 {{.release_upload_ep}}/{{.releaseid}}/assets?name={{.loopitem}} 698 if: '{{ne (printf "%s" .releaseid) "None" }}' 699 700 - name: release_local 701 desc: release it to local path 702 task: 703 - func: call 704 do: 705 - facts 706 - build 707 708 - func: cmd 709 do: 710 - name: print 711 cmd: 'OS is: {{.os}}' 712 713 - func: shell 714 desc: copy the binary to path in osx 715 do: cp -f build/mac/up /usr/local/bin/ 716 if: '{{ eq .os "Darwin" }}' 717 718 - func: shell 719 desc: copy the binary to path in linux 720 do: cp -f build/linux/up /bin/ 721 if: '{{ eq .os "Linux" }}' 722 723 - func: shell 724 desc: | 725 copy the binary to path in Mac with M1 Chip 726 TODO: add if condition to use arch == arm64 727 do: cp -f build/m1/up /bin/ 728 if: '{{ eq .os "Darwin" }}' 729 730 - 731 name: testc 732 desc: test all the function tests 733 task: 734 - 735 func: shell 736 do: 737 - go test ./tests/functests/casec_test.go -v 738 739 - 740 name: Log_gen 741 desc: generate all logs for the docs in build pipeline 742 task: 743 - 744 func: shell 745 dvars: 746 - name: hugo_doc_log_dir 747 value: /up_project/updocs/reflogs 748 flags: 749 - taskScope 750 do: 751 - 'echo "log will be generated at {{.hugo_doc_log_dir}}"' 752 - 'rm -rf {{.hugo_doc_log_dir}}' 753 - 'mkdir -p {{.hugo_doc_log_dir}}' 754 - zsh -c "cp ./build/**/up_linux* /bin/up || cp ./build/linux/up /bin/up" 755 756 - 757 func: call 758 vars: 759 upcmd: up 760 do: 761 - log_gen_main 762 763 - 764 name: Log_gen_test 765 desc: generate all logs for the docs and test in Mac 766 task: 767 - 768 func: cmd 769 dvars: 770 - name: hugo_doc_log_dir 771 value: '{{env "HUGO_DOC_LOG_DIR"}}' 772 flags: [reg] 773 do: 774 - name: print 775 cmd: 'log will be generated at: {{.hugo_doc_log_dir}}' 776 777 - 778 func: shell 779 do: 780 - 'echo {{.hugo_doc_log_dir}}' 781 - 'rm -rf {{.hugo_doc_log_dir}}' 782 - 'mkdir -p {{.hugo_doc_log_dir}}' 783 784 - 785 func: call 786 vars: 787 upcmd: ./build/mac/up 788 do: 789 - release_local 790 - log_gen_main 791 792 - 793 name: log_gen_main 794 desc: main entry to process different type of cases 795 task: 796 - 797 func: call 798 do: log_gen_module 799 loop: 800 - ???? 801 - f???? 802 803 - 804 func: call 805 do: log_gen_impl 806 loop: 807 - c???? 808 - f???? 809 810 - 811 name: log_gen_module 812 task: 813 814 - 815 func: shell 816 dvars: 817 - name: moduletests_dir 818 value: ./tests/modtests 819 flags: 820 - taskScope 821 desc: | 822 get mod tests dirs 823 ./0001 824 ...... 825 do: 826 - 'cd {{.moduletests_dir}}; find . -name "{{.loopitem}}" -maxdepth 1 -mindepth 1 -type d|sort|cut -d\/ -f2' 827 reg: cases 828 829 - func: cmd 830 desc: get the case list object 831 dvars: 832 - name: void 833 value: '{{ .cases.Output | splitLines |reg "caselist" }}' 834 835 - func: cmd 836 do: 837 - name: print 838 cmd: 'caselist: {{.caselist}}' 839 840 - func: call 841 do: generate_each_module_logs 842 loop: caselist 843 844 - 845 name: generate_each_module_logs 846 desc: generate logs for each module 847 task: 848 - 849 func: shell 850 dvars: 851 - name: casename 852 value: '{{.loopitem}}' 853 - name: moddir 854 value: '{{.moduletests_dir}}/{{.loopitem}}' 855 - name: shcmd 856 value: '{{.upcmd}} ngo -d {{.moddir}} -i dev --configdir={{.moddir}} -w refdir' 857 flags: 858 - vvv 859 - name: shoutput 860 value: '> {{.hugo_doc_log_dir}}/m' 861 flags: 862 - vvv 863 do: 864 - 'echo """{{.shcmd}} -v {{.loopitem}} {{.shoutput}}{{.casename}}_{{.loopitem}}.log"""' 865 - '{{.shcmd}} -v {{.loopitem}} {{.shoutput}}{{.casename}}_{{.loopitem}}.log' 866 loop: 867 - v 868 - vv 869 - vvv 870 - vvvv 871 - vvvvv 872 flags: 873 - ignoreError 874 875 - 876 name: log_gen_impl 877 desc: run in up docker | generate logs 878 task: 879 - 880 func: shell 881 name: getcases 882 do: 883 - cd ./tests/functests; ls {{.loopitem}}.yml 884 reg: cases 885 886 - 887 func: cmd 888 dvars: 889 - name: void 890 value: '{{ .cases.Output | splitLines |reg "caselist" }}' 891 flags: [vvv] 892 893 - 894 func: cmd 895 do: 896 - name: print 897 cmd: 'caselist {{.caselist}}' 898 899 - 900 func: call 901 do: process_level 902 loop: caselist 903 904 - 905 name: process_level 906 desc: process different verbose level 907 task: 908 - 909 func: shell 910 dvars: 911 - name: parentLoopItem 912 value: '{{.loopitem}}' 913 - name: shcmd 914 value: '{{.upcmd}} ngo task -d ./tests/functests -t {{.parentLoopItem | replace ".yml" ""}} -i dev --configdir=./tests/functests ' 915 flags: 916 - vvv 917 - name: shoutput 918 value: '> {{.hugo_doc_log_dir}}/{{.parentLoopItem | replace ".yml" ""}}' 919 flags: 920 - vvv 921 do: 922 - 'echo """{{.shcmd}} -v {{.loopitem}} {{.shoutput}}_{{.loopitem}}.log"""' 923 - '{{.shcmd}} -v {{.loopitem}} {{.shoutput}}_{{.loopitem}}.log' 924 loop: 925 - v 926 - vv 927 - vvv 928 - vvvv 929 - vvvvv 930 flags: 931 - ignoreError 932 933 - 934 name: testf 935 desc: test the exit scenarios due to different types of validation 936 task: 937 - 938 func: shell 939 name: getcases 940 do: 941 - cd ./tests/functests; ls f*.yml 942 reg: cases 943 944 - 945 func: shell 946 desc: a real showcase of how to loop using template 947 do: 948 - | 949 {{ range $idx, $file := .cases | splitLines -}} 950 {{$casename := $file | replace ".yml" ""}} 951 echo "==========failure case test {{$idx |add1}}===============" 952 go run app/up/*.go task task -d ./tests/functests -t {{$casename}} -i dev -v vvvv 953 {{end}} 954 955 - 956 name: testp 957 desc: test user cases with prompt 958 task: 959 - 960 func: shell 961 name: getcases 962 do: 963 - cd ./tests/functests; ls p*.yml 964 reg: cases 965 966 - 967 func: shell 968 desc: a real showcase of how to loop using template 969 do: 970 - | 971 {{ range $idx, $file := .cases | splitLines -}} 972 {{$casename := $file | replace ".yml" ""}} 973 echo "==========failure case test {{$idx |add1}}===============" 974 go run app/up/*.go task task -d ./tests/functests -t {{$casename}} -i dev -v vvvv 975 {{end}} 976 977 - 978 name: testm 979 desc: test specific module 980 task: 981 - func: call 982 do: release_local 983 - 984 func: shell 985 dvars: 986 - name: casename 987 flags: 988 - prompt 989 do: | 990 cd ./tests/modtests/{{.casename}} 991 ls -lart 992 up ngo 993 994 - 995 name: testx 996 desc: test specific the function test 997 task: 998 - 999 func: shell 1000 do: 1001 - go test ./tests/functests/casex_test.go -v 1002 1003 - 1004 name: testwip 1005 desc: test wip case 1006 task: 1007 - 1008 func: shell 1009 do: 1010 - go test ./tests/functests/wip_test.go -v 1011 1012 1013 - 1014 name: wiptest 1015 desc: test wip 1016 task: 1017 - 1018 func: shell 1019 do: 1020 - go run app/up/*.go task task -d ./tests/functests -t wip -v vvvv 1021 1022 - 1023 name: testall 1024 desc: test all differnt type of tests 1025 task: 1026 - 1027 func: call 1028 do: 1029 - testx 1030 - testwip 1031 - wiptest 1032 - testc 1033 1034 - 1035 name: Build_upcli_docker_image 1036 desc: build a docker image to use up CLI command 1037 task: 1038 - func: call 1039 do: 1040 - build 1041 - 1042 func: shell 1043 dvars: 1044 - name: docker_version 1045 value: '{{now|date "20060102"}}' 1046 - name: docker_tag 1047 value: 'docker.pkg.github.com/upcmd/up/upcli:{{.docker_version}}' 1048 - name: docker_latest_tag 1049 value: 'docker.pkg.github.com/upcmd/up/upcli:latest' 1050 - name: warn 1051 value: please ensure the docker build follows a release so that version.go is updated properly 1052 flags: 1053 - prompt 1054 do: 1055 - 'docker build -t {{.docker_tag}} .' 1056 - 'docker build -t {{.docker_latest_tag}} .' 1057 - | 1058 docker login docker.pkg.github.com -u ${GITHUB_USERNAME} --password ${GITHUB_TOKEN} 1059 docker push {{.docker_tag}} 1060 docker push {{.docker_latest_tag}} 1061 1062 - 1063 name: build_dev_docker_image 1064 desc: run in linux | build a nix docker image 1065 task: 1066 - 1067 func: shell 1068 do: 1069 - nix build 1070 - cp /nix/store/*-docker-image-cmgolang.tar.gz . 1071 - rm -f result 1072 1073 - 1074 name: load_dev_docker_image 1075 desc: run in linux | build a nix docker image 1076 task: 1077 - 1078 func: shell 1079 do: 1080 - ls *-docker-image-cmgolang.tar.gz 1081 1082 - 1083 func: shell 1084 do: 1085 - 'docker load --input="{{.last_result.Output}}"' 1086 - docker images |grep cmgolang 1087 1088 - 1089 name: Add_MPL2_License 1090 desc: Add license notice to all golang file as a notice header 1091 task: 1092 - 1093 func: shell 1094 name: getcases 1095 do: 1096 - find ./ -name "*.go" 1097 reg: cases 1098 1099 - 1100 func: cmd 1101 dvars: 1102 - name: void 1103 value: '{{ .cases.Output | splitLines |reg "caselist" }}' 1104 flags: [vvv] 1105 1106 - 1107 func: block 1108 desc: apply the license 1109 do: 1110 - 1111 func: cmd 1112 dvars: 1113 - name: filepath 1114 value: '{{.loopitem}}' 1115 flags: 1116 - taskScope 1117 do: 1118 - name: readFile 1119 cmd: 1120 filename: '{{.filepath}}' 1121 reg: content 1122 - name: print 1123 cmdx: '{{.content}}' 1124 1125 - 1126 func: cmd 1127 desc: apply the license if the license header has not been applied 1128 dvars: 1129 - name: licensed_code 1130 value: | 1131 {{.license_header}} 1132 {{.content}} 1133 do: 1134 - name: print 1135 cmd: 'processing {{.filepath}}' 1136 1137 - name: writeFile 1138 cmd: 1139 content: "{{.licensed_code}}" 1140 filename: '{{.filepath}}' 1141 - 1142 namex: exit 1143 if: '{{ not (regexMatch "MPL/2.0" .content) }}' 1144 1145 loop: caselist 1146 1147 1148 - 1149 name: how_many_stars 1150 desc: get the number of star of the project 1151 task: 1152 - func: shell 1153 do: | 1154 curl --silent 'https://api.github.com/repos/upcmd/up' -H 'Accept: application/vnd.github.preview' | grep stargazers_count 1155 reg: result