mirror of
https://github.com/diced/zipline.git
synced 2025-05-10 18:05:54 +02:00
feat: expose git sha in versioning api
This commit is contained in:
parent
90aef3dce1
commit
5ab36a08b2
6 changed files with 44 additions and 7 deletions
2
.github/workflows/docker-release.yml
vendored
2
.github/workflows/docker-release.yml
vendored
|
@ -46,6 +46,8 @@ jobs:
|
||||||
cache-from: type=gha
|
cache-from: type=gha
|
||||||
cache-to: type=gha,mode=max
|
cache-to: type=gha,mode=max
|
||||||
provenance: false
|
provenance: false
|
||||||
|
build-args: |
|
||||||
|
ZIPLINE_GIT_SHA=${{ steps.sha.outputs.short_sha }}
|
||||||
tags: |
|
tags: |
|
||||||
ghcr.io/diced/zipline:${{ steps.version.outputs.zipline_version }}-${{ matrix.arch }}
|
ghcr.io/diced/zipline:${{ steps.version.outputs.zipline_version }}-${{ matrix.arch }}
|
||||||
ghcr.io/diced/zipline:${{ steps.version.outputs.zipline_version }}-${{ steps.sha.outputs.short_sha }}-${{ matrix.arch }}
|
ghcr.io/diced/zipline:${{ steps.version.outputs.zipline_version }}-${{ steps.sha.outputs.short_sha }}-${{ matrix.arch }}
|
||||||
|
|
2
.github/workflows/docker.yml
vendored
2
.github/workflows/docker.yml
vendored
|
@ -40,6 +40,8 @@ jobs:
|
||||||
cache-from: type=gha
|
cache-from: type=gha
|
||||||
cache-to: type=gha,mode=max
|
cache-to: type=gha,mode=max
|
||||||
provenance: false
|
provenance: false
|
||||||
|
build-args: |
|
||||||
|
ZIPLINE_GIT_SHA=${{ steps.sha.outputs.short_sha }}
|
||||||
tags: |
|
tags: |
|
||||||
ghcr.io/diced/zipline:trunk-${{ matrix.arch }}
|
ghcr.io/diced/zipline:trunk-${{ matrix.arch }}
|
||||||
ghcr.io/diced/zipline:trunk-${{ steps.sha.outputs.short_sha }}-${{ matrix.arch }}
|
ghcr.io/diced/zipline:trunk-${{ steps.sha.outputs.short_sha }}-${{ matrix.arch }}
|
||||||
|
|
|
@ -42,6 +42,7 @@ COPY --from=builder /zipline/mimes.json ./mimes.json
|
||||||
COPY --from=builder /zipline/code.json ./code.json
|
COPY --from=builder /zipline/code.json ./code.json
|
||||||
COPY --from=builder /zipline/generated ./generated
|
COPY --from=builder /zipline/generated ./generated
|
||||||
|
|
||||||
|
|
||||||
RUN pnpm build:prisma
|
RUN pnpm build:prisma
|
||||||
|
|
||||||
# clean
|
# clean
|
||||||
|
@ -49,4 +50,7 @@ RUN rm -rf /tmp/* /root/*
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
|
ARG ZIPLINE_GIT_SHA
|
||||||
|
ENV ZIPLINE_GIT_SHA=${ZIPLINE_GIT_SHA:-"unknown"}
|
||||||
|
|
||||||
CMD ["node", "--enable-source-maps", "build/server"]
|
CMD ["node", "--enable-source-maps", "build/server"]
|
||||||
|
|
|
@ -19,7 +19,8 @@
|
||||||
"db:prototype": "prisma db push --skip-generate && prisma generate --no-hints",
|
"db:prototype": "prisma db push --skip-generate && prisma generate --no-hints",
|
||||||
"db:migrate": "prisma migrate dev --create-only",
|
"db:migrate": "prisma migrate dev --create-only",
|
||||||
"docker:engine": "colima start --mount $PWD/themes:w --mount $PWD/uploads:w --mount $PWD/public:w",
|
"docker:engine": "colima start --mount $PWD/themes:w --mount $PWD/uploads:w --mount $PWD/public:w",
|
||||||
"docker:compose:dev:up": "docker-compose --file docker-compose.dev.yml up --build -d",
|
"docker:compose:dev:build": "docker-compose --file docker-compose.dev.yml build --build-arg ZIPLINE_GIT_SHA=$(git rev-parse HEAD)",
|
||||||
|
"docker:compose:dev:up": "docker-compose --file docker-compose.dev.yml up -d",
|
||||||
"docker:compose:dev:down": "docker-compose --file docker-compose.dev.yml down",
|
"docker:compose:dev:down": "docker-compose --file docker-compose.dev.yml down",
|
||||||
"docker:compose:dev:logs": "docker-compose --file docker-compose.dev.yml logs -f"
|
"docker:compose:dev:logs": "docker-compose --file docker-compose.dev.yml logs -f"
|
||||||
},
|
},
|
||||||
|
|
29
src/lib/version.ts
Normal file
29
src/lib/version.ts
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
// TODO: implement version checking against the API at https://zipline.diced.sh
|
||||||
|
|
||||||
|
import { version } from '../../package.json';
|
||||||
|
|
||||||
|
export function gitSha() {
|
||||||
|
const envValue = process.env.ZIPLINE_GIT_SHA;
|
||||||
|
if (envValue && envValue !== 'unknown') return envValue;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const { execSync } = require('child_process');
|
||||||
|
const commitHash = execSync('git rev-parse --short HEAD').toString().trim();
|
||||||
|
return commitHash;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error getting git commit hash:', error);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getVersion(): {
|
||||||
|
version: string;
|
||||||
|
sha: string | null;
|
||||||
|
} {
|
||||||
|
const sha = gitSha();
|
||||||
|
|
||||||
|
return {
|
||||||
|
version,
|
||||||
|
sha,
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,7 +1,6 @@
|
||||||
import { administratorMiddleware } from '@/server/middleware/administrator';
|
|
||||||
import { userMiddleware } from '@/server/middleware/user';
|
import { userMiddleware } from '@/server/middleware/user';
|
||||||
import fastifyPlugin from 'fastify-plugin';
|
import fastifyPlugin from 'fastify-plugin';
|
||||||
import { version } from '../../../../package.json';
|
import { getVersion } from '@/lib/version';
|
||||||
|
|
||||||
export type ApiVersionResponse = {
|
export type ApiVersionResponse = {
|
||||||
version: string;
|
version: string;
|
||||||
|
@ -10,10 +9,10 @@ export type ApiVersionResponse = {
|
||||||
export const PATH = '/api/version';
|
export const PATH = '/api/version';
|
||||||
export default fastifyPlugin(
|
export default fastifyPlugin(
|
||||||
(server, _, done) => {
|
(server, _, done) => {
|
||||||
server.get(PATH, { preHandler: [userMiddleware, administratorMiddleware] }, async (_, res) => {
|
server.get(PATH, { preHandler: [userMiddleware] }, async (_, res) => {
|
||||||
return res.send({
|
const details = getVersion();
|
||||||
version,
|
|
||||||
});
|
return res.send(details);
|
||||||
});
|
});
|
||||||
|
|
||||||
done();
|
done();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue