chore(deps): update typescript-eslint monorepo to v8 (major) #1294
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
######################################################################################## | |
# The following secrets are required: | |
# | |
# 1. GH_ACCESS_TOKEN - A "fine-grained personal access token" generated through the | |
# Github UI. It seems like these tokens are scoped to a user, rather than an | |
# organisation. | |
# | |
# The following minimum permissions are required: | |
# Read - access to metadata | |
# Read & write - access to actions and code | |
# 2. GH_USER_NAME - The name (not username) associated with the Git user. e.g. John Smith | |
# 3. GH_USER_EMAIL - The email associated with the Git user | |
# 4. NPM_TOKEN - A token for publishing to npm | |
# 5. DOCKERHUB_USERNAME - Username for publishing to Docker Hub | |
# 6. DOCKERHUB_TOKEN - Docker Hub publishing token | |
######################################################################################## | |
name: Continuous Build | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
jobs: | |
documentation: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Clone repo | |
uses: actions/checkout@v4 | |
- name: Check hyperlinks | |
uses: gaurav-nelson/github-action-markdown-link-check@v1 | |
lint-build-test: | |
runs-on: ubuntu-latest | |
name: Build, lint and test | |
steps: | |
- name: Clone repo | |
uses: actions/checkout@v4 | |
- name: Install pnpm | |
uses: pnpm/action-setup@v4 | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20.x' | |
cache: 'pnpm' | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Build | |
run: pnpm run build | |
- name: Lint Typescript | |
run: pnpm run tsc | |
- name: Lint | |
run: pnpm run prettier:check && pnpm run eslint:check | |
- name: Test | |
run: pnpm run test --bail | |
test-e2e: | |
name: Test e2e | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- name: Clone repo | |
uses: actions/checkout@v4 | |
- name: Install pnpm | |
uses: pnpm/action-setup@v4 | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20.x' | |
cache: 'pnpm' | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Start Hardhat | |
run: pnpm dev:eth-node& | |
- name: Test E2E | |
run: pnpm test:e2e --bail | |
required-checks-passed: | |
name: All required checks passed | |
runs-on: ubuntu-latest | |
needs: [documentation, lint-build-test, test-e2e] | |
steps: | |
- run: exit 0 | |
tag-and-release: | |
name: Tag and release | |
runs-on: ubuntu-latest | |
needs: required-checks-passed | |
# Only tag and release on pushes to main | |
if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
strategy: | |
matrix: | |
node-version: [20] | |
permissions: | |
id-token: write | |
steps: | |
- name: Clone repo | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
token: ${{ secrets.GH_ACCESS_TOKEN }} | |
- name: Install pnpm | |
uses: pnpm/action-setup@v4 | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: 'pnpm' | |
- name: Configure Git credentials | |
run: | | |
git config --global user.name '${{ secrets.GH_USER_NAME }}' | |
git config --global user.email '${{ secrets.GH_USER_EMAIL }}' | |
- name: Install Dependencies | |
run: pnpm install | |
- name: Build | |
run: pnpm run build | |
- name: Get package.json version | |
id: get-version | |
run: echo "version=$(cat package.json | jq -r '.version' | sed 's/^/v/')" >> $GITHUB_OUTPUT | |
- name: Validate tag | |
id: validate-tag | |
run: test "$(git tag -l '${{ steps.get-version.outputs.version }}' | awk '{print $NF}')" = "${{ steps.get-version.outputs.version }}" || echo "new-tag=true" >> $GITHUB_OUTPUT | |
- name: Tag and release on Github | |
if: ${{ steps.validate-tag.outputs.new-tag }} | |
run: pnpm run release:tag | |
env: | |
GH_ACCESS_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }} | |
- name: Publish to npm | |
if: ${{ steps.validate-tag.outputs.new-tag }} | |
run: | | |
npm config set "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" | |
pnpm publish --access public | |
env: | |
NPM_CONFIG_PROVENANCE: true | |
- name: Set up Docker Buildx | |
if: ${{ steps.validate-tag.outputs.new-tag }} | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to Docker Hub | |
if: ${{ steps.validate-tag.outputs.new-tag }} | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Build and push Docker image | |
if: ${{ steps.validate-tag.outputs.new-tag }} | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
file: ./docker/Dockerfile | |
push: true | |
tags: | | |
api3/airseeker:latest | |
api3/airseeker:${{ steps.get-version.outputs.version }} |