121 lines
4.7 KiB
YAML
121 lines
4.7 KiB
YAML
name: Docker Build
|
|
|
|
on: [pull_request]
|
|
|
|
jobs:
|
|
build:
|
|
name: Run docker build
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Run docker build
|
|
run: make docker-build
|
|
test:
|
|
name: Run unit tests
|
|
env:
|
|
GOPATH: /tmp/go
|
|
HOSTNAME: ${{ secrets.BUILD_HOSTNAME }}
|
|
USERNAME: ${{ secrets.BUILD_USERNAME }}
|
|
PRIVATE_KEY: ${{ secrets.BUILD_KEY }}
|
|
PASSWORD: ${{ secrets.BUILD_PASSWORD}}
|
|
strategy:
|
|
matrix:
|
|
go-version: [1.16.x, 1.17.x]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Install sshpass
|
|
run: sudo apt-get install -y sshpass
|
|
|
|
# Passed experience with GHA has taught me to store variables in files instead of passing them as variables.
|
|
- name: Output variables
|
|
run: |
|
|
echo ${{ env.GITHUB_REPOSITORY}} > /tmp/git_repository
|
|
echo ${{ env.GITHUB_HEAD_REF}} > /tmp/git_head_ref
|
|
# echo ${{ env.PRIVATE_KEY }} | tr '\n' ''| sshpass -p ${{ env.PASSWORD }} scp -i /dev/stdin /tmp/git_repository {{ env.USERNAME }}@${{ env.HOSTNAME }}:/tmp/git_repository
|
|
# echo ${{ env.PRIVATE_KEY }} | tr '\n' ''| sshpass -p ${{ env.PASSWORD }} scp -i /dev/stdin /tmp/git_head_ref {{ env.USERNAME }}@${{ env.HOSTNAME }}:/tmp/git_head_ref
|
|
# echo ${{ env.PRIVATE_KEY }} | tr '\n' ''| sshpass -p ${{ env.PASSWORD }} scp -i /dev/stdin ./github/workflows/run_unit_test.sh {{ env.USERNAME }}@${{ env.HOSTNAME }}:/tmp/run_unit_test.sh
|
|
|
|
- name: SCP some files
|
|
uses: appleboy/scp-action@master
|
|
with:
|
|
host: ${{ env.HOSTNAME }}
|
|
username: ${{ env.USERNAME }}
|
|
# passphrase: $ {{ env.PASSWORD }}
|
|
key: ${{ env.PRIVATE_KEY }}
|
|
port: 22
|
|
source: "/tmp/git_repository,/tmp/git_head_ref,./github/workflows/run_unit_test.sh"
|
|
target: "/tmp/"
|
|
|
|
- name: Trigger Unit Test
|
|
run: echo ${{ env.PRIVATE_KEY }} | sshpass -p ${{ env.PASSWORD }} ssh {{ env.USERNAME }}@{{ env.HOSTNAME }} -i /dev/stdin /tmp/run_unit_test.sh
|
|
|
|
- name: Get the logs and cat them
|
|
run: |
|
|
echo ${{ env.PRIVATE_KEY }} | sshpass -p ${{ env.PASSWORD }} scp -i /dev/stdin {{ env.USERNAME }}@${{ env.HOSTNAME }}:/tmp/test.log .
|
|
cat ./test.log
|
|
|
|
- name: Check Error Code
|
|
run: |
|
|
echo ${{ env.PRIVATE_KEY }} | sshpass -p ${{ env.PASSWORD }} scp -i /dev/stdin {{ env.USERNAME }}@${{ env.HOSTNAME }}:/tmp/return_test.txt .
|
|
[ $(cat ./return_test.txt) -eq 0 ]
|
|
|
|
integrationtest:
|
|
name: Run integration tests
|
|
env:
|
|
GOPATH: /tmp/go
|
|
DB_WRITE: true
|
|
ETH_FORWARD_ETH_CALLS: false
|
|
ETH_PROXY_ON_ERROR: false
|
|
ETH_HTTP_PATH: ""
|
|
strategy:
|
|
matrix:
|
|
go-version: [1.16.x]
|
|
os: [ubuntu-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Create GOPATH
|
|
run: mkdir -p /tmp/go
|
|
- name: Install Go
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
- uses: actions/checkout@v2
|
|
- name: Run database
|
|
run: docker-compose -f docker-compose.test.yml -f docker-compose.yml up -d ipld-eth-db dapptools contract eth-server
|
|
- name: Test
|
|
run: |
|
|
while [ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:8081)" != "200" ]; do echo "waiting for ipld-eth-server..." && sleep 5; done && \
|
|
while [ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:8545)" != "200" ]; do echo "waiting for geth-statediff..." && sleep 5; done && \
|
|
make integrationtest
|
|
|
|
integrationtest_forwardethcalls:
|
|
name: Run integration tests for direct proxy fall-through of eth_calls
|
|
env:
|
|
GOPATH: /tmp/go
|
|
DB_WRITE: false
|
|
ETH_FORWARD_ETH_CALLS: true
|
|
ETH_PROXY_ON_ERROR: false
|
|
ETH_HTTP_PATH: "dapptools:8545"
|
|
strategy:
|
|
matrix:
|
|
go-version: [1.16.x]
|
|
os: [ubuntu-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Create GOPATH
|
|
run: mkdir -p /tmp/go
|
|
- name: Install Go
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
- uses: actions/checkout@v2
|
|
- name: Run database
|
|
run: docker-compose -f docker-compose.test.yml -f docker-compose.yml up -d ipld-eth-db dapptools contract eth-server
|
|
- name: Test
|
|
run: |
|
|
while [ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:8081)" != "200" ]; do echo "waiting for ipld-eth-server..." && sleep 5; done && \
|
|
while [ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:8545)" != "200" ]; do echo "waiting for geth-statediff..." && sleep 5; done && \
|
|
make integrationtest
|