You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.8 KiB
112 lines
3.8 KiB
--- |
|
name: Test & Release |
|
on: |
|
schedule: |
|
- cron: "0 0 */5 * *" |
|
push: |
|
branches: |
|
- main |
|
- production |
|
- feature/* |
|
- fix/* |
|
pull_request: |
|
branches: |
|
- main |
|
- production |
|
jobs: |
|
test: |
|
strategy: |
|
max-parallel: 1 |
|
matrix: |
|
python-version: ['3.10.7', '3.9', '3.8', '3.7'] |
|
runs-on: ubuntu-latest |
|
steps: |
|
- name: Download code |
|
uses: actions/checkout@v3 |
|
with: |
|
persist-credentials: false |
|
fetch-depth: 0 |
|
- name: Setup Python ${{ matrix.python-version }} |
|
uses: actions/setup-python@v4 |
|
with: |
|
python-version: ${{ matrix.python-version }} |
|
- name: Download cache for pip |
|
uses: actions/cache@v3 |
|
with: |
|
path: ~/.cache/pip |
|
key: py-${{ matrix.python-version }}-poetry-pip-1.2.2 |
|
restore-keys: poetry-pip |
|
- name: Install poetry |
|
run: pip install poetry==1.2.2 |
|
- name: Download cache for poetry |
|
id: poetry-install |
|
uses: actions/cache@v3 |
|
with: |
|
path: ./.venv/ |
|
key: py-${{ matrix.python-version }}-poetry-install-${{ hashFiles('poetry.lock') }} |
|
restore-keys: poetry-install |
|
- name: Install packages |
|
if: steps.poetry-install.outputs.cache-hit != 'true' |
|
run: rm -rf ./.venv/ && poetry install |
|
- name: Download cache for pre-commit |
|
if: matrix.python-version == '3.10.7' |
|
id: pre-commit-install |
|
uses: actions/cache@v3 |
|
with: |
|
path: ~/.cache/pre-commit |
|
key: py-${{ matrix.python-version }}-pre-commit-install-${{ hashFiles('.pre-commit-config.yaml') }} |
|
restore-keys: pre-commit-install |
|
- name: Verify commit |
|
if: matrix.python-version == '3.10.7' |
|
run: poetry run pre-commit run -a |
|
- name: Auto-generate missing pairs |
|
if: matrix.python-version == '3.10.7' |
|
run: . activate.sh && poetry run python generatestructs.py |
|
- name: Commit & Push changes |
|
if: matrix.python-version == '3.10.7' && github.ref == 'refs/heads/main' |
|
uses: actions-js/push@v1.3 |
|
with: |
|
author_email: "morty.space@gmail.com" |
|
author_name: "Morty Space" |
|
directory: './src' |
|
message: "sync: updated API pairs and coins" |
|
github_token: ${{ secrets.GITHUB_TOKEN }} |
|
- name: Prepare codeclimate |
|
if: matrix.python-version == '3.10.7' |
|
run: | |
|
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter |
|
chmod +x ./cc-test-reporter |
|
./cc-test-reporter before-build |
|
- name: Test docs |
|
run: . activate.sh && cd docs && make doctest && cd .. |
|
- name: Test code |
|
timeout-minutes: 6 |
|
run: . activate.sh && poetry run pytest -v --cov . --cov-report xml:coverage.xml |
|
- name: Send codeclimate analytics |
|
if: matrix.python-version == '3.10.7' |
|
run: ./cc-test-reporter after-build -r ${{ secrets.CC_TEST_REPORTER_ID }} --exit-code $? |
|
release: |
|
runs-on: ubuntu-latest |
|
needs: test |
|
if: github.ref == 'refs/heads/main' |
|
steps: |
|
- name: Setup Python |
|
uses: actions/setup-python@v4 |
|
with: |
|
python-version: '3.10.7' |
|
- name: Checkout code |
|
uses: actions/checkout@v3 |
|
with: |
|
fetch-depth: 0 |
|
- name: Release |
|
env: |
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
|
REPOSITORY_USERNAME: '__token__' |
|
REPOSITORY_PASSWORD: ${{ secrets.REPOSITORY_PASSWORD }} |
|
run: | |
|
git fetch --all |
|
git reset --hard origin/main |
|
pip install python-semantic-release |
|
git config user.name github-actions |
|
git config user.email github-actions@github.com |
|
semantic-release publish
|
|
|