feat: seperate solc container for resuse, add caching, run tests

This commit is contained in:
Blair Vanderlugt 2022-01-25 15:36:22 +00:00
parent c7b8ccfa62
commit e811575c33
4 changed files with 58 additions and 50 deletions

View File

@ -2,25 +2,41 @@ stages:
- test - test
- slither-analyzer - slither-analyzer
test: variables:
image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-py-alpine:latest PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
cache: cache:
- key:
files:
- requirements.txt
- test_requirements.txt
paths: paths:
- /root/.cache/pip - .cache/pip
- venv/
before_script:
- python -V # Print out python version for debugging
- pip install virtualenv
- virtualenv venv
- source venv/bin/activate
test:
image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-python:latest
script: script:
- cd python # build abi
- pip install --extra-index-url https://pip.grassrootseconomics.net:8433 -r test_requirements.txt - 'echo "Running Solc Version: $(solc --version)"'
- pip install --extra-index-url https://pip.grassrootseconomics.net:8433 -r test_requirements.txt - cd solidity
- solc --evm-version=byzantium GiftableToken.sol --abi | awk 'NR>3' > GiftableToken.abi.json
# build bin
- solc GiftableToken.sol --bin | awk 'NR>3' > GiftableToken.bin &&
truncate -s "$((`stat -t -c "%s" GiftableToken.bin`-1))" GiftableToken.bin
# install test dependencies
- cd ../python
- export PYTHONPATH=.
- pip install --extra-index-url https://pip.grassrootseconomics.net
--extra-index-url https://gitlab.com/api/v4/projects/27624814/packages/pypi/simple
-r requirements.txt -r test_requirements.txt
# run tests
- bash run_tests.sh - bash run_tests.sh
slither-analize: slither-analize:
image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-py-alpine:latest image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-python:latest
allow_failure: true
script: script:
- pip install slither-analyzer
- slither solidity/ - slither solidity/

View File

@ -1,33 +0,0 @@
FROM ethereum/solc:0.6.12
FROM python:3.8.6-alpine
COPY --from=0 /usr/bin/solc /usr/bin/solc
RUN apk update &&\
apk add gcc bash musl-dev libffi-dev openssl-dev autoconf automake build-base \
libtool pkgconfig python3-dev cargo
WORKDIR /usr/src
# Try to keep everything above here re-usable!
COPY ./solidity/ /usr/src/giftable_erc20_token/solidity/
COPY ./python/ /usr/src/giftable_erc20_token/python/
RUN chmod +x ./python/run_tests.sh
RUN cd giftable_erc20_token/solidity && \
solc GiftableToken.sol --abi | awk 'NR>3' > GiftableToken.abi.json
RUN cd giftable_erc20_token/solidity && \
solc GiftableToken.sol --bin | awk 'NR>3' > GiftableToken.bin && \
truncate -s "$((`stat -t -c "%s" GiftableToken.bin`-1))" GiftableToken.bin
RUN cd giftable_erc20_token/python && \
pip install --extra-index-url https://pip.grassrootseconomics.net:8433 .
RUN pip install slither-analyzer
# To deploy:
# giftable-token-deploy --contracts-dir giftable_erc20_token/solidity/ <amount>

25
README.md Normal file
View File

@ -0,0 +1,25 @@
# ETH-ERC20 Solidity Contract
### solidity
To generate bytecode and tests install solc 8.x.x and run the solc bits below or execute the following:
```
docker run -v `pwd`:/src registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-python:latest solc --evm-version=byzantium solidity/GiftableToken.sol --abi
```
```
docker run -v `pwd`:/src registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-python:latest solc GiftableToken.sol --bin | awk 'NR>3' > GiftableToken.bin
```
### python unit tests
```
pip install --extra-index-url https://gitlab.com/api/v4/projects/27624814/packages/pypi/simple \
--extra-index-url https://pip.grassrootseconomics.net \
-r requirements.txt -r test_requirements.txt
bash python/run_tests.sh
```

0
python/run_tests.sh Normal file → Executable file
View File