diff options
-rw-r--r-- | .github/workflows/lint.yaml | 76 | ||||
-rw-r--r-- | .github/workflows/main.yaml | 4 |
2 files changed, 44 insertions, 36 deletions
diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 111df54..5678f53 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -2,54 +2,66 @@ name: Lint on: workflow_call: - inputs: - artefact: - required: true - type: string - tag: - required: true - type: string jobs: lint: runs-on: ubuntu-latest + env: + PIP_DISABLE_PIP_VERSION_CHECK: 1 + PIP_NO_CACHE_DIR: false + PIP_USER: 1 # Make dependencies install into PYTHONUSERBASE. - steps: - # region container setup - - name: Download image artefact - uses: actions/download-artifact@v2 - with: - name: ${{ inputs.artefact }} + PIPENV_DONT_USE_PYENV: 1 + PIPENV_HIDE_EMOJIS: 1 + PIPENV_NOSPIN: 1 + + PYTHONUSERBASE: ${{ github.workspace }}/.cache/py-user-base + PRE_COMMIT_HOME: ${{ github.workspace }}/.cache/pre-commit-cache - - name: Load image from archive - run: docker load -i ${{ inputs.artefact }}.tar + steps: + - name: Add custom PYTHONUSERBASE to PATH + run: echo '${{ env.PYTHONUSERBASE }}/bin/' >> $GITHUB_PATH - # Needed for the Docker Compose file. - name: Checkout code uses: actions/checkout@v2 - - name: Start container - run: | - export IMAGE_SUFFIX='-venv:${{ inputs.tag }}' - docker-compose up --no-build -d - # endregion + - name: Set up Python + id: python + uses: actions/setup-python@v2 + with: + python-version: "3.10" - # Required by pre-commit. - - name: Install git + - name: Python dependency cache + uses: actions/cache@v2 + id: python_cache + with: + path: ${{ env.PYTHONUSERBASE }} + key: "python-0-${{ runner.os }}-${{ env.PYTHONUSERBASE }}-\ + ${{ steps.python.outputs.python-version }}-\ + ${{ hashFiles('./Pipfile', './Pipfile.lock') }}" + + # Install dependencies if there was a cache miss. + - name: Install Python dependencies + if: steps.python_cache.outputs.cache-hit != 'true' run: >- - docker exec snekbox_dev /bin/bash -c - 'apt-get -y update && apt-get install -y git' + pip install pipenv==2021.11.23 + && pipenv install --deploy --system --dev + + - name: Pre-commit environment cache + uses: actions/cache@v2 + with: + path: ${{ env.PRE_COMMIT_HOME }} + key: "precommit-0-${{ runner.os }}-${{ env.PRE_COMMIT_HOME }}-\ + ${{ steps.python.outputs.python-version }}-\ + ${{ hashFiles('./.pre-commit-config.yaml') }}" # pre-commit's venv doesn't work with user installs. # Skip the flake8 hook because the following step will run it. - name: Run pre-commit hooks id: run-pre-commit-hooks - run: >- - docker exec snekbox_dev /bin/bash -c - 'PIP_USER=0 SKIP=flake8 pre-commit run --all-files' + run: PIP_USER=0 SKIP=flake8 pre-commit run --all-files - - name: Show pre-commit logs + # Show the log to debug failures. + - name: Show pre-commit log if: always() && steps.run-pre-commit-hooks.outcome != 'success' - run: >- - docker exec snekbox_dev /bin/bash -c - 'cat /root/.cache/pre-commit/pre-commit.log' + run: cat "${PRE_COMMIT_HOME}/pre-commit.log" diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index cc8a1e0..3cdf940 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -11,10 +11,6 @@ jobs: uses: ./.github/workflows/build.yaml lint: uses: ./.github/workflows/lint.yaml - needs: build - with: - artefact: ${{ needs.build.outputs.artefact }} - tag: ${{ needs.build.outputs.tag }} test: uses: ./.github/workflows/test.yaml needs: build |