--- name: Test and Release on: schedule: - cron: "0 */4 * * *" push: branches: - main - production - feature/* - fix/* pull_request: branches: - main - production jobs: test: strategy: max-parallel: 1 matrix: python-version: ['3.10', '3.9', '3.8', '3.7'] runs-on: ubuntu-latest steps: - name: Download code uses: actions/checkout@v2 with: persist-credentials: false fetch-depth: 0 - name: Setup Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - name: Download cache for pip uses: actions/cache@v2 with: path: ~/.cache/pip key: py-${{ matrix.python-version }}-poetry-pip-1.1.13 restore-keys: poetry-pip - name: Install poetry run: pip install poetry==1.1.13 - name: Download cache for poetry id: poetry-install uses: actions/cache@v2 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' id: pre-commit-install uses: actions/cache@v2 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' run: poetry run pre-commit run -a - name: Auto-generate missing pairs run: . activate.sh && poetry run python generatestructs.py - name: Commit & Push changes if: matrix.python-version == '3.10' 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' 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: 5 run: . activate.sh && poetry run pytest -v --cov . --cov-report xml:coverage.xml - name: Send codeclimate analytics if: matrix.python-version == '3.10' 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@v2 with: python-version: '3.10' - name: Checkout code uses: actions/checkout@v2 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