810a8e76d1
pip 20 made the following change: > Remove interpreter-specific major version tag e.g. cp3-none-any from consideration. > https://github.com/pypa/pip/pull/7355 The coincurve pip package only has a major version tag for its windows wheel. pip20 will not allow us to install that wheel, and compiling coincurve from source causes errors. So we cannot use pip 20 or above until coincurve fixes its compatibility tags, we can compile coincurve from source, we stop using coincurve, or we figure out another way to install it. Note that on osx and linux, coincurve has the correct tags.
207 lines
5.9 KiB
YAML
207 lines
5.9 KiB
YAML
default:
|
|
image: python:3.7
|
|
|
|
|
|
#cache:
|
|
# directories:
|
|
# - $HOME/venv
|
|
# - $HOME/.cache/pip
|
|
# - $HOME/Library/Caches/pip
|
|
# - $HOME/Library/Caches/Homebrew
|
|
# - $TRAVIS_BUILD_DIR/.tox
|
|
|
|
|
|
stages:
|
|
- test
|
|
- build
|
|
- assets
|
|
- release
|
|
|
|
|
|
.tagged:
|
|
rules:
|
|
- if: '$CI_COMMIT_TAG =~ /^v[0-9\.]+$/'
|
|
when: on_success
|
|
|
|
|
|
|
|
test:lint:
|
|
stage: test
|
|
script:
|
|
- make install tools
|
|
- make lint
|
|
|
|
test:unit:
|
|
stage: test
|
|
script:
|
|
- make install tools
|
|
- HOME=/tmp coverage run -p --source=lbry -m unittest discover -vv tests.unit
|
|
|
|
test:datanetwork-integration:
|
|
stage: test
|
|
script:
|
|
- pip install tox-travis
|
|
- tox -e datanetwork
|
|
|
|
test:blockchain-integration:
|
|
stage: test
|
|
script:
|
|
- pip install tox-travis
|
|
- tox -e blockchain
|
|
|
|
test:other-integration:
|
|
stage: test
|
|
script:
|
|
- pip install tox-travis
|
|
- tox -e other
|
|
|
|
test:json-api:
|
|
stage: test
|
|
script:
|
|
- make install tools
|
|
- HOME=/tmp coverage run -p --source=lbry scripts/generate_json_api.py
|
|
|
|
|
|
|
|
.build:
|
|
stage: build
|
|
artifacts:
|
|
expire_in: 1 day
|
|
paths:
|
|
- lbrynet-${OS}.zip
|
|
script:
|
|
- pip install --upgrade 'setuptools<45.0.0'
|
|
- pip install pyinstaller
|
|
- python3.7 docker/set_build.py
|
|
- pip install -e .
|
|
- pyinstaller --onefile --name lbrynet lbry/extras/cli.py
|
|
- chmod +x dist/lbrynet
|
|
- zip --junk-paths ${CI_PROJECT_DIR}/lbrynet-${OS}.zip dist/lbrynet # gitlab expects artifacts to be in $CI_PROJECT_DIR
|
|
- openssl dgst -sha256 ${CI_PROJECT_DIR}/lbrynet-${OS}.zip | egrep -o [0-9a-f]+$ # get sha256 of asset. works on mac and ubuntu
|
|
- dist/lbrynet --version
|
|
|
|
build:linux:
|
|
extends: .build
|
|
image: ubuntu:18.04 # cant use python3.7 image - binary won't run on ubuntu
|
|
variables:
|
|
OS: linux
|
|
before_script:
|
|
- apt-get update
|
|
- apt-get install -y --no-install-recommends software-properties-common zip curl build-essential
|
|
- add-apt-repository -y ppa:deadsnakes/ppa
|
|
- apt-get install -y --no-install-recommends python3.7-dev python3-setuptools python3-wheel
|
|
- python3.7 <(curl -q https://bootstrap.pypa.io/get-pip.py) # make sure we get pip with python3.7
|
|
|
|
build:mac:
|
|
extends: .build
|
|
tags: [macos] # makes gitlab use the mac runner
|
|
variables:
|
|
OS: mac
|
|
GIT_DEPTH: 5
|
|
VENV: /tmp/gitlab-lbry-sdk-venv
|
|
before_script:
|
|
# - brew upgrade python || true
|
|
- python3 --version | grep -q '^Python 3\.7\.' # dont upgrade python on every run. just make sure we're on the right Python
|
|
# - pip3 install --user --upgrade pip virtualenv
|
|
- pip3 --version | grep -q '\(python 3\.7\)'
|
|
- virtualenv --python=python3.7 "${VENV}"
|
|
- source "${VENV}/bin/activate"
|
|
after_script:
|
|
- rm -rf "${VENV}"
|
|
|
|
build:windows:
|
|
extends: .build
|
|
tags: [windows] # makes gitlab use the windows runner
|
|
variables:
|
|
OS: windows
|
|
GIT_DEPTH: 5
|
|
before_script:
|
|
- ./docker/install_choco.ps1
|
|
- choco install -y --x86 python3 7zip checksum
|
|
- python --version # | findstr /B "Python 3\.7\." # dont upgrade python on every run. just make sure we're on the right Python
|
|
- pip --version # | findstr /E '\(python 3\.7\)'
|
|
- pip install virtualenv pywin32
|
|
- virtualenv venv
|
|
- venv/Scripts/activate.ps1
|
|
- pip install pip==19.3.1; $true # $true ignores errors. need this to get the correct coincurve wheel. see commit notes for details.
|
|
after_script:
|
|
- rmdir -Recurse venv
|
|
script:
|
|
- pip install --upgrade 'setuptools<45.0.0'
|
|
- pip install pyinstaller==3.5
|
|
- python docker/set_build.py
|
|
- pip install -e .
|
|
- pyinstaller --additional-hooks-dir=scripts/. --icon=icons/lbry256.ico -F -n lbrynet lbry/extras/cli.py
|
|
- 7z a -tzip $env:CI_PROJECT_DIR/lbrynet-${OS}.zip ./dist/lbrynet.exe
|
|
- checksum --type=sha256 --file=$env:CI_PROJECT_DIR/lbrynet-${OS}.zip
|
|
- dist/lbrynet.exe --version
|
|
|
|
|
|
|
|
# s3 = upload asset to s3 (build.lbry.io)
|
|
.s3:
|
|
stage: assets
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
script:
|
|
- "[ -f lbrynet-${OS}.zip ]" # check that asset exists before trying to upload
|
|
- pip install awscli
|
|
- S3_PATH="daemon/gitlab-build-${CI_PIPELINE_ID}_commit-${CI_COMMIT_SHA:0:7}$( if [ ! -z ${CI_COMMIT_TAG} ]; then echo _tag-${CI_COMMIT_TAG}; else echo _branch-${CI_COMMIT_REF_NAME}; fi )"
|
|
- AWS_ACCESS_KEY_ID=${ARTIFACTS_KEY} AWS_SECRET_ACCESS_KEY=${ARTIFACTS_SECRET} AWS_REGION=${ARTIFACTS_REGION}
|
|
aws s3 cp lbrynet-${OS}.zip s3://${ARTIFACTS_BUCKET}/${S3_PATH}/lbrynet-${OS}.zip
|
|
|
|
s3:linux:
|
|
extends: .s3
|
|
variables: {OS: linux}
|
|
needs: ["build:linux"]
|
|
|
|
s3:mac:
|
|
extends: .s3
|
|
variables: {OS: mac}
|
|
needs: ["build:mac"]
|
|
|
|
s3:windows:
|
|
extends: .s3
|
|
variables: {OS: windows}
|
|
needs: ["build:windows"]
|
|
|
|
|
|
|
|
# github = upload assets to github when there's a tagged release
|
|
.github:
|
|
extends: .tagged
|
|
stage: assets
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
script:
|
|
- "[ -f lbrynet-${OS}.zip ]" # check that asset exists before trying to upload. githubrelease won't error if its missing
|
|
- pip install githubrelease
|
|
- githubrelease --no-progress --github-token ${GITHUB_CI_USER_ACCESS_TOKEN} asset lbryio/lbry-sdk upload ${CI_COMMIT_TAG} lbrynet-${OS}.zip
|
|
|
|
github:linux:
|
|
extends: .github
|
|
variables: {OS: linux}
|
|
needs: ["build:linux"]
|
|
|
|
github:mac:
|
|
extends: .github
|
|
variables: {OS: mac}
|
|
needs: ["build:mac"]
|
|
|
|
github:windows:
|
|
extends: .github
|
|
variables: {OS: windows}
|
|
needs: ["build:windows"]
|
|
|
|
|
|
|
|
publish:
|
|
extends: .tagged
|
|
stage: release
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
script:
|
|
- pip install githubrelease
|
|
- githubrelease --no-progress --github-token ${GITHUB_CI_USER_ACCESS_TOKEN} release lbryio/lbry-sdk publish ${CI_COMMIT_TAG}
|
|
- >
|
|
curl -X POST -H 'Content-type: application/json' --data '{"text":"<!channel> There is a new SDK release: https://github.com/lbryio/lbry-sdk/releases/tag/'"${CI_COMMIT_TAG}"'\n'"$(curl -s "https://api.github.com/repos/lbryio/lbry-sdk/releases/tags/${CI_COMMIT_TAG}" | egrep '\w*\"body\":' | cut -d':' -f 2- | tail -c +3 | head -c -2)"'", "channel":"tech"}' "$(echo ${SLACK_WEBHOOK_URL_BASE64} | base64 -d)"
|