mirror of
https://github.com/alexgo-io/bitcoin-indexer.git
synced 2026-01-12 08:34:17 +08:00
feat: migrate ordinals api to ordhook repo (#389)
* feat: add database migration cli commands * update cargo lock * chore: import first api files * test: cache first * test: cache * test: sats * test: inscription show * test: inscription transfers * test: inscriptions index * test: inscriptions complete * test: counts * test: status * test: block counts * test: brc20 activity * test: brc20 holders * ci: api tests * ci: update nvmrc path * ci: remove migration refs * ci: unused exports * ci: unused * ci: build publish * ci: monorepo * fix: timestamps * Update api/ordinals/docs/feature-guides/rate-limiting.md Co-authored-by: ASuciuX <151519329+ASuciuX@users.noreply.github.com> * Update api/ordinals/docs/feature-guides/rate-limiting.md Co-authored-by: ASuciuX <151519329+ASuciuX@users.noreply.github.com> * Update api/ordinals/docs/overview.md Co-authored-by: ASuciuX <151519329+ASuciuX@users.noreply.github.com> * Update api/ordinals/src/api/schemas.ts Co-authored-by: ASuciuX <151519329+ASuciuX@users.noreply.github.com> * Update api/ordinals/src/api/schemas.ts Co-authored-by: ASuciuX <151519329+ASuciuX@users.noreply.github.com> * fix: warnings --------- Co-authored-by: ASuciuX <151519329+ASuciuX@users.noreply.github.com>
This commit is contained in:
190
.github/workflows/ci.yaml
vendored
190
.github/workflows/ci.yaml
vendored
@@ -15,19 +15,117 @@ concurrency:
|
||||
group: ${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
DOCKER_IMAGE: hirosystems/${{ github.event.repository.name }}
|
||||
|
||||
jobs:
|
||||
api-lint:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
suite: [ordinals]
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./api/${{ matrix.suite }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: 'api/${{ matrix.suite }}/.nvmrc'
|
||||
|
||||
- name: Cache node modules
|
||||
uses: actions/cache@v4
|
||||
env:
|
||||
cache-name: cache-node-modules
|
||||
with:
|
||||
path: |
|
||||
~/.npm
|
||||
**/node_modules
|
||||
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-build-${{ env.cache-name }}-
|
||||
${{ runner.os }}-build-
|
||||
${{ runner.os }}-
|
||||
|
||||
- name: Install deps
|
||||
run: npm ci --audit=false
|
||||
|
||||
- name: Lint ESLint
|
||||
run: npm run lint:eslint
|
||||
|
||||
- name: Lint Prettier
|
||||
run: npm run lint:prettier
|
||||
|
||||
- name: Lint Unused Exports
|
||||
run: npm run lint:unused-exports
|
||||
|
||||
api-test:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
suite: [ordinals]
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./api/${{ matrix.suite }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: 'api/${{ matrix.suite }}/.nvmrc'
|
||||
|
||||
- name: Cache node modules
|
||||
uses: actions/cache@v4
|
||||
env:
|
||||
cache-name: cache-node-modules
|
||||
with:
|
||||
path: |
|
||||
~/.npm
|
||||
**/node_modules
|
||||
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-build-${{ env.cache-name }}-
|
||||
${{ runner.os }}-build-
|
||||
${{ runner.os }}-
|
||||
|
||||
- name: Install deps
|
||||
run: npm ci --audit=false
|
||||
|
||||
- name: Setup integration environment
|
||||
run: |
|
||||
sudo ufw disable
|
||||
npm run testenv:run -- -d
|
||||
npm run testenv:logs -- --no-color &> docker-compose-logs.txt &
|
||||
|
||||
- name: Run tests
|
||||
run: npm run test -- --coverage
|
||||
|
||||
- name: Upload coverage to Codecov
|
||||
uses: codecov/codecov-action@v4
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
|
||||
- name: Print integration environment logs
|
||||
run: cat docker-compose-logs.txt
|
||||
if: failure()
|
||||
|
||||
- name: Teardown integration environment
|
||||
run: npm run testenv:stop
|
||||
if: always()
|
||||
|
||||
test:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
suite: [cli, core]
|
||||
suite: [ordhook-cli, ordhook-core]
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./components/ordhook-${{ matrix.suite }}
|
||||
working-directory: ./components/${{ matrix.suite }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
@@ -73,11 +171,11 @@ jobs:
|
||||
run: docker compose -f ../../dockerfiles/docker-compose.dev.postgres.yml down -v -t 0
|
||||
if: always()
|
||||
|
||||
build-publish:
|
||||
semantic-release:
|
||||
runs-on: ubuntu-latest
|
||||
needs: test
|
||||
needs: [api-lint, api-test, test]
|
||||
outputs:
|
||||
docker_image_digest: ${{ steps.docker_push.outputs.digest }}
|
||||
new_release_version: ${{ steps.semantic.outputs.new_release_version }}
|
||||
new_release_published: ${{ steps.semantic.outputs.new_release_published }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
@@ -92,19 +190,31 @@ jobs:
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
SEMANTIC_RELEASE_PACKAGE: ${{ github.event.repository.name }}
|
||||
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_CRATES_IO_API_KEY }}
|
||||
with:
|
||||
semantic_version: 19
|
||||
extra_plugins: |
|
||||
@semantic-release/changelog@6.0.3
|
||||
@semantic-release/git@10.0.1
|
||||
@semantic-release/exec@6.0.3
|
||||
conventional-changelog-conventionalcommits@6.1.0
|
||||
|
||||
build-publish:
|
||||
runs-on: ubuntu-latest
|
||||
needs: semantic-release
|
||||
outputs:
|
||||
docker_image_digest: ${{ steps.docker_push.outputs.digest }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Checkout tag
|
||||
if: steps.semantic.outputs.new_release_version != ''
|
||||
if: needs.semantic-release.outputs.new_release_version != ''
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
ref: v${{ steps.semantic.outputs.new_release_version }}
|
||||
ref: v${{ needs.semantic-release.outputs.new_release_version }}
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
@@ -114,12 +224,12 @@ jobs:
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: |
|
||||
${{ env.DOCKER_IMAGE }}
|
||||
hirosystems/ordhook
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=ref,event=pr
|
||||
type=semver,pattern={{version}},value=${{ steps.semantic.outputs.new_release_version }},enable=${{ steps.semantic.outputs.new_release_version != '' }}
|
||||
type=semver,pattern={{major}}.{{minor}},value=${{ steps.semantic.outputs.new_release_version }},enable=${{ steps.semantic.outputs.new_release_version != '' }}
|
||||
type=semver,pattern={{version}},value=${{ needs.semantic-release.outputs.new_release_version }},enable=${{ needs.semantic-release.outputs.new_release_version != '' }}
|
||||
type=semver,pattern={{major}}.{{minor}},value=${{ needs.semantic-release.outputs.new_release_version }},enable=${{ needs.semantic-release.outputs.new_release_version != '' }}
|
||||
type=raw,value=latest,enable={{is_default_branch}}
|
||||
|
||||
- name: Log in to DockerHub
|
||||
@@ -141,7 +251,59 @@ jobs:
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
# Only push if (there's a new release on main branch, or if building a non-main branch) and (Only run on non-PR events or only PRs that aren't from forks)
|
||||
push: ${{ (github.ref != 'refs/heads/main' || steps.semantic.outputs.new_release_version != '') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }}
|
||||
push: ${{ (github.ref != 'refs/heads/main' || needs.semantic-release.outputs.new_release_version != '') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }}
|
||||
|
||||
api-build-publish:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
suite: [ordinals]
|
||||
runs-on: ubuntu-latest
|
||||
needs: semantic-release
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ secrets.GH_TOKEN || secrets.GITHUB_TOKEN }}
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Checkout tag
|
||||
if: needs.semantic-release.outputs.new_release_version != ''
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
ref: v${{ needs.semantic-release.outputs.new_release_version }}
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Docker Meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: |
|
||||
hirosystems/${{ matrix.suite }}
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=ref,event=pr
|
||||
type=semver,pattern={{version}},value=${{ needs.semantic-release.outputs.new_release_version }},enable=${{ needs.semantic-release.outputs.new_release_version != '' }}
|
||||
type=semver,pattern={{major}}.{{minor}},value=${{ needs.semantic-release.outputs.new_release_version }},enable=${{ needs.semantic-release.outputs.new_release_version != '' }}
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
||||
|
||||
- name: Build/Tag/Push Image
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: ./api/${{ matrix.suite }}
|
||||
file: ./api/${{ matrix.suite }}/Dockerfile
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
# Only push if (there's a new release on main branch, or if building a non-main branch) and (Only run on non-PR events or only PRs that aren't from forks)
|
||||
push: ${{ (github.ref != 'refs/heads/master' || needs.semantic-release.outputs.new_release_version != '') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }}
|
||||
|
||||
deploy-dev:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
Reference in New Issue
Block a user