# NOTE: This name appears in GitHub's Checks API and in workflow's status badge. name: ci-lint # Trigger the workflow when: on: # A push occurs to one of the matched branches. push: branches: - master - stable/* # Or when a pull request event occurs for a pull request against one of the # matched branches. pull_request: branches: - master - stable/* # Explicitly disable secrets.GITHUB_TOKEN permissions. permissions: {} jobs: lint: # NOTE: This name appears in GitHub's Checks API. name: lint runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: # Checkout pull request HEAD commit instead of merge commit. ref: ${{ github.event.pull_request.head.sha }} # Fetch all history so gitlint can check the relevant commits. fetch-depth: '0' - name: Set up Python 3 uses: actions/setup-python@v4 with: python-version: '3.x' - name: Set up Node.js 18 uses: actions/setup-node@v4 with: node-version: '18.x' cache: yarn - name: Install dependencies run: yarn install --frozen-lockfile - name: Install gitlint run: | python -m pip install gitlint # Needed for Towncrier fork to work with 3.12 and above - name: Install setuptools run: | python -m pip install setuptools - name: Install towncrier run: | python -m pip install https://github.com/oasisprotocol/towncrier/archive/oasis-master.tar.gz - name: Check for presence of a Change Log fragment (only pull requests) # NOTE: The pull request' base branch needs to be fetched so towncrier # is able to compare the current branch with the base branch. # Source: https://github.com/actions/checkout/#fetch-all-branches. run: | git fetch --no-tags origin "+refs/heads/${BASE_BRANCH}:refs/remotes/origin/${BASE_BRANCH}" towncrier check --compare-with "origin/${BASE_BRANCH}" env: BASE_BRANCH: ${{ github.base_ref }} if: github.event_name == 'pull_request' - name: Lint documentation run: | yarn lint-docs # Always run this step so that all linting errors can be seen at once. if: always() - name: Lint Change Log fragments run: | yarn lint-changelog # Always run this step so that all linting errors can be seen at once. if: always() - name: Lint git commits run: | yarn lint-git # Always run this step so that all linting errors can be seen at once. if: always() - name: ESLint # Disallow warnings and always throw errors. run: yarn lint --max-warnings 0 # Always run this step so that all linting errors can be seen at once. if: always() - name: Validate Grommet icons types run: | yarn fix-grommet-icons-types git diff --exit-code # Always run this step so that all linting errors can be seen at once. if: always() - name: Validate TypeScript run: yarn checkTs # Always run this step so that all linting errors can be seen at once. if: always()