Skip to content

Commit fcb6e69

Browse files
authored
CI: Add BFT Orderer support (#1296)
This patch adds BFT Orderer testing to the CI workflows. The following test environments are updated: - test-network - test-network-k8s Signed-off-by: Tatsuya Sato <[email protected]>
1 parent 714bcb0 commit fcb6e69

4 files changed

+87
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#
2+
# SPDX-License-Identifier: Apache-2.0
3+
#
4+
name: Test Network BFT Orderer 🍟
5+
run-name: ${{ github.actor }} is running the Test Network with BFT Orderer tests 🍟
6+
7+
on:
8+
workflow_dispatch:
9+
push:
10+
branches: [ "main" ]
11+
pull_request:
12+
branches: [ "main" ]
13+
14+
concurrency:
15+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
16+
cancel-in-progress: true
17+
18+
jobs:
19+
basic:
20+
runs-on: ${{ github.repository == 'hyperledger/fabric-samples' && 'fabric-ubuntu-22.04' || 'ubuntu-22.04' }}
21+
strategy:
22+
matrix:
23+
chaincode-language:
24+
- go
25+
- javascript
26+
- typescript
27+
- java
28+
29+
steps:
30+
- name: Checkout
31+
uses: actions/checkout@v4
32+
33+
- name: Set up the test network runtime
34+
uses: ./.github/actions/test-network-setup
35+
# Note: The default Fabric version for CI is currently the latest LTS (v2.5.x).
36+
# To test BFT Orderers, Fabric v3.0 is explicitly specified here.
37+
with:
38+
fabric-version: 3.0.0
39+
40+
- name: Run Test Network with BFT Orderers
41+
working-directory: test-network
42+
run: ../ci/scripts/run-test-network-basic.sh
43+
env:
44+
CHAINCODE_LANGUAGE: ${{ matrix.chaincode-language }}
45+
ORDERER_TYPE: bft

.github/workflows/test-network-k8s.yaml

+19
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,22 @@ jobs:
6868
CHAINCODE_NAME: basic
6969
CHAINCODE_LANGUAGE: java
7070
CHAINCODE_BUILDER: k8s
71+
72+
bft-orderer:
73+
runs-on: ${{ github.repository == 'hyperledger/fabric-samples' && 'fabric-ubuntu-22.04' || 'ubuntu-22.04' }}
74+
# This job requires Fabric v3.0 or later, which is only supported on 'main'.
75+
# Ensure it does not run on 'release-2.5' or earlier versions.
76+
if: ${{ github.ref == 'refs/heads/main' || github.event.pull_request.base.ref == 'main' }}
77+
steps:
78+
- name: Checkout
79+
uses: actions/checkout@v4
80+
- name: Test the network
81+
working-directory: test-network-k8s
82+
run: ../ci/scripts/run-k8s-test-network-basic.sh
83+
env:
84+
CLIENT_LANGUAGE: typescript
85+
CHAINCODE_LANGUAGE: java
86+
# Note: The default Fabric version for CI is currently the latest LTS (v2.5.x).
87+
# To test BFT Orderers, Fabric v3.0 is explicitly specified here.
88+
FABRIC_VERSION: '3.0'
89+
ORDERER_TYPE: bft

ci/scripts/run-k8s-test-network-basic.sh

+7
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ export CLIENT_LANGUAGE=${CLIENT_LANGUAGE:-typescript}
1212
export CHAINCODE_LANGUAGE=${CHAINCODE_LANGUAGE:-java}
1313
export TEST_NETWORK_CHAINCODE_BUILDER=${CHAINCODE_BUILDER:-ccaas}
1414

15+
# Fabric version
16+
export TEST_NETWORK_FABRIC_VERSION=${FABRIC_VERSION:-}
17+
18+
# Orderer parameters
19+
export TEST_NETWORK_ORDERER_TYPE=${ORDERER_TYPE:-raft}
20+
1521
# test-network-k8s parameters
1622
export TEST_TAG=$(git describe)
1723
export TEST_NETWORK_KIND_CLUSTER_NAME=${TEST_NETWORK_KIND_CLUSTER_NAME:-kind}
@@ -79,6 +85,7 @@ trap "quitterLaScene" EXIT
7985

8086
createNetwork
8187

88+
sleep 5
8289
print "Inserting and querying assets"
8390
( ./network chaincode metadata $CHAINCODE_NAME \
8491
&& ./network chaincode invoke $CHAINCODE_NAME '{"Args":["InitLedger"]}' \

ci/scripts/run-test-network-basic.sh

+16-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ set -euo pipefail
44

55
CHAINCODE_LANGUAGE=${CHAINCODE_LANGUAGE:-go}
66
CHAINCODE_PATH=${CHAINCODE_PATH:-../asset-transfer-basic}
7+
ORDERER_TYPE=${ORDERER_TYPE:-raft}
78

89
function print() {
910
GREEN='\033[0;32m'
@@ -12,14 +13,27 @@ function print() {
1213
echo -e "${GREEN}${1}${NC}"
1314
}
1415

15-
function createNetwork() {
16-
print "Creating 3 Org network"
16+
function createNetworkWithRaft() {
17+
print "Creating 3 Org network with Raft Orderers"
1718
./network.sh up createChannel -ca -s couchdb
1819
cd addOrg3
1920
./addOrg3.sh up -ca -s couchdb
2021
cd ..
2122
}
2223

24+
function createNetworkWithBFT() {
25+
print "Creating 2 Org network with BFT Orderers"
26+
./network.sh up createChannel -bft
27+
}
28+
29+
function createNetwork() {
30+
if [ "${ORDERER_TYPE}" == "bft" ]; then
31+
createNetworkWithBFT
32+
else
33+
createNetworkWithRaft
34+
fi
35+
}
36+
2337
function deployChaincode() {
2438
print "Deploying ${CHAINCODE_NAME} chaincode"
2539
./network.sh deployCC -ccn "${CHAINCODE_NAME}" -ccp "${CHAINCODE_PATH}/chaincode-${CHAINCODE_LANGUAGE}" -ccv 1 -ccs 1 -ccl "${CHAINCODE_LANGUAGE}"

0 commit comments

Comments
 (0)