@@ -49,10 +49,120 @@ jobs:
4949 working-directory : ${{ env.WORKING_DIR }}
5050 run : |
5151 make test all
52+ docker-build :
53+ name : ' Build Docker image'
54+ runs-on : ubuntu-18.04
55+ steps :
56+ - name : ' Check out project files'
57+ uses : actions/checkout@v2
58+ - name : ' Build docker image'
59+ id : build
60+ run : |
61+ output_dir=${{ runner.temp }}/docker
62+ mkdir -p $output_dir
63+ docker build -t quorumengineering/quorum:pr .
64+ docker save quorumengineering/quorum:pr > quorum-pr.tar
65+ tar cfvz $output_dir/quorum-pr.tar.gz quorum-pr.tar
66+ echo "::set-output name=output_dir::$output_dir"
67+ - name : ' Upload workflow artifact - Docker image'
68+ uses : actions/upload-artifact@v1
69+ with :
70+ name : docker-image
71+ path : ${{ steps.build.outputs.output_dir }}
72+ acceptance-tests :
73+ name : Acceptance tests (${{ matrix.tag }})
74+ needs :
75+ - docker-build
76+ if : success()
77+ strategy :
78+ fail-fast : false
79+ matrix :
80+ # list of tag expression being executed in parallel
81+ # for PR, only selective tests are run.
82+ # More comprehensive suites are scheduled to run in master
83+ tag :
84+ - ' basic || basic-raft || (advanced && raft) || networks/typical::raft'
85+ - ' basic || basic-istanbul || (advanced && istanbul) || networks/typical::istanbul'
86+ - ' basic || basic-istanbul || (advanced && istanbul) || networks/typical::qbft'
87+ - ' gcmode && block-sync && networks/template::raft-3plus1'
88+ - ' gcmode && block-sync && networks/template::istanbul-3plus1'
89+ - ' gcmode && block-sync && networks/template::qbft-3plus1'
90+ - ' learner-peer-management || raftdnsenable && networks/template::raft-3plus1'
91+ - ' validator-management && networks/template::qbft-3plus1'
92+ - ' validator-management && networks/template::istanbul-3plus1'
93+ - ' qbft-transition-network && networks/template::qbft-4nodes-transition'
94+ - ' basic || basic-raft || (advanced && raft) || networks/plugins::raft'
95+ - ' basic || basic-istanbul || (advanced && istanbul) || networks/plugins::qbft'
96+ - ' basic || basic-istanbul || (advanced && istanbul) || networks/plugins::istanbul'
97+ - ' basic || basic-raft || (advanced && raft) || networks/plugins::raft-account-plugin-hashicorp-vault'
98+ - ' basic || basic-istanbul || (advanced && istanbul) || networks/plugins::qbft-account-plugin-hashicorp-vault'
99+ - ' basic || basic-istanbul || (advanced && istanbul) || networks/plugins::istanbul-account-plugin-hashicorp-vault'
100+ - ' basic-rpc-security || networks/plugins::raft-rpc-security'
101+ - ' basic-rpc-security || networks/plugins::qbft-rpc-security'
102+ - ' basic-rpc-security || networks/plugins::istanbul-rpc-security'
103+ - ' migration && networks/template::raft-4nodes'
104+ - ' migration && networks/template::istanbul-4nodes'
105+ - ' migration && networks/template::raft-4nodes-ancientdb'
106+ - ' migration && networks/template::istanbul-4nodes-ancientdb'
107+ - ' permissions-v1 && networks/template::raft-3plus1'
108+ - ' permissions-v2 && networks/template::raft-3plus1'
109+ - ' privacy-enhancements-upgrade || networks/template::raft-4nodes-pe'
110+ - ' privacy-enhancements-upgrade || networks/template::istanbul-4nodes-pe'
111+ - ' multitenancy && networks/plugins::raft-multitenancy'
112+ - ' basic || basic-raft || (advanced && raft) || networks/typical::raft-simple-mps'
113+ - ' basic || basic-istanbul || (advanced && istanbul) || networks/typical::qbft-simple-mps'
114+ - ' basic || basic-istanbul || (advanced && istanbul) || networks/typical::istanbul-simple-mps'
115+ - ' basic || networks/typical::raftmps'
116+ - ' basic || networks/typical::qbftmps'
117+ - ' basic || networks/typical::istanbulmps'
118+ - ' mps-upgrade-txtrace || networks/template::raft-4nodes-mps'
119+ - ' mps-upgrade-txtrace || networks/template::istanbul-4nodes-mps'
120+ - ' (basic && !nosupport && !mps && !(spam && !raw) && !eth-api-signed && !privacy-enhancements-disabled && !graphql && !async && !extension && !storage-root && !personal-api-signed) || networks/typical-besu::ibft2'
121+ - ' (basic && !nosupport && !mps && !(spam && !raw) && !eth-api-signed && !privacy-enhancements-disabled && !graphql && !async && !extension && !storage-root && !personal-api-signed) || networks/typical-hybrid::hybrid'
122+ privacy-enhancements :
123+ - ' false'
124+ include :
125+ - tag : ' (basic && !privacy-enhancements-disabled) || privacy-enhancements || basic-raft || (advanced && raft) || networks/typical::raft'
126+ privacy-enhancements : ' true'
127+ - tag : ' (basic && !privacy-enhancements-disabled) || privacy-enhancements || basic-istanbul || (advanced && istanbul) || networks/typical::istanbul'
128+ privacy-enhancements : ' true'
129+ runs-on : ubuntu-18.04
130+ steps :
131+ - name : ' Download workflow artifact - Docker image'
132+ uses : actions/download-artifact@v1
133+ with :
134+ name : docker-image
135+ - name : ' Load Docker image'
136+ id : setup
137+ run : |
138+ tar xfvz docker-image/quorum-pr.tar.gz
139+ docker load --input quorum-pr.tar
140+ docker_env_file="${{ runner.temp }}/env.list"
141+ echo "TF_VAR_quorum_docker_image={ name = \"quorumengineering/quorum:pr\", local = true }" >> $docker_env_file
142+ echo "TF_VAR_privacy_enhancements={block=0, enabled=${{ matrix.privacy-enhancements}}}" >> $docker_env_file
143+ echo "::set-output name=outputDir::${{ runner.temp }}"
144+ echo "::set-output name=dockerEnvFile::$docker_env_file"
145+ - name : ' Run acceptance tests'
146+ run : |
147+ cat ${{ steps.setup.outputs.dockerEnvFile }}
148+ docker run --rm \
149+ --network host \
150+ -v /var/run/docker.sock:/var/run/docker.sock \
151+ -v ${{ steps.setup.outputs.outputDir }}:${{ steps.setup.outputs.outputDir }} \
152+ --env-file ${{ steps.setup.outputs.dockerEnvFile }} \
153+ quorumengineering/acctests:latest test \
154+ -Pauto \
155+ -Dauto.outputDir=${{ steps.setup.outputs.outputDir }} \
156+ -Dtags="${{ matrix.tag }}"
157+ - name : ' Debug'
158+ run : |
159+ docker images
160+ docker ps -a
52161 publish-docker :
53162 name : Publish Docker Image
54163 needs :
55164 - build
165+ - acceptance-tests
56166 runs-on : ubuntu-18.04
57167 steps :
58168 - name : ' Checkout'
0 commit comments