Skip to content

Commit 63474e4

Browse files
committed
feat: add docker
1 parent 3257749 commit 63474e4

File tree

9 files changed

+314
-22
lines changed

9 files changed

+314
-22
lines changed

.github/workflows/release.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
branches:
6+
- "main"
7+
workflow_dispatch:
8+
9+
env:
10+
HUSKY: 0
11+
CI: true
12+
13+
jobs:
14+
release:
15+
runs-on: ubuntu-latest
16+
17+
steps:
18+
- uses: actions/checkout@v4
19+
20+
- name: Login to GitHub Container Registry
21+
uses: docker/login-action@v3
22+
with:
23+
registry: ghcr.io
24+
username: ${{ github.actor }}
25+
password: ${{ github.token }}
26+
27+
- name: Semantic Release
28+
uses: cycjimmy/semantic-release-action@v4
29+
with:
30+
extra_plugins: |
31+
@codedependant/semantic-release-docker
32+
env:
33+
GITHUB_TOKEN: ${{ github.token }}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1+
build
12
node_modules

.releaserc.json

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
{
2+
"branches": [
3+
{
4+
"name": "main"
5+
}
6+
],
7+
"plugins": [
8+
"@semantic-release/commit-analyzer",
9+
"@semantic-release/release-notes-generator",
10+
[
11+
"@semantic-release/github",
12+
{
13+
"successComment": false,
14+
"failTitle": false
15+
}
16+
],
17+
[
18+
"@codedependant/semantic-release-docker",
19+
{
20+
"dockerTags": [
21+
"{{#if prerelease.[0]}}{{prerelease.[0]}}{{else}}latest{{/if}}",
22+
"{{version}}"
23+
],
24+
"dockerArgs": {
25+
"PACKAGE_VERSION": "{{version}}"
26+
},
27+
"dockerImage": "apy-server",
28+
"dockerRegistry": "ghcr.io",
29+
"dockerProject": "gearbox-protocol",
30+
"dockerBuildQuiet": false,
31+
"dockerLogin": false
32+
}
33+
]
34+
]
35+
}

Dockerfile

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
FROM node:20.14 as dev
2+
3+
ENV YARN_CACHE_FOLDER=/root/.yarn
4+
5+
WORKDIR /app
6+
7+
COPY . .
8+
9+
RUN --mount=type=cache,id=yarn,target=/root/.yarn \
10+
yarn install --frozen-lockfile --ignore-engines \
11+
&& yarn build
12+
13+
# Production npm modules
14+
15+
FROM node:20.14 as prod
16+
17+
ENV YARN_CACHE_FOLDER=/root/.yarn
18+
19+
WORKDIR /app
20+
21+
COPY --from=dev /app/package.json /app
22+
COPY --from=dev /app/build/ /app/build
23+
24+
RUN --mount=type=cache,id=yarn,target=/root/.yarn \
25+
yarn install --production --frozen-lockfile --ignore-engines
26+
27+
28+
# Final image
29+
30+
FROM gcr.io/distroless/nodejs20-debian12
31+
32+
WORKDIR /app
33+
COPY --from=dev /app /app
34+
CMD ["--enable-source-maps", "/app/build/main.mjs"]

esbuild.config.mjs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { build } from "esbuild";
2+
3+
build({
4+
entryPoints: ["main.ts"],
5+
outdir: "build",
6+
bundle: true,
7+
platform: "node",
8+
format: "esm",
9+
outExtension: { ".js": ".mjs" },
10+
target: ["node20"],
11+
sourcemap: "external",
12+
banner: {
13+
js: `
14+
import { createRequire } from 'module';
15+
import { fileURLToPath } from 'url';
16+
17+
const require = createRequire(import.meta.url);
18+
const __filename = fileURLToPath(import.meta.url);
19+
const __dirname = path.dirname(__filename);
20+
`,
21+
},
22+
external: ["node-pty"],
23+
}).catch(e => {
24+
console.error(e);
25+
process.exit(1);
26+
});

package.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
"description": "Gearbox SDK",
55
"main": "index.js",
66
"license": "MIT",
7+
"scripts": {
8+
"build": "node esbuild.config.mjs"
9+
},
710
"dependencies": {
811
"axios": "^1.7.9",
912
"cors": "^2.8.5",
@@ -16,6 +19,7 @@
1619
"devDependencies": {
1720
"@gearbox-protocol/prettier-config": "^2.0.0",
1821
"@types/cors": "^2.8.17",
19-
"@types/express": "^5.0.0"
22+
"@types/express": "^5.0.0",
23+
"esbuild": "^0.24.0"
2024
}
21-
}
25+
}

