@@ -49,10 +49,110 @@ 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+ - ' gcmode && block-sync && networks/template::raft-3plus1'
87+ - ' gcmode && block-sync && networks/template::istanbul-3plus1'
88+ - ' learner-peer-management || raftdnsenable && networks/template::raft-3plus1'
89+ - ' validator-management && networks/template::istanbul-3plus1'
90+ - ' basic || basic-raft || (advanced && raft) || networks/plugins::raft'
91+ - ' basic || basic-istanbul || (advanced && istanbul) || networks/plugins::istanbul'
92+ - ' basic || basic-raft || (advanced && raft) || networks/plugins::raft-account-plugin-hashicorp-vault'
93+ - ' basic || basic-istanbul || (advanced && istanbul) || networks/plugins::istanbul-account-plugin-hashicorp-vault'
94+ - ' basic-rpc-security || networks/plugins::raft-rpc-security'
95+ - ' basic-rpc-security || networks/plugins::istanbul-rpc-security'
96+ - ' migration && networks/template::raft-4nodes'
97+ - ' migration && networks/template::istanbul-4nodes'
98+ - ' migration && networks/template::raft-4nodes-ancientdb'
99+ - ' migration && networks/template::istanbul-4nodes-ancientdb'
100+ - ' permissions-v1 && networks/template::raft-3plus1'
101+ - ' permissions-v2 && networks/template::raft-3plus1'
102+ - ' privacy-enhancements-upgrade || networks/template::raft-4nodes-pe'
103+ - ' privacy-enhancements-upgrade || networks/template::istanbul-4nodes-pe'
104+ - ' multitenancy && networks/plugins::raft-multitenancy'
105+ - ' basic || basic-raft || (advanced && raft) || networks/typical::raft-simple-mps'
106+ - ' basic || basic-istanbul || (advanced && istanbul) || networks/typical::istanbul-simple-mps'
107+ - ' basic || networks/typical::raftmps'
108+ - ' basic || networks/typical::istanbulmps'
109+ - ' mps-upgrade-txtrace || networks/template::raft-4nodes-mps'
110+ - ' mps-upgrade-txtrace || networks/template::istanbul-4nodes-mps'
111+ - ' (basic && !nosupport && !mps && !(spam && !raw) && !eth-api-signed && !privacy-enhancements-disabled && !graphql && !async && !extension && !storage-root && !personal-api-signed) || networks/typical-besu::ibft2'
112+ privacy-enhancements :
113+ - ' false'
114+ include :
115+ - tag : ' (basic && !privacy-enhancements-disabled) || privacy-enhancements || basic-raft || (advanced && raft) || networks/typical::raft'
116+ privacy-enhancements : ' true'
117+ - tag : ' (basic && !privacy-enhancements-disabled) || privacy-enhancements || basic-istanbul || (advanced && istanbul) || networks/typical::istanbul'
118+ privacy-enhancements : ' true'
119+ runs-on : ubuntu-18.04
120+ steps :
121+ - name : ' Download workflow artifact - Docker image'
122+ uses : actions/download-artifact@v1
123+ with :
124+ name : docker-image
125+ - name : ' Load Docker image'
126+ id : setup
127+ run : |
128+ tar xfvz docker-image/quorum-pr.tar.gz
129+ docker load --input quorum-pr.tar
130+ docker_env_file="${{ runner.temp }}/env.list"
131+ echo "TF_VAR_quorum_docker_image={ name = \"quorumengineering/quorum:pr\", local = true }" >> $docker_env_file
132+ echo "TF_VAR_privacy_enhancements={block=0, enabled=${{ matrix.privacy-enhancements}}}" >> $docker_env_file
133+ echo "::set-output name=outputDir::${{ runner.temp }}"
134+ echo "::set-output name=dockerEnvFile::$docker_env_file"
135+ - name : ' Run acceptance tests'
136+ run : |
137+ cat ${{ steps.setup.outputs.dockerEnvFile }}
138+ docker run --rm \
139+ --network host \
140+ -v /var/run/docker.sock:/var/run/docker.sock \
141+ -v ${{ steps.setup.outputs.outputDir }}:${{ steps.setup.outputs.outputDir }} \
142+ --env-file ${{ steps.setup.outputs.dockerEnvFile }} \
143+ quorumengineering/acctests:latest test \
144+ -Pauto \
145+ -Dauto.outputDir=${{ steps.setup.outputs.outputDir }} \
146+ -Dtags="${{ matrix.tag }}"
147+ - name : ' Debug'
148+ run : |
149+ docker images
150+ docker ps -a
52151 publish-docker :
53152 name : Publish Docker Image
54153 needs :
55154 - build
155+ - acceptance-tests
56156 runs-on : ubuntu-18.04
57157 steps :
58158 - name : ' Checkout'
0 commit comments