Skip to content

Commit

Permalink
chore: merge develop
Browse files Browse the repository at this point in the history
  • Loading branch information
rafaelcr committed Feb 7, 2025
2 parents c7bc3d4 + 205b4c8 commit 57dc25f
Show file tree
Hide file tree
Showing 79 changed files with 53,688 additions and 47 deletions.
190 changes: 176 additions & 14 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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
Expand All @@ -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/[email protected]
@semantic-release/[email protected]
@semantic-release/[email protected]
[email protected]
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
Expand All @@ -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
Expand All @@ -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
Expand Down
67 changes: 66 additions & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,71 @@
},
"args": [],
"cwd": "${workspaceFolder}"
}
},
{
"type": "node",
"request": "launch",
"name": "test: ordinals-api",
"program": "${workspaceFolder}/api/ordinals/node_modules/jest/bin/jest",
"cwd": "${workspaceFolder}/api/ordinals/",
"args": [
"--testTimeout=3600000",
"--runInBand",
"--no-cache"
],
"outputCapture": "std",
"console": "integratedTerminal",
"preLaunchTask": "npm: testenv:run",
"postDebugTask": "npm: testenv:stop",
"env": {
"PGHOST": "localhost",
"PGUSER": "postgres",
"PGPASSWORD": "postgres",
},
},
{
"type": "node",
"request": "launch",
"name": "test: ordinals-api (api)",
"program": "${workspaceFolder}/api/ordinals/node_modules/jest/bin/jest",
"cwd": "${workspaceFolder}/api/ordinals/",
"args": [
"--testTimeout=3600000",
"--runInBand",
"--no-cache",
"${workspaceFolder}/api/ordinals/tests/api/"
],
"outputCapture": "std",
"console": "integratedTerminal",
"preLaunchTask": "npm: testenv:run",
"postDebugTask": "npm: testenv:stop",
"env": {
"PGHOST": "localhost",
"PGUSER": "postgres",
"PGPASSWORD": "postgres",
},
},
{
"type": "node",
"request": "launch",
"name": "test: ordinals-api (brc-20)",
"program": "${workspaceFolder}/api/ordinals/node_modules/jest/bin/jest",
"cwd": "${workspaceFolder}/api/ordinals/",
"args": [
"--testTimeout=3600000",
"--runInBand",
"--no-cache",
"${workspaceFolder}/api/ordinals/tests/brc-20/"
],
"outputCapture": "std",
"console": "integratedTerminal",
"preLaunchTask": "npm: testenv:run",
"postDebugTask": "npm: testenv:stop",
"env": {
"PGHOST": "localhost",
"PGUSER": "postgres",
"PGPASSWORD": "postgres",
},
},
]
}
43 changes: 43 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "npm: testenv:run",
"type": "shell",
"command": "npm run testenv:run -- -d",
"isBackground": true,
"options": {
"cwd": "${workspaceFolder}/api/ordinals/",
},
"problemMatcher": {
"pattern": {
"regexp": ".",
"file": 1,
"location": 2,
"message": 3
},
"background": {
"activeOnStart": true,
"beginsPattern": ".",
"endsPattern": "."
}
}
},
{
"label": "npm: testenv:stop",
"type": "shell",
"command": "npm run testenv:stop",
"options": {
"cwd": "${workspaceFolder}/api/ordinals/",
},
"presentation": {
"echo": true,
"reveal": "silent",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": false
}
}
]
}
3 changes: 3 additions & 0 deletions api/ordinals/.commitlintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"extends": ["@commitlint/config-conventional"]
}
2 changes: 2 additions & 0 deletions api/ordinals/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
**/node_modules
**/tmp
9 changes: 9 additions & 0 deletions api/ordinals/.editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# top-most EditorConfig file
root = true

[{*.ts,*.json}]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2
1 change: 1 addition & 0 deletions api/ordinals/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# See src/env.ts for environment variable documentation.
2 changes: 2 additions & 0 deletions api/ordinals/.eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_modules/
.eslintrc.js
Loading

0 comments on commit 57dc25f

Please sign in to comment.