@@ -536,92 +536,152 @@ jobs:
536
536
gh-pages --dotfiles --message "[skip ci] documentation update" --dist target/doc
537
537
538
538
# #####################################################################################################
539
- # Docker Builds: #
539
+ # Publish docker artifacts for prs targeting release branches built in "auto" by bors #
540
540
# #####################################################################################################
541
-
542
- docker-publish :
541
+ docker-pre-publish :
543
542
executor : docker-executor
544
543
description : publish docker images
545
544
steps :
546
545
- checkout
547
546
- run :
548
- name : use validator to build shared layers (compile)
549
- command : |
550
- docker build --target builder -f docker/validator/Dockerfile . --tag local_build
551
- - run :
552
- name : build init
553
- command : |
554
- docker/init/build.sh
555
- - run :
556
- name : build mint
557
- command : |
558
- docker/mint/build.sh
559
- - run :
560
- name : build safety-rules
561
- command : |
562
- docker/safety-rules/build.sh
563
- - run :
564
- name : build validators
565
- command : |
566
- docker/validator/build.sh
567
- docker/validator-dynamic/build.sh
568
- - run :
569
- name : view images
547
+ name : should pre build docker images (targeting a release branch)?
570
548
command : |
571
- docker images
549
+ export RELEASE_BRANCH_PATTERN='^v[0-9]+-release$'
550
+ export TEST_BRANCH_PATTERN="^testflow[0-9]+$"
551
+ export commit_message=$( git log -1 --pretty=%B )
552
+ export pr_num=`echo "$commit_message" | tail -2 | head -1 | sed 's/Closes: #//'`
553
+ if [ -z $pr_num ]; then
554
+ echo "Did not find pull request num in commit message. -\\_(O_o)_/-";
555
+ exit 1
556
+ fi
557
+ curl -o /tmp/pr https://api.github.com/repos/libra/libra/pulls/${pr_num}
558
+ export TARGET_BRANCH=$( cat /tmp/pr | jq ".base .ref" | sed 's/"//g' )
559
+ if [[ $TARGET_BRANCH =~ $RELEASE_BRANCH_PATTERN ]] || [[ $TARGET_BRANCH =~ $TEST_BRANCH_PATTERN ]]; then
560
+ export BRANCH=$TARGET_BRANCH
561
+ echo "$DOCKERHUB_PASSWORD" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin
562
+ docker/update_or_build.sh -u -p -b ${BRANCH} -n client
563
+ docker/update_or_build.sh -u -p -b ${BRANCH} -n init
564
+ docker/update_or_build.sh -u -p -b ${BRANCH} -n mint
565
+ docker/update_or_build.sh -u -p -b ${BRANCH} -n safety-rules
566
+ docker/update_or_build.sh -u -p -b ${BRANCH} -n tools
567
+ docker/update_or_build.sh -u -p -b ${BRANCH} -n validator-dynamic
568
+ docker/update_or_build.sh -u -p -b ${BRANCH} -n cluster-test
569
+ #build but don't publish
570
+ docker/update_or_build.sh -p -b ${BRANCH} -n validator
571
+ else
572
+ echo Targeting branch $TARGET_BRANCH will not publish docker images.
573
+ fi
574
+
575
+ # #####################################################################################################
576
+ # Docker Builds: #
577
+ # #####################################################################################################
578
+ docker-publish :
579
+ executor : docker-executor
580
+ description : publish docker images
581
+ steps :
582
+ - checkout
572
583
- run :
573
- name : push release docker images
584
+ name : pull pre images (or build if not pullable) and push release docker images
574
585
command : |
575
- export BRANCH=$CIRCLE_BRANCH
576
- export GIT_REV=$(git rev-parse --short=8 HEAD)
577
- docker tag libra_init libra/test:libra_init_$BRANCH_$GIT_REV
578
- docker tag libra_mint libra/test:libra_mint_$BRANCH_$GIT_REV
579
- docker tag libra_safety_rules libra/test:libra_safety_rules_$BRANCH_$GIT_REV
580
- docker tag libra_e2e libra/test:libra_e2e_$BRANCH_$GIT_REV
581
- docker tag libra_validator_dynamic libra/test:libra_validator_dynamic_$BRANCH_$GIT_REV
586
+ set -x
587
+ export BRANCH=${CIRCLE_BRANCH}
582
588
echo "$DOCKERHUB_PASSWORD" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin
583
- docker push libra/test:libra_init_$BRANCH_$GIT_REV
584
- docker push libra/test:libra_mint_$BRANCH_$GIT_REV
585
- docker push libra/test:libra_safety_rules_$BRANCH_$GIT_REV
586
- docker push libra/test:libra_e2e_$BRANCH_$GIT_REV
587
- docker push libra/test:libra_validator_dynamic_$BRANCH_$GIT_REV
588
- - run :
589
- name : build cluster-test
590
- command : |
591
- docker/cluster-test/build.sh
592
- - run :
593
- name : build cluster-test
594
- command : |
595
- docker tag cluster-test libra/test:cluster-test_$BRANCH_$GITHASH
596
- #echo "$DOCKERHUB_PASS" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin
597
- #docker push libra/test:cluster-test_$BRANCH_$GITHASH
589
+ docker/update_or_build.sh -u -b ${BRANCH} -n client
590
+ docker/update_or_build.sh -u -b ${BRANCH} -n init
591
+ docker/update_or_build.sh -u -b ${BRANCH} -n mint
592
+ docker/update_or_build.sh -u -b ${BRANCH} -n safety-rules
593
+ docker/update_or_build.sh -u -b ${BRANCH} -n tools
594
+ docker/update_or_build.sh -u -b ${BRANCH} -n validator-dynamic
595
+ docker/update_or_build.sh -u -b ${BRANCH} -n cluster-test
596
+
598
597
workflows :
599
598
commit-workflow :
600
599
jobs :
601
- - lint-docker
602
- - terraform
600
+ - lint-docker :
601
+ filters :
602
+ branches :
603
+ ignore :
604
+ - gh-pages
605
+ - master
606
+ - /^testflow[\d]+$/
607
+ - /^v[\d]+-release$/
608
+ - terraform :
609
+ filters :
610
+ branches :
611
+ ignore :
612
+ - gh-pages
613
+ - master
614
+ - /^testflow[\d]+$/
615
+ - /^v[\d]+-release$/
603
616
- prefetch-crates
604
617
- lint :
605
618
requires :
606
619
- prefetch-crates
620
+ filters :
621
+ branches :
622
+ ignore :
623
+ - gh-pages
624
+ - /^testflow[\d]+$/
625
+ - /^v[\d]+-release$/
607
626
- build-dev :
608
627
requires :
609
628
- prefetch-crates
629
+ filters :
630
+ branches :
631
+ ignore :
632
+ - gh-pages
633
+ - master
634
+ - /^testflow[\d]+$/
635
+ - /^v[\d]+-release$/
610
636
- build-release :
611
637
requires :
612
638
- prefetch-crates
639
+ filters :
640
+ branches :
641
+ ignore :
642
+ - gh-pages
643
+ - master
644
+ - /^testflow[\d]+$/
645
+ - /^v[\d]+-release$/
613
646
- run-e2e-test :
614
647
requires :
615
648
- prefetch-crates
649
+ filters :
650
+ branches :
651
+ ignore :
652
+ - gh-pages
653
+ - master
654
+ - /^testflow[\d]+$/
655
+ - /^v[\d]+-release$/
616
656
- run-unit-test :
617
657
requires :
618
658
- prefetch-crates
659
+ filters :
660
+ branches :
661
+ ignore :
662
+ - gh-pages
663
+ - master
664
+ - /^testflow[\d]+$/
665
+ - /^v[\d]+-release$/
619
666
- run-crypto-unit-test :
620
667
requires :
621
668
- prefetch-crates
669
+ filters :
670
+ branches :
671
+ ignore :
672
+ - gh-pages
673
+ - master
674
+ - /^testflow[\d]+$/
675
+ - /^v[\d]+-release$/
622
676
- build-docs :
623
677
requires :
624
678
- lint
679
+ filters :
680
+ branches :
681
+ ignore :
682
+ - gh-pages
683
+ - /^testflow[\d]+$/
684
+ - /^v[\d]+-release$/
625
685
- deploy-docs :
626
686
requires :
627
687
- build-docs
@@ -634,10 +694,17 @@ workflows:
634
694
filters :
635
695
branches :
636
696
only : master
697
+ - docker-pre-publish :
698
+ filters :
699
+ branches :
700
+ only :
701
+ - auto
637
702
- docker-publish :
638
703
filters :
639
704
branches :
640
- only : circle-docker
705
+ only :
706
+ - /^testflow[\d]+$/
707
+ - /^v[\d]+-release$/
641
708
642
709
scheduled-workflow :
643
710
triggers :
0 commit comments