src/apy/curveAPY.ts

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -165,11 +165,13 @@ export async function getCurveAPY(network: NetworkType, store: TokenStore): Prom
165165
reward: pool.lpTokenAddress,
166166
symbol: curveSymbol,
167167
value: curveAPYToBn(baseAPY),
168-
}, {
169-
reward: crv.address,
170-
symbol: crv.symbol,
171-
value: curveAPYToBn(maxCrv),
172-
}, ...extraRewards];
168+
},
169+
// {
170+
// reward: crv.address,
171+
// symbol: crv.symbol,
172+
// value: curveAPYToBn(maxCrv),
173+
// }, ...extraRewards,
174+
];
173175
acc[pool.lpTokenAddress] = getTokenAPY(curveSymbol, curveAPYs);
174176
return acc;
175177
},
@@ -199,20 +201,21 @@ export async function getCurveAPY(network: NetworkType, store: TokenStore): Prom
199201
symbol: gearPool.symbol,
200202
value: curveAPYToBn(gearVolume?.latestDailyApyPcent || 0),
201203
},
202-
{
203-
reward: crv.address,
204-
symbol: crv.symbol,
205-
value: curveAPYToBn(Math.max(...(gearPool?.gaugeCrvApy || []), 0)),
206-
},
207-
...(gearPool?.gaugeRewards || []).map(
208-
({ apy = 0, symbol, tokenAddress }): ApyDetails => {
209-
return {
210-
reward: tokenAddress,
211-
symbol: symbol,
212-
value: curveAPYToBn(apy),
213-
}
214-
}
215-
)];
204+
// {
205+
// reward: crv.address,
206+
// symbol: crv.symbol,
207+
// value: curveAPYToBn(Math.max(...(gearPool?.gaugeCrvApy || []), 0)),
208+
// },
209+
// ...(gearPool?.gaugeRewards || []).map(
210+
// ({ apy = 0, symbol, tokenAddress }): ApyDetails => {
211+
// return {
212+
// reward: tokenAddress,
213+
// symbol: symbol,
214+
// value: curveAPYToBn(apy),
215+
// }
216+
// }
217+
// ),
218+
];
216219

217220
curveAPY[GEAR_POOL as Address] = getTokenAPY(gearPool.symbol, gearAPY);
218221

src/apy/type.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export const CHAINS = {
1818
Arbitrum: 42161,
1919
Optimism: 10,
2020
};
21-
export declare const NOT_DEPLOYED = "0xNOT DEPLOYED";
21+
export const NOT_DEPLOYED = "0xNOT DEPLOYED";
2222

