mirror of
https://github.com/sourcebot-dev/sourcebot.git
synced 2025-12-12 04:15:30 +00:00
wip - used baked in token
This commit is contained in:
parent
f1dd16be82
commit
df6c3ea3bc
10 changed files with 22 additions and 31 deletions
|
|
@ -29,7 +29,6 @@ SOURCEBOT_PUBLIC_KEY_PATH=${PWD}/public.pem
|
||||||
|
|
||||||
# PostHog
|
# PostHog
|
||||||
# POSTHOG_PAPIK=""
|
# POSTHOG_PAPIK=""
|
||||||
# NEXT_PUBLIC_POSTHOG_PAPIK=""
|
|
||||||
|
|
||||||
# Sentry
|
# Sentry
|
||||||
# SENTRY_BACKEND_DSN=""
|
# SENTRY_BACKEND_DSN=""
|
||||||
|
|
|
||||||
1
.github/workflows/_gcp-deploy.yml
vendored
1
.github/workflows/_gcp-deploy.yml
vendored
|
|
@ -55,7 +55,6 @@ jobs:
|
||||||
${{ env.IMAGE_PATH }}:latest
|
${{ env.IMAGE_PATH }}:latest
|
||||||
build-args: |
|
build-args: |
|
||||||
NEXT_PUBLIC_SOURCEBOT_VERSION=${{ github.ref_name }}
|
NEXT_PUBLIC_SOURCEBOT_VERSION=${{ github.ref_name }}
|
||||||
NEXT_PUBLIC_POSTHOG_PAPIK=${{ vars.NEXT_PUBLIC_POSTHOG_PAPIK }}
|
|
||||||
NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT=${{ vars.NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT }}
|
NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT=${{ vars.NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT }}
|
||||||
NEXT_PUBLIC_SENTRY_ENVIRONMENT=${{ vars.NEXT_PUBLIC_SENTRY_ENVIRONMENT }}
|
NEXT_PUBLIC_SENTRY_ENVIRONMENT=${{ vars.NEXT_PUBLIC_SENTRY_ENVIRONMENT }}
|
||||||
NEXT_PUBLIC_SENTRY_WEBAPP_DSN=${{ vars.NEXT_PUBLIC_SENTRY_WEBAPP_DSN }}
|
NEXT_PUBLIC_SENTRY_WEBAPP_DSN=${{ vars.NEXT_PUBLIC_SENTRY_WEBAPP_DSN }}
|
||||||
|
|
|
||||||
1
.github/workflows/ghcr-publish.yml
vendored
1
.github/workflows/ghcr-publish.yml
vendored
|
|
@ -77,7 +77,6 @@ jobs:
|
||||||
outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true,annotation.org.opencontainers.image.description=Blazingly fast code search
|
outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true,annotation.org.opencontainers.image.description=Blazingly fast code search
|
||||||
build-args: |
|
build-args: |
|
||||||
NEXT_PUBLIC_SOURCEBOT_VERSION=${{ github.ref_name }}
|
NEXT_PUBLIC_SOURCEBOT_VERSION=${{ github.ref_name }}
|
||||||
NEXT_PUBLIC_POSTHOG_PAPIK=${{ vars.NEXT_PUBLIC_POSTHOG_PAPIK }}
|
|
||||||
|
|
||||||
- name: Export digest
|
- name: Export digest
|
||||||
run: |
|
run: |
|
||||||
|
|
|
||||||
14
Dockerfile
14
Dockerfile
|
|
@ -8,11 +8,6 @@
|
||||||
# @see: https://docs.docker.com/build/building/variables/#scoping
|
# @see: https://docs.docker.com/build/building/variables/#scoping
|
||||||
|
|
||||||
ARG NEXT_PUBLIC_SOURCEBOT_VERSION
|
ARG NEXT_PUBLIC_SOURCEBOT_VERSION
|
||||||
# PAPIK = Project API Key
|
|
||||||
# Note that this key does not need to be kept secret, so it's not
|
|
||||||
# necessary to use Docker build secrets here.
|
|
||||||
# @see: https://posthog.com/tutorials/api-capture-events#authenticating-with-the-project-api-key
|
|
||||||
ARG NEXT_PUBLIC_POSTHOG_PAPIK
|
|
||||||
ARG NEXT_PUBLIC_SENTRY_ENVIRONMENT
|
ARG NEXT_PUBLIC_SENTRY_ENVIRONMENT
|
||||||
ARG NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT
|
ARG NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT
|
||||||
ARG NEXT_PUBLIC_SENTRY_WEBAPP_DSN
|
ARG NEXT_PUBLIC_SENTRY_WEBAPP_DSN
|
||||||
|
|
@ -57,8 +52,6 @@ ENV SKIP_ENV_VALIDATION=1
|
||||||
# -----------
|
# -----------
|
||||||
ARG NEXT_PUBLIC_SOURCEBOT_VERSION
|
ARG NEXT_PUBLIC_SOURCEBOT_VERSION
|
||||||
ENV NEXT_PUBLIC_SOURCEBOT_VERSION=$NEXT_PUBLIC_SOURCEBOT_VERSION
|
ENV NEXT_PUBLIC_SOURCEBOT_VERSION=$NEXT_PUBLIC_SOURCEBOT_VERSION
|
||||||
ARG NEXT_PUBLIC_POSTHOG_PAPIK
|
|
||||||
ENV NEXT_PUBLIC_POSTHOG_PAPIK=$NEXT_PUBLIC_POSTHOG_PAPIK
|
|
||||||
ARG NEXT_PUBLIC_SENTRY_ENVIRONMENT
|
ARG NEXT_PUBLIC_SENTRY_ENVIRONMENT
|
||||||
ENV NEXT_PUBLIC_SENTRY_ENVIRONMENT=$NEXT_PUBLIC_SENTRY_ENVIRONMENT
|
ENV NEXT_PUBLIC_SENTRY_ENVIRONMENT=$NEXT_PUBLIC_SENTRY_ENVIRONMENT
|
||||||
ARG NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT
|
ARG NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT
|
||||||
|
|
@ -154,8 +147,6 @@ FROM node-alpine AS runner
|
||||||
# -----------
|
# -----------
|
||||||
ARG NEXT_PUBLIC_SOURCEBOT_VERSION
|
ARG NEXT_PUBLIC_SOURCEBOT_VERSION
|
||||||
ENV NEXT_PUBLIC_SOURCEBOT_VERSION=$NEXT_PUBLIC_SOURCEBOT_VERSION
|
ENV NEXT_PUBLIC_SOURCEBOT_VERSION=$NEXT_PUBLIC_SOURCEBOT_VERSION
|
||||||
ARG NEXT_PUBLIC_POSTHOG_PAPIK
|
|
||||||
ENV NEXT_PUBLIC_POSTHOG_PAPIK=$NEXT_PUBLIC_POSTHOG_PAPIK
|
|
||||||
ARG NEXT_PUBLIC_SENTRY_ENVIRONMENT
|
ARG NEXT_PUBLIC_SENTRY_ENVIRONMENT
|
||||||
ENV NEXT_PUBLIC_SENTRY_ENVIRONMENT=$NEXT_PUBLIC_SENTRY_ENVIRONMENT
|
ENV NEXT_PUBLIC_SENTRY_ENVIRONMENT=$NEXT_PUBLIC_SENTRY_ENVIRONMENT
|
||||||
ARG NEXT_PUBLIC_SENTRY_WEBAPP_DSN
|
ARG NEXT_PUBLIC_SENTRY_WEBAPP_DSN
|
||||||
|
|
@ -178,6 +169,11 @@ ENV DATA_CACHE_DIR=$DATA_DIR/.sourcebot
|
||||||
ENV DATABASE_DATA_DIR=$DATA_CACHE_DIR/db
|
ENV DATABASE_DATA_DIR=$DATA_CACHE_DIR/db
|
||||||
ENV REDIS_DATA_DIR=$DATA_CACHE_DIR/redis
|
ENV REDIS_DATA_DIR=$DATA_CACHE_DIR/redis
|
||||||
ENV SOURCEBOT_PUBLIC_KEY_PATH=/app/public.pem
|
ENV SOURCEBOT_PUBLIC_KEY_PATH=/app/public.pem
|
||||||
|
# PAPIK = Project API Key
|
||||||
|
# Note that this key does not need to be kept secret, so it's not
|
||||||
|
# necessary to use Docker build secrets here.
|
||||||
|
# @see: https://posthog.com/tutorials/api-capture-events#authenticating-with-the-project-api-key
|
||||||
|
ENV POSTHOG_PAPIK=phc_lLPuFFi5LH6c94eFJcqvYVFwiJffVcV6HD8U4a1OnRW
|
||||||
|
|
||||||
# Valid values are: debug, info, warn, error
|
# Valid values are: debug, info, warn, error
|
||||||
ENV SOURCEBOT_LOG_LEVEL=info
|
ENV SOURCEBOT_LOG_LEVEL=info
|
||||||
|
|
|
||||||
|
|
@ -66,12 +66,6 @@ fi
|
||||||
|
|
||||||
echo -e "\e[34m[Info] Sourcebot version: $NEXT_PUBLIC_SOURCEBOT_VERSION\e[0m"
|
echo -e "\e[34m[Info] Sourcebot version: $NEXT_PUBLIC_SOURCEBOT_VERSION\e[0m"
|
||||||
|
|
||||||
# If we don't have a PostHog key, then we need to disable telemetry.
|
|
||||||
if [ -z "$NEXT_PUBLIC_POSTHOG_PAPIK" ]; then
|
|
||||||
echo -e "\e[33m[Warning] NEXT_PUBLIC_POSTHOG_PAPIK was not set. Setting SOURCEBOT_TELEMETRY_DISABLED.\e[0m"
|
|
||||||
export SOURCEBOT_TELEMETRY_DISABLED=true
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$SOURCEBOT_TELEMETRY_DISABLED" ]; then
|
if [ -n "$SOURCEBOT_TELEMETRY_DISABLED" ]; then
|
||||||
# Validate that SOURCEBOT_TELEMETRY_DISABLED is either "true" or "false"
|
# Validate that SOURCEBOT_TELEMETRY_DISABLED is either "true" or "false"
|
||||||
if [ "$SOURCEBOT_TELEMETRY_DISABLED" != "true" ] && [ "$SOURCEBOT_TELEMETRY_DISABLED" != "false" ]; then
|
if [ "$SOURCEBOT_TELEMETRY_DISABLED" != "true" ] && [ "$SOURCEBOT_TELEMETRY_DISABLED" != "false" ]; then
|
||||||
|
|
@ -159,7 +153,7 @@ if [ ! -f "$FIRST_RUN_FILE" ]; then
|
||||||
# (if telemetry is enabled)
|
# (if telemetry is enabled)
|
||||||
if [ "$SOURCEBOT_TELEMETRY_DISABLED" = "false" ]; then
|
if [ "$SOURCEBOT_TELEMETRY_DISABLED" = "false" ]; then
|
||||||
if ! ( curl -L --output /dev/null --silent --fail --header "Content-Type: application/json" -d '{
|
if ! ( curl -L --output /dev/null --silent --fail --header "Content-Type: application/json" -d '{
|
||||||
"api_key": "'"$NEXT_PUBLIC_POSTHOG_PAPIK"'",
|
"api_key": "'"$POSTHOG_PAPIK"'",
|
||||||
"event": "install",
|
"event": "install",
|
||||||
"distinct_id": "'"$SOURCEBOT_INSTALL_ID"'",
|
"distinct_id": "'"$SOURCEBOT_INSTALL_ID"'",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|
@ -179,7 +173,7 @@ else
|
||||||
|
|
||||||
if [ "$SOURCEBOT_TELEMETRY_DISABLED" = "false" ]; then
|
if [ "$SOURCEBOT_TELEMETRY_DISABLED" = "false" ]; then
|
||||||
if ! ( curl -L --output /dev/null --silent --fail --header "Content-Type: application/json" -d '{
|
if ! ( curl -L --output /dev/null --silent --fail --header "Content-Type: application/json" -d '{
|
||||||
"api_key": "'"$NEXT_PUBLIC_POSTHOG_PAPIK"'",
|
"api_key": "'"$POSTHOG_PAPIK"'",
|
||||||
"event": "upgrade",
|
"event": "upgrade",
|
||||||
"distinct_id": "'"$SOURCEBOT_INSTALL_ID"'",
|
"distinct_id": "'"$SOURCEBOT_INSTALL_ID"'",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,9 @@ import { PosthogEvent, PosthogEventMap } from './posthogEvents.js';
|
||||||
|
|
||||||
let posthog: PostHog | undefined = undefined;
|
let posthog: PostHog | undefined = undefined;
|
||||||
|
|
||||||
if (clientEnv.NEXT_PUBLIC_POSTHOG_PAPIK) {
|
if (env.POSTHOG_PAPIK) {
|
||||||
posthog = new PostHog(
|
posthog = new PostHog(
|
||||||
clientEnv.NEXT_PUBLIC_POSTHOG_PAPIK,
|
env.POSTHOG_PAPIK,
|
||||||
{
|
{
|
||||||
host: "https://us.i.posthog.com",
|
host: "https://us.i.posthog.com",
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ export const env = createEnv({
|
||||||
client: {
|
client: {
|
||||||
NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT: z.enum(SOURCEBOT_CLOUD_ENVIRONMENT).optional(),
|
NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT: z.enum(SOURCEBOT_CLOUD_ENVIRONMENT).optional(),
|
||||||
NEXT_PUBLIC_SOURCEBOT_VERSION: z.string().default("unknown"),
|
NEXT_PUBLIC_SOURCEBOT_VERSION: z.string().default("unknown"),
|
||||||
NEXT_PUBLIC_POSTHOG_PAPIK: z.string().optional(),
|
|
||||||
NEXT_PUBLIC_SENTRY_BACKEND_DSN: z.string().optional(),
|
NEXT_PUBLIC_SENTRY_BACKEND_DSN: z.string().optional(),
|
||||||
NEXT_PUBLIC_SENTRY_ENVIRONMENT: z.string().optional(),
|
NEXT_PUBLIC_SENTRY_ENVIRONMENT: z.string().optional(),
|
||||||
NEXT_PUBLIC_LANGFUSE_PUBLIC_KEY: z.string().optional(),
|
NEXT_PUBLIC_LANGFUSE_PUBLIC_KEY: z.string().optional(),
|
||||||
|
|
@ -16,7 +15,6 @@ export const env = createEnv({
|
||||||
runtimeEnvStrict: {
|
runtimeEnvStrict: {
|
||||||
NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT: process.env.NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT,
|
NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT: process.env.NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT,
|
||||||
NEXT_PUBLIC_SOURCEBOT_VERSION: process.env.NEXT_PUBLIC_SOURCEBOT_VERSION,
|
NEXT_PUBLIC_SOURCEBOT_VERSION: process.env.NEXT_PUBLIC_SOURCEBOT_VERSION,
|
||||||
NEXT_PUBLIC_POSTHOG_PAPIK: process.env.NEXT_PUBLIC_POSTHOG_PAPIK,
|
|
||||||
NEXT_PUBLIC_SENTRY_BACKEND_DSN: process.env.NEXT_PUBLIC_SENTRY_BACKEND_DSN,
|
NEXT_PUBLIC_SENTRY_BACKEND_DSN: process.env.NEXT_PUBLIC_SENTRY_BACKEND_DSN,
|
||||||
NEXT_PUBLIC_SENTRY_ENVIRONMENT: process.env.NEXT_PUBLIC_SENTRY_ENVIRONMENT,
|
NEXT_PUBLIC_SENTRY_ENVIRONMENT: process.env.NEXT_PUBLIC_SENTRY_ENVIRONMENT,
|
||||||
NEXT_PUBLIC_LANGFUSE_PUBLIC_KEY: process.env.NEXT_PUBLIC_LANGFUSE_PUBLIC_KEY,
|
NEXT_PUBLIC_LANGFUSE_PUBLIC_KEY: process.env.NEXT_PUBLIC_LANGFUSE_PUBLIC_KEY,
|
||||||
|
|
|
||||||
|
|
@ -120,6 +120,7 @@ export const env = createEnv({
|
||||||
CONFIG_MAX_REPOS_NO_TOKEN: numberSchema.default(Number.MAX_SAFE_INTEGER),
|
CONFIG_MAX_REPOS_NO_TOKEN: numberSchema.default(Number.MAX_SAFE_INTEGER),
|
||||||
NODE_ENV: z.enum(["development", "test", "production"]),
|
NODE_ENV: z.enum(["development", "test", "production"]),
|
||||||
SOURCEBOT_TELEMETRY_DISABLED: booleanSchema.default('false'),
|
SOURCEBOT_TELEMETRY_DISABLED: booleanSchema.default('false'),
|
||||||
|
POSTHOG_PAPIK: z.string(),
|
||||||
|
|
||||||
// Database variables
|
// Database variables
|
||||||
// Either DATABASE_URL or DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD, and DATABASE_NAME must be set.
|
// Either DATABASE_URL or DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD, and DATABASE_NAME must be set.
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,12 @@ export default function RootLayout({
|
||||||
<Toaster />
|
<Toaster />
|
||||||
<SessionProvider>
|
<SessionProvider>
|
||||||
<PlanProvider entitlements={getEntitlements()}>
|
<PlanProvider entitlements={getEntitlements()}>
|
||||||
<PostHogProvider disabled={env.SOURCEBOT_TELEMETRY_DISABLED === "true"}>
|
<PostHogProvider
|
||||||
|
isDisabled={env.SOURCEBOT_TELEMETRY_DISABLED === "true"}
|
||||||
|
// @note: the posthog api key doesn't need to be kept secret,
|
||||||
|
// so we are safe to send it to the client.
|
||||||
|
posthogApiKey={env.POSTHOG_PAPIK}
|
||||||
|
>
|
||||||
<ThemeProvider
|
<ThemeProvider
|
||||||
attribute="class"
|
attribute="class"
|
||||||
defaultTheme="system"
|
defaultTheme="system"
|
||||||
|
|
|
||||||
|
|
@ -32,16 +32,16 @@ function PostHogPageView() {
|
||||||
|
|
||||||
interface PostHogProviderProps {
|
interface PostHogProviderProps {
|
||||||
children: React.ReactNode
|
children: React.ReactNode
|
||||||
disabled: boolean
|
isDisabled: boolean
|
||||||
|
posthogApiKey: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export function PostHogProvider({ children, disabled }: PostHogProviderProps) {
|
export function PostHogProvider({ children, isDisabled, posthogApiKey }: PostHogProviderProps) {
|
||||||
const { data: session } = useSession();
|
const { data: session } = useSession();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!disabled && env.NEXT_PUBLIC_POSTHOG_PAPIK) {
|
if (!isDisabled) {
|
||||||
console.debug(`PostHog telemetry enabled. Cloud environment: ${env.NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT}`);
|
posthog.init(posthogApiKey, {
|
||||||
posthog.init(env.NEXT_PUBLIC_POSTHOG_PAPIK, {
|
|
||||||
// @see next.config.mjs for path rewrites to the "/ingest" route.
|
// @see next.config.mjs for path rewrites to the "/ingest" route.
|
||||||
api_host: "/ingest",
|
api_host: "/ingest",
|
||||||
person_profiles: 'identified_only',
|
person_profiles: 'identified_only',
|
||||||
|
|
@ -66,7 +66,7 @@ export function PostHogProvider({ children, disabled }: PostHogProviderProps) {
|
||||||
} else {
|
} else {
|
||||||
console.debug("PostHog telemetry disabled");
|
console.debug("PostHog telemetry disabled");
|
||||||
}
|
}
|
||||||
}, [disabled]);
|
}, [isDisabled, posthogApiKey]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!session) {
|
if (!session) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue