mirror of
https://github.com/farcasterxyz/hub-monorepo.git
synced 2026-04-18 03:00:22 -04:00
We want to make it easier for developers to get started with hubs. Add a separate optimized Docker image which we'll distribute for both AMD and ARM architectures. For now the publishing process is manual, but once hubs are fully open (no peering allowlists) we'll be able to auto-publish with each hubble release on NPM.
149 lines
4.6 KiB
YAML
149 lines
4.6 KiB
YAML
name: CI
|
|
on:
|
|
# CI is run on main because new branches can only access caches from master, not previous branches.
|
|
# So building on master allows new PR's to get the cache from before.
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches: [main]
|
|
|
|
# prevent multiple simultaneous test runs
|
|
concurrency:
|
|
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build-test-image:
|
|
timeout-minutes: 10
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Install Docker buildx
|
|
uses: docker/setup-buildx-action@v2
|
|
|
|
- name: Build Docker image
|
|
id: docker-image
|
|
uses: docker/build-push-action@v4
|
|
with:
|
|
cache-from: type=gha
|
|
cache-to: type=gha,type=inline
|
|
context: .
|
|
file: Dockerfile.hubble.test
|
|
load: true
|
|
tags: farcasterxyz/hubble:test
|
|
|
|
- name: Run Hubble
|
|
shell: bash
|
|
run: docker run --name hub --detach -p2282:2282 -p2283:2283 farcasterxyz/hubble:test sh -c 'yarn --cwd=apps/hubble identity create && yarn --cwd=apps/hubble start --rpc-port 2283 --ip 0.0.0.0 --gossip-port 2282 --eth-rpc-url "https://eth-goerli.g.alchemy.com/v2/IvjMoCKt1hT66f9OJoL_dMXypnvQYUdd" --network 3 --allowed-peers none'
|
|
|
|
- name: Download grpcurl
|
|
shell: bash
|
|
run: curl -L https://github.com/fullstorydev/grpcurl/releases/download/v1.8.7/grpcurl_1.8.7_linux_x86_64.tar.gz -o - | tar -xzf -
|
|
|
|
- name: Check that gRPC server is running
|
|
uses: nick-fields/retry@v2
|
|
with:
|
|
timeout_seconds: 10
|
|
retry_wait_seconds: 5
|
|
max_attempts: 10
|
|
shell: bash
|
|
command: ./grpcurl -plaintext -import-path protobufs/schemas -proto protobufs/schemas/rpc.proto 127.0.0.1:2283 HubService.GetInfo
|
|
on_retry_command: docker logs hub
|
|
|
|
build-public-image:
|
|
timeout-minutes: 10
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- uses: depot/setup-action@v1
|
|
|
|
- uses: depot/build-push-action@v1
|
|
with:
|
|
buildx-fallback: true # If Depot fails, try building locally
|
|
project: ${{ secrets.DEPOT_PROJECT_ID }}
|
|
token: ${{ secrets.DEPOT_TOKEN }}
|
|
context: .
|
|
file: Dockerfile.hubble
|
|
platforms: 'linux/amd64,linux/arm64'
|
|
tags: farcasterxyz/hubble:test
|
|
load: true # Load into Docker daemon
|
|
|
|
- name: Run Hubble
|
|
shell: bash
|
|
run: docker run --name hub --detach -p2282:2282 -p2283:2283 farcasterxyz/hubble:test sh -c 'yarn identity create && yarn start --rpc-port 2283 --ip 0.0.0.0 --gossip-port 2282 --eth-rpc-url "https://eth-goerli.g.alchemy.com/v2/IvjMoCKt1hT66f9OJoL_dMXypnvQYUdd" --network 3 --allowed-peers none'
|
|
|
|
- name: Download grpcurl
|
|
shell: bash
|
|
run: curl -L https://github.com/fullstorydev/grpcurl/releases/download/v1.8.7/grpcurl_1.8.7_linux_x86_64.tar.gz -o - | tar -xzf -
|
|
|
|
- name: Check that gRPC server is running
|
|
uses: nick-fields/retry@v2
|
|
with:
|
|
timeout_seconds: 10
|
|
retry_wait_seconds: 5
|
|
max_attempts: 10
|
|
shell: bash
|
|
command: ./grpcurl -plaintext -import-path protobufs/schemas -proto protobufs/schemas/rpc.proto 127.0.0.1:2283 HubService.GetInfo
|
|
on_retry_command: docker logs hub
|
|
|
|
analyze:
|
|
timeout-minutes: 10
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: '18'
|
|
|
|
- name: Restore cached dependencies for Node modules.
|
|
id: module-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ${{ github.workspace }}/node_modules
|
|
key: ${{ runner.os }}--node--${{ hashFiles('**/yarn.lock') }}
|
|
|
|
- name: Install dependencies
|
|
run: yarn install
|
|
|
|
# - name: Run audit
|
|
# run: yarn audit
|
|
|
|
- name: Run linter
|
|
run: yarn lint
|
|
|
|
test:
|
|
timeout-minutes: 10
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: '18'
|
|
|
|
- name: Restore cached dependencies for Node modules.
|
|
id: module-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: ${{ github.workspace }}/node_modules
|
|
key: ${{ runner.os }}--node--${{ hashFiles('**/yarn.lock') }}
|
|
|
|
- name: Install dependencies
|
|
run: yarn install
|
|
|
|
- name: Run build
|
|
run: yarn build
|
|
|
|
- name: Run tests
|
|
run: yarn test:ci
|
|
|
|
- name: Upload coverage results
|
|
uses: codecov/codecov-action@v3
|