2323
export function isSupportedNetwork(chainId: number) {
2424
return Object.values(CHAINS).includes(chainId);

yarn.lock

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,131 @@
77
resolved "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz"
88
integrity sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==
99

10+
"@esbuild/aix-ppc64@0.24.2":
11+
version "0.24.2"
12+
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461"
13+
integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==
14+
15+
"@esbuild/android-arm64@0.24.2":
16+
version "0.24.2"
17+
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894"
18+
integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==
19+
20+
"@esbuild/android-arm@0.24.2":
21+
version "0.24.2"
22+
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3"
23+
integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==
24+
25+
"@esbuild/android-x64@0.24.2":
26+
version "0.24.2"
27+
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb"
28+
integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==
29+
30+
"@esbuild/darwin-arm64@0.24.2":
31+
version "0.24.2"
32+
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936"
33+
integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==
34+
35+
"@esbuild/darwin-x64@0.24.2":
36+
version "0.24.2"
37+
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9"
38+
integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==
39+
40+
"@esbuild/freebsd-arm64@0.24.2":
41+
version "0.24.2"
42+
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00"
43+
integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==
44+
45+
"@esbuild/freebsd-x64@0.24.2":
46+
version "0.24.2"
47+
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f"
48+
integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==
49+
50+
"@esbuild/linux-arm64@0.24.2":
51+
version "0.24.2"
52+
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43"
53+
integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==
54+
55+
"@esbuild/linux-arm@0.24.2":
56+
version "0.24.2"
57+
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736"
58+
integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==
59+
60+
"@esbuild/linux-ia32@0.24.2":
61+
version "0.24.2"
62+
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5"
63+
integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==
64+
65+
"@esbuild/linux-loong64@0.24.2":
66+
version "0.24.2"
67+
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc"
68+
integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==
69+
70+
"@esbuild/linux-mips64el@0.24.2":
71+
version "0.24.2"
72+
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb"
73+
integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==
74+
75+
"@esbuild/linux-ppc64@0.24.2":
76+
version "0.24.2"
77+
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412"
78+
integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==
79+
80+
"@esbuild/linux-riscv64@0.24.2":
81+
version "0.24.2"
82+
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694"
83+
integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==
84+
85+
"@esbuild/linux-s390x@0.24.2":
86+
version "0.24.2"
87+
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577"
88+
integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==
89+
90+
"@esbuild/linux-x64@0.24.2":
91+
version "0.24.2"
92+
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f"
93+
integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==
94+
95+
"@esbuild/netbsd-arm64@0.24.2":
96+
version "0.24.2"
97+
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6"
98+
integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==
99+
100+
"@esbuild/netbsd-x64@0.24.2":
101+
version "0.24.2"
102+
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40"
103+
integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==
104+
105+
"@esbuild/openbsd-arm64@0.24.2":
106+
version "0.24.2"
107+
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f"
108+
integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==
109+
110+
"@esbuild/openbsd-x64@0.24.2":
111+
version "0.24.2"
112+
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205"
113+
integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==
114+
115+
"@esbuild/sunos-x64@0.24.2":
116+
version "0.24.2"
117+
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6"
118+
integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==
119+
120+
"@esbuild/win32-arm64@0.24.2":
121+
version "0.24.2"
122+
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85"
123+
integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==
124+
125+
"@esbuild/win32-ia32@0.24.2":
126+
version "0.24.2"
127+
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2"
128+
integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==
129+
130+
"@esbuild/win32-x64@0.24.2":
131+
version "0.24.2"
132+
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b"
133+
integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==
134+
10135
"@gearbox-protocol/prettier-config@^2.0.0":
11136
version "2.0.0"
12137
resolved "https://registry.npmjs.org/@gearbox-protocol/prettier-config/-/prettier-config-2.0.0.tgz"
@@ -311,6 +436,37 @@ es-object-atoms@^1.0.0:
311436
dependencies:
312437
es-errors "^1.3.0"
313438

439+
esbuild@^0.24.0:
440+
version "0.24.2"
441+
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d"
442+
integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==
443+
optionalDependencies:
444+
"@esbuild/aix-ppc64" "0.24.2"
445+
"@esbuild/android-arm" "0.24.2"
446+
"@esbuild/android-arm64" "0.24.2"
447+
"@esbuild/android-x64" "0.24.2"
448+
"@esbuild/darwin-arm64" "0.24.2"
449+
"@esbuild/darwin-x64" "0.24.2"
450+
"@esbuild/freebsd-arm64" "0.24.2"
451+
"@esbuild/freebsd-x64" "0.24.2"
452+
"@esbuild/linux-arm" "0.24.2"
453+
"@esbuild/linux-arm64" "0.24.2"
454+
"@esbuild/linux-ia32" "0.24.2"
455+
"@esbuild/linux-loong64" "0.24.2"
456+
"@esbuild/linux-mips64el" "0.24.2"
457+
"@esbuild/linux-ppc64" "0.24.2"
458+
"@esbuild/linux-riscv64" "0.24.2"
459+
"@esbuild/linux-s390x" "0.24.2"
460+
"@esbuild/linux-x64" "0.24.2"
461+
"@esbuild/netbsd-arm64" "0.24.2"
462+
"@esbuild/netbsd-x64" "0.24.2"
463+
"@esbuild/openbsd-arm64" "0.24.2"
464+
"@esbuild/openbsd-x64" "0.24.2"
465+
"@esbuild/sunos-x64" "0.24.2"
466+
"@esbuild/win32-arm64" "0.24.2"
467+
"@esbuild/win32-ia32" "0.24.2"
468+
"@esbuild/win32-x64" "0.24.2"
469+
314470
escape-html@~1.0.3:
315471
version "1.0.3"
316472
resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz"

0 commit comments

Comments
 (0)