Remove JIRA_SCHEMA_ID from entire application
- Remove JIRA_SCHEMA_ID from all documentation, config files, and scripts - Update generate-schema.ts to always auto-discover schemas dynamically - Runtime application already discovers schemas via /objectschema/list API - Build script now automatically selects schema with most objects - Remove JIRA_SCHEMA_ID from docker-compose.yml, Azure setup scripts, and all docs - Application is now fully schema-agnostic and discovers schemas automatically
This commit is contained in:
@@ -156,7 +156,6 @@ Dutch hospital reference architecture with 90+ application functions organized i
|
|||||||
```env
|
```env
|
||||||
# Jira Data Center
|
# Jira Data Center
|
||||||
JIRA_HOST=https://jira.zuyderland.nl
|
JIRA_HOST=https://jira.zuyderland.nl
|
||||||
JIRA_SCHEMA_ID=<schema_id>
|
|
||||||
|
|
||||||
# Jira Authentication Method: 'pat' or 'oauth'
|
# Jira Authentication Method: 'pat' or 'oauth'
|
||||||
JIRA_AUTH_METHOD=pat # Choose: 'pat' (Personal Access Token) or 'oauth' (OAuth 2.0)
|
JIRA_AUTH_METHOD=pat # Choose: 'pat' (Personal Access Token) or 'oauth' (OAuth 2.0)
|
||||||
|
|||||||
@@ -10,6 +10,11 @@
|
|||||||
* and their attributes, ensuring the data model is always in sync with the
|
* and their attributes, ensuring the data model is always in sync with the
|
||||||
* actual CMDB configuration.
|
* actual CMDB configuration.
|
||||||
*
|
*
|
||||||
|
* Schema Discovery:
|
||||||
|
* - Automatically discovers available schemas via /objectschema/list
|
||||||
|
* - Selects the schema with the most objects (or the first one if counts unavailable)
|
||||||
|
* - The runtime application also discovers schemas dynamically
|
||||||
|
*
|
||||||
* Usage: npm run generate-schema
|
* Usage: npm run generate-schema
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -38,7 +43,6 @@ for (const envPath of envPaths) {
|
|||||||
// Configuration
|
// Configuration
|
||||||
const JIRA_HOST = process.env.JIRA_HOST || '';
|
const JIRA_HOST = process.env.JIRA_HOST || '';
|
||||||
const JIRA_PAT = process.env.JIRA_PAT || '';
|
const JIRA_PAT = process.env.JIRA_PAT || '';
|
||||||
const JIRA_SCHEMA_ID = process.env.JIRA_SCHEMA_ID || '';
|
|
||||||
|
|
||||||
const OUTPUT_DIR = path.resolve(__dirname, '../src/generated');
|
const OUTPUT_DIR = path.resolve(__dirname, '../src/generated');
|
||||||
|
|
||||||
@@ -255,6 +259,36 @@ class JiraSchemaFetcher {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List all available schemas
|
||||||
|
*/
|
||||||
|
async listSchemas(): Promise<JiraObjectSchema[]> {
|
||||||
|
try {
|
||||||
|
const response = await fetch(`${this.baseUrl}/objectschema/list`, {
|
||||||
|
headers: this.headers,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
console.error(`Failed to list schemas: ${response.status} ${response.statusText}`);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = await response.json();
|
||||||
|
|
||||||
|
// Handle both array and object responses
|
||||||
|
if (Array.isArray(result)) {
|
||||||
|
return result;
|
||||||
|
} else if (result && typeof result === 'object' && 'objectschemas' in result) {
|
||||||
|
return result.objectschemas || [];
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Error listing schemas:`, error);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test the connection
|
* Test the connection
|
||||||
*/
|
*/
|
||||||
@@ -819,17 +853,10 @@ async function main() {
|
|||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!JIRA_SCHEMA_ID) {
|
|
||||||
console.error('❌ ERROR: JIRA_SCHEMA_ID environment variable is required');
|
|
||||||
console.error(' Set this in your .env file: JIRA_SCHEMA_ID=6');
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (envLoaded) {
|
if (envLoaded) {
|
||||||
console.log(`🔧 Environment: ${envLoaded}`);
|
console.log(`🔧 Environment: ${envLoaded}`);
|
||||||
}
|
}
|
||||||
console.log(`📡 Jira Host: ${JIRA_HOST}`);
|
console.log(`📡 Jira Host: ${JIRA_HOST}`);
|
||||||
console.log(`📋 Schema ID: ${JIRA_SCHEMA_ID}`);
|
|
||||||
console.log(`📁 Output Dir: ${OUTPUT_DIR}`);
|
console.log(`📁 Output Dir: ${OUTPUT_DIR}`);
|
||||||
console.log('');
|
console.log('');
|
||||||
|
|
||||||
@@ -852,20 +879,41 @@ async function main() {
|
|||||||
console.log('✅ Connection successful');
|
console.log('✅ Connection successful');
|
||||||
console.log('');
|
console.log('');
|
||||||
|
|
||||||
// Fetch schema info
|
// Discover schema automatically
|
||||||
console.log('📋 Fetching schema information...');
|
console.log('📋 Discovering available schemas...');
|
||||||
const schema = await fetcher.fetchSchema(JIRA_SCHEMA_ID);
|
const schemas = await fetcher.listSchemas();
|
||||||
if (!schema) {
|
|
||||||
console.error(`❌ Failed to fetch schema ${JIRA_SCHEMA_ID}`);
|
if (schemas.length === 0) {
|
||||||
|
console.error('❌ No schemas found');
|
||||||
|
console.error(' Please ensure Jira Assets is configured and accessible');
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Select the schema with the most objects (or the first one if counts unavailable)
|
||||||
|
const schema = schemas.reduce((prev, current) => {
|
||||||
|
const prevCount = prev.objectCount || 0;
|
||||||
|
const currentCount = current.objectCount || 0;
|
||||||
|
return currentCount > prevCount ? current : prev;
|
||||||
|
});
|
||||||
|
|
||||||
|
const selectedSchemaId = schema.id.toString();
|
||||||
|
console.log(` Found ${schemas.length} schema(s)`);
|
||||||
|
if (schemas.length > 1) {
|
||||||
|
console.log(' Available schemas:');
|
||||||
|
schemas.forEach(s => {
|
||||||
|
const marker = s.id === schema.id ? ' → ' : ' ';
|
||||||
|
console.log(`${marker}${s.id}: ${s.name} (${s.objectSchemaKey}) - ${s.objectCount || 0} objects`);
|
||||||
|
});
|
||||||
|
console.log(` Using schema: ${schema.name} (ID: ${selectedSchemaId})`);
|
||||||
|
}
|
||||||
|
|
||||||
console.log(` Schema: ${schema.name} (${schema.objectSchemaKey})`);
|
console.log(` Schema: ${schema.name} (${schema.objectSchemaKey})`);
|
||||||
console.log(` Total objects: ${schema.objectCount || 'unknown'}`);
|
console.log(` Total objects: ${schema.objectCount || 'unknown'}`);
|
||||||
console.log('');
|
console.log('');
|
||||||
|
|
||||||
// Fetch ALL object types from the schema
|
// Fetch ALL object types from the schema
|
||||||
console.log('📦 Fetching all object types from schema...');
|
console.log('📦 Fetching all object types from schema...');
|
||||||
const allObjectTypes = await fetcher.fetchAllObjectTypes(JIRA_SCHEMA_ID);
|
const allObjectTypes = await fetcher.fetchAllObjectTypes(selectedSchemaId);
|
||||||
|
|
||||||
if (allObjectTypes.length === 0) {
|
if (allObjectTypes.length === 0) {
|
||||||
console.error('❌ No object types found in schema');
|
console.error('❌ No object types found in schema');
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ services:
|
|||||||
# Optional Jira/AI variables (set in .env file or environment)
|
# Optional Jira/AI variables (set in .env file or environment)
|
||||||
- JIRA_HOST=${JIRA_HOST}
|
- JIRA_HOST=${JIRA_HOST}
|
||||||
- JIRA_PAT=${JIRA_PAT}
|
- JIRA_PAT=${JIRA_PAT}
|
||||||
- JIRA_SCHEMA_ID=${JIRA_SCHEMA_ID}
|
|
||||||
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
|
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
|
||||||
volumes:
|
volumes:
|
||||||
- ./backend/src:/app/src
|
- ./backend/src:/app/src
|
||||||
|
|||||||
@@ -134,7 +134,6 @@ The following environment variables have been **REMOVED** from the codebase and
|
|||||||
|
|
||||||
- `SESSION_SECRET`: Should be a secure random string in production (generate with `openssl rand -base64 32`)
|
- `SESSION_SECRET`: Should be a secure random string in production (generate with `openssl rand -base64 32`)
|
||||||
- `ENCRYPTION_KEY`: Must be exactly 32 bytes when base64 decoded (generate with `openssl rand -base64 32`)
|
- `ENCRYPTION_KEY`: Must be exactly 32 bytes when base64 decoded (generate with `openssl rand -base64 32`)
|
||||||
- `JIRA_SCHEMA_ID`: Required for Jira Assets integration
|
|
||||||
|
|
||||||
### Application Branding
|
### Application Branding
|
||||||
|
|
||||||
|
|||||||
@@ -78,7 +78,6 @@ These secrets should be stored in Azure Key Vault:
|
|||||||
| `SessionSecret` | Session encryption secret | `a1b2c3d4e5f6...` (32+ chars) |
|
| `SessionSecret` | Session encryption secret | `a1b2c3d4e5f6...` (32+ chars) |
|
||||||
| `JiraOAuthClientId` | Jira OAuth Client ID | `OAuthClientId123` |
|
| `JiraOAuthClientId` | Jira OAuth Client ID | `OAuthClientId123` |
|
||||||
| `JiraOAuthClientSecret` | Jira OAuth Client Secret | `OAuthSecret456` |
|
| `JiraOAuthClientSecret` | Jira OAuth Client Secret | `OAuthSecret456` |
|
||||||
| `JiraSchemaId` | Jira Assets Schema ID | `schema-123` |
|
|
||||||
| `DatabasePassword` | PostgreSQL admin password | `SecurePassword123!` |
|
| `DatabasePassword` | PostgreSQL admin password | `SecurePassword123!` |
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -171,7 +170,6 @@ az webapp log tail --name cmdb-frontend-prod --resource-group rg-cmdb-insight-pr
|
|||||||
- `JIRA_OAUTH_CLIENT_ID` (from Key Vault)
|
- `JIRA_OAUTH_CLIENT_ID` (from Key Vault)
|
||||||
- `JIRA_OAUTH_CLIENT_SECRET` (from Key Vault)
|
- `JIRA_OAUTH_CLIENT_SECRET` (from Key Vault)
|
||||||
- `JIRA_OAUTH_CALLBACK_URL`
|
- `JIRA_OAUTH_CALLBACK_URL`
|
||||||
- `JIRA_SCHEMA_ID` (from Key Vault)
|
|
||||||
- `SESSION_SECRET` (from Key Vault)
|
- `SESSION_SECRET` (from Key Vault)
|
||||||
- `FRONTEND_URL`
|
- `FRONTEND_URL`
|
||||||
- `APPINSIGHTS_INSTRUMENTATIONKEY`
|
- `APPINSIGHTS_INSTRUMENTATIONKEY`
|
||||||
|
|||||||
@@ -170,7 +170,6 @@ az webapp config appsettings set \
|
|||||||
DATABASE_PASSWORD=your-database-password \
|
DATABASE_PASSWORD=your-database-password \
|
||||||
DATABASE_SSL=true \
|
DATABASE_SSL=true \
|
||||||
JIRA_BASE_URL=https://jira.zuyderland.nl \
|
JIRA_BASE_URL=https://jira.zuyderland.nl \
|
||||||
JIRA_SCHEMA_ID=your-schema-id \
|
|
||||||
JIRA_PAT=your-pat-token \
|
JIRA_PAT=your-pat-token \
|
||||||
SESSION_SECRET=$(openssl rand -hex 32) \
|
SESSION_SECRET=$(openssl rand -hex 32) \
|
||||||
FRONTEND_URL=https://zdl-cmdb-insight-prd-frontend-webapp.azurewebsites.net
|
FRONTEND_URL=https://zdl-cmdb-insight-prd-frontend-webapp.azurewebsites.net
|
||||||
@@ -195,7 +194,6 @@ az webapp config appsettings set \
|
|||||||
PORT=3001 \
|
PORT=3001 \
|
||||||
DATABASE_TYPE=sqlite \
|
DATABASE_TYPE=sqlite \
|
||||||
JIRA_BASE_URL=https://jira.zuyderland.nl \
|
JIRA_BASE_URL=https://jira.zuyderland.nl \
|
||||||
JIRA_SCHEMA_ID=your-schema-id \
|
|
||||||
JIRA_PAT=your-pat-token \
|
JIRA_PAT=your-pat-token \
|
||||||
SESSION_SECRET=$(openssl rand -hex 32) \
|
SESSION_SECRET=$(openssl rand -hex 32) \
|
||||||
FRONTEND_URL=https://zdl-cmdb-insight-prd-frontend-webapp.azurewebsites.net
|
FRONTEND_URL=https://zdl-cmdb-insight-prd-frontend-webapp.azurewebsites.net
|
||||||
@@ -251,7 +249,6 @@ az keyvault create \
|
|||||||
```bash
|
```bash
|
||||||
az keyvault secret set --vault-name kv-cmdb-insight-prod --name JiraPat --value "your-token"
|
az keyvault secret set --vault-name kv-cmdb-insight-prod --name JiraPat --value "your-token"
|
||||||
az keyvault secret set --vault-name kv-cmdb-insight-prod --name SessionSecret --value "$(openssl rand -hex 32)"
|
az keyvault secret set --vault-name kv-cmdb-insight-prod --name SessionSecret --value "$(openssl rand -hex 32)"
|
||||||
az keyvault secret set --vault-name kv-cmdb-insight-prod --name JiraSchemaId --value "your-schema-id"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Stap 3: Grant Access
|
### Stap 3: Grant Access
|
||||||
@@ -294,8 +291,7 @@ az webapp config appsettings set \
|
|||||||
--resource-group zdl-cmdb-insight-prd-euwe-rg \
|
--resource-group zdl-cmdb-insight-prd-euwe-rg \
|
||||||
--settings \
|
--settings \
|
||||||
JIRA_PAT="@Microsoft.KeyVault(SecretUri=https://kv-cmdb-insight-prod.vault.azure.net/secrets/JiraPat/)" \
|
JIRA_PAT="@Microsoft.KeyVault(SecretUri=https://kv-cmdb-insight-prod.vault.azure.net/secrets/JiraPat/)" \
|
||||||
SESSION_SECRET="@Microsoft.KeyVault(SecretUri=https://kv-cmdb-insight-prod.vault.azure.net/secrets/SessionSecret/)" \
|
SESSION_SECRET="@Microsoft.KeyVault(SecretUri=https://kv-cmdb-insight-prod.vault.azure.net/secrets/SessionSecret/)"
|
||||||
JIRA_SCHEMA_ID="@Microsoft.KeyVault(SecretUri=https://kv-cmdb-insight-prod.vault.azure.net/secrets/JiraSchemaId/)"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -72,7 +72,6 @@ DATABASE_URL=postgresql://...
|
|||||||
|
|
||||||
# Jira Assets
|
# Jira Assets
|
||||||
JIRA_HOST=https://jira.zuyderland.nl
|
JIRA_HOST=https://jira.zuyderland.nl
|
||||||
JIRA_SCHEMA_ID=<your_schema_id>
|
|
||||||
JIRA_SERVICE_ACCOUNT_TOKEN=<service_account_token>
|
JIRA_SERVICE_ACCOUNT_TOKEN=<service_account_token>
|
||||||
|
|
||||||
# Jira Authentication Method
|
# Jira Authentication Method
|
||||||
@@ -228,7 +227,6 @@ services:
|
|||||||
- DATABASE_TYPE=postgres
|
- DATABASE_TYPE=postgres
|
||||||
- DATABASE_URL=${DATABASE_URL}
|
- DATABASE_URL=${DATABASE_URL}
|
||||||
- JIRA_HOST=${JIRA_HOST}
|
- JIRA_HOST=${JIRA_HOST}
|
||||||
- JIRA_SCHEMA_ID=${JIRA_SCHEMA_ID}
|
|
||||||
- JIRA_SERVICE_ACCOUNT_TOKEN=${JIRA_SERVICE_ACCOUNT_TOKEN}
|
- JIRA_SERVICE_ACCOUNT_TOKEN=${JIRA_SERVICE_ACCOUNT_TOKEN}
|
||||||
- SESSION_SECRET=${SESSION_SECRET}
|
- SESSION_SECRET=${SESSION_SECRET}
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ nano .env
|
|||||||
```bash
|
```bash
|
||||||
export JIRA_HOST=https://jira.zuyderland.nl
|
export JIRA_HOST=https://jira.zuyderland.nl
|
||||||
export JIRA_PAT=your_token
|
export JIRA_PAT=your_token
|
||||||
export JIRA_SCHEMA_ID=your_schema_id
|
|
||||||
export ANTHROPIC_API_KEY=your_key
|
export ANTHROPIC_API_KEY=your_key
|
||||||
|
|
||||||
docker-compose up
|
docker-compose up
|
||||||
@@ -51,7 +50,6 @@ De warnings zijn **niet kritisch**. De applicatie werkt ook zonder deze variabel
|
|||||||
# Jira Assets
|
# Jira Assets
|
||||||
JIRA_HOST=https://jira.zuyderland.nl
|
JIRA_HOST=https://jira.zuyderland.nl
|
||||||
JIRA_PAT=your_personal_access_token
|
JIRA_PAT=your_personal_access_token
|
||||||
JIRA_SCHEMA_ID=your_schema_id
|
|
||||||
|
|
||||||
# AI (optioneel)
|
# AI (optioneel)
|
||||||
ANTHROPIC_API_KEY=your_anthropic_key
|
ANTHROPIC_API_KEY=your_anthropic_key
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ Deze guide beschrijft hoe je de CMDB Insight applicatie veilig en betrouwbaar in
|
|||||||
```bash
|
```bash
|
||||||
# .env (niet committen!)
|
# .env (niet committen!)
|
||||||
JIRA_HOST=https://jira.zuyderland.nl
|
JIRA_HOST=https://jira.zuyderland.nl
|
||||||
JIRA_SCHEMA_ID=your-schema-id
|
|
||||||
JIRA_AUTH_METHOD=oauth # of 'pat'
|
JIRA_AUTH_METHOD=oauth # of 'pat'
|
||||||
JIRA_OAUTH_CLIENT_ID=your-client-id
|
JIRA_OAUTH_CLIENT_ID=your-client-id
|
||||||
JIRA_OAUTH_CLIENT_SECRET=your-client-secret
|
JIRA_OAUTH_CLIENT_SECRET=your-client-secret
|
||||||
|
|||||||
@@ -283,7 +283,6 @@ JIRA_PAT="your-jira-personal-access-token"
|
|||||||
SESSION_SECRET=$(openssl rand -hex 32)
|
SESSION_SECRET=$(openssl rand -hex 32)
|
||||||
JIRA_OAUTH_CLIENT_ID="your-oauth-client-id"
|
JIRA_OAUTH_CLIENT_ID="your-oauth-client-id"
|
||||||
JIRA_OAUTH_CLIENT_SECRET="your-oauth-client-secret"
|
JIRA_OAUTH_CLIENT_SECRET="your-oauth-client-secret"
|
||||||
JIRA_SCHEMA_ID="your-schema-id"
|
|
||||||
|
|
||||||
# Add secrets
|
# Add secrets
|
||||||
az keyvault secret set \
|
az keyvault secret set \
|
||||||
@@ -306,11 +305,6 @@ az keyvault secret set \
|
|||||||
--name "JiraOAuthClientSecret" \
|
--name "JiraOAuthClientSecret" \
|
||||||
--value "$JIRA_OAUTH_CLIENT_SECRET"
|
--value "$JIRA_OAUTH_CLIENT_SECRET"
|
||||||
|
|
||||||
az keyvault secret set \
|
|
||||||
--vault-name $KEY_VAULT_NAME \
|
|
||||||
--name "JiraSchemaId" \
|
|
||||||
--value "$JIRA_SCHEMA_ID"
|
|
||||||
|
|
||||||
# If using PostgreSQL, add database password
|
# If using PostgreSQL, add database password
|
||||||
az keyvault secret set \
|
az keyvault secret set \
|
||||||
--vault-name $KEY_VAULT_NAME \
|
--vault-name $KEY_VAULT_NAME \
|
||||||
@@ -436,7 +430,6 @@ az webapp config appsettings set \
|
|||||||
JIRA_OAUTH_CLIENT_ID="@Microsoft.KeyVault(SecretUri=https://${KEY_VAULT_NAME}.vault.azure.net/secrets/JiraOAuthClientId/)" \
|
JIRA_OAUTH_CLIENT_ID="@Microsoft.KeyVault(SecretUri=https://${KEY_VAULT_NAME}.vault.azure.net/secrets/JiraOAuthClientId/)" \
|
||||||
JIRA_OAUTH_CLIENT_SECRET="@Microsoft.KeyVault(SecretUri=https://${KEY_VAULT_NAME}.vault.azure.net/secrets/JiraOAuthClientSecret/)" \
|
JIRA_OAUTH_CLIENT_SECRET="@Microsoft.KeyVault(SecretUri=https://${KEY_VAULT_NAME}.vault.azure.net/secrets/JiraOAuthClientSecret/)" \
|
||||||
JIRA_OAUTH_CALLBACK_URL="https://${BACKEND_APP_NAME}.azurewebsites.net/api/auth/callback" \
|
JIRA_OAUTH_CALLBACK_URL="https://${BACKEND_APP_NAME}.azurewebsites.net/api/auth/callback" \
|
||||||
JIRA_SCHEMA_ID="@Microsoft.KeyVault(SecretUri=https://${KEY_VAULT_NAME}.vault.azure.net/secrets/JiraSchemaId/)" \
|
|
||||||
SESSION_SECRET="@Microsoft.KeyVault(SecretUri=https://${KEY_VAULT_NAME}.vault.azure.net/secrets/SessionSecret/)" \
|
SESSION_SECRET="@Microsoft.KeyVault(SecretUri=https://${KEY_VAULT_NAME}.vault.azure.net/secrets/SessionSecret/)" \
|
||||||
FRONTEND_URL="https://${FRONTEND_APP_NAME}.azurewebsites.net" \
|
FRONTEND_URL="https://${FRONTEND_APP_NAME}.azurewebsites.net" \
|
||||||
APPINSIGHTS_INSTRUMENTATIONKEY="${INSTRUMENTATION_KEY}"
|
APPINSIGHTS_INSTRUMENTATIONKEY="${INSTRUMENTATION_KEY}"
|
||||||
|
|||||||
@@ -132,7 +132,6 @@ DATABASE_URL=postgresql://cmdb:cmdb-dev@localhost:5432/cmdb_insight
|
|||||||
# Jira (optioneel)
|
# Jira (optioneel)
|
||||||
JIRA_HOST=https://jira.zuyderland.nl
|
JIRA_HOST=https://jira.zuyderland.nl
|
||||||
JIRA_PAT=your_token
|
JIRA_PAT=your_token
|
||||||
JIRA_SCHEMA_ID=your_schema_id
|
|
||||||
|
|
||||||
# AI (optioneel)
|
# AI (optioneel)
|
||||||
ANTHROPIC_API_KEY=your_key
|
ANTHROPIC_API_KEY=your_key
|
||||||
|
|||||||
@@ -952,7 +952,6 @@ cmdb-insight/
|
|||||||
# Jira Assets
|
# Jira Assets
|
||||||
JIRA_HOST=https://jira.zuyderland.nl
|
JIRA_HOST=https://jira.zuyderland.nl
|
||||||
JIRA_PAT=your_personal_access_token_here
|
JIRA_PAT=your_personal_access_token_here
|
||||||
JIRA_SCHEMA_ID=your_schema_id
|
|
||||||
|
|
||||||
# Object Type IDs (ophalen via API)
|
# Object Type IDs (ophalen via API)
|
||||||
JIRA_APPLICATION_COMPONENT_TYPE_ID=your_type_id
|
JIRA_APPLICATION_COMPONENT_TYPE_ID=your_type_id
|
||||||
|
|||||||
@@ -22,13 +22,11 @@ FRONTEND_URL="https://${FRONTEND_APP_NAME}.azurewebsites.net"
|
|||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "📝 Configure these values:"
|
echo "📝 Configure these values:"
|
||||||
echo " JIRA_SCHEMA_ID: (your Jira schema ID)"
|
|
||||||
echo " JIRA_PAT: (your Jira Personal Access Token)"
|
echo " JIRA_PAT: (your Jira Personal Access Token)"
|
||||||
echo " Or JIRA_OAUTH_CLIENT_ID and JIRA_OAUTH_CLIENT_SECRET"
|
echo " Or JIRA_OAUTH_CLIENT_ID and JIRA_OAUTH_CLIENT_SECRET"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Prompt for values (or set them as environment variables)
|
# Prompt for values (or set them as environment variables)
|
||||||
read -p "Enter JIRA_SCHEMA_ID (or press Enter to skip): " JIRA_SCHEMA_ID
|
|
||||||
read -p "Enter JIRA_PAT (or press Enter to skip): " JIRA_PAT
|
read -p "Enter JIRA_PAT (or press Enter to skip): " JIRA_PAT
|
||||||
read -p "Enter JIRA_OAUTH_CLIENT_ID (or press Enter to skip): " JIRA_OAUTH_CLIENT_ID
|
read -p "Enter JIRA_OAUTH_CLIENT_ID (or press Enter to skip): " JIRA_OAUTH_CLIENT_ID
|
||||||
read -p "Enter JIRA_OAUTH_CLIENT_SECRET (or press Enter to skip): " JIRA_OAUTH_CLIENT_SECRET
|
read -p "Enter JIRA_OAUTH_CLIENT_SECRET (or press Enter to skip): " JIRA_OAUTH_CLIENT_SECRET
|
||||||
@@ -39,10 +37,6 @@ echo "🔧 Configuring backend app settings..."
|
|||||||
# Build settings string
|
# Build settings string
|
||||||
SETTINGS="NODE_ENV=production PORT=3001 JIRA_BASE_URL=https://jira.zuyderland.nl SESSION_SECRET=${SESSION_SECRET} FRONTEND_URL=${FRONTEND_URL}"
|
SETTINGS="NODE_ENV=production PORT=3001 JIRA_BASE_URL=https://jira.zuyderland.nl SESSION_SECRET=${SESSION_SECRET} FRONTEND_URL=${FRONTEND_URL}"
|
||||||
|
|
||||||
if [ -n "$JIRA_SCHEMA_ID" ]; then
|
|
||||||
SETTINGS="${SETTINGS} JIRA_SCHEMA_ID=${JIRA_SCHEMA_ID}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$JIRA_PAT" ]; then
|
if [ -n "$JIRA_PAT" ]; then
|
||||||
SETTINGS="${SETTINGS} JIRA_PAT=${JIRA_PAT}"
|
SETTINGS="${SETTINGS} JIRA_PAT=${JIRA_PAT}"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -200,13 +200,11 @@ echo " - JiraPat (if using PAT authentication)"
|
|||||||
echo " - SessionSecret (generate with: openssl rand -hex 32)"
|
echo " - SessionSecret (generate with: openssl rand -hex 32)"
|
||||||
echo " - JiraOAuthClientId (if using OAuth)"
|
echo " - JiraOAuthClientId (if using OAuth)"
|
||||||
echo " - JiraOAuthClientSecret (if using OAuth)"
|
echo " - JiraOAuthClientSecret (if using OAuth)"
|
||||||
echo " - JiraSchemaId"
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Commands to add secrets:"
|
echo "Commands to add secrets:"
|
||||||
echo " az keyvault secret set --vault-name $KEY_VAULT_NAME --name SessionSecret --value \$(openssl rand -hex 32)"
|
echo " az keyvault secret set --vault-name $KEY_VAULT_NAME --name SessionSecret --value \$(openssl rand -hex 32)"
|
||||||
echo " az keyvault secret set --vault-name $KEY_VAULT_NAME --name JiraOAuthClientId --value <your-client-id>"
|
echo " az keyvault secret set --vault-name $KEY_VAULT_NAME --name JiraOAuthClientId --value <your-client-id>"
|
||||||
echo " az keyvault secret set --vault-name $KEY_VAULT_NAME --name JiraOAuthClientSecret --value <your-client-secret>"
|
echo " az keyvault secret set --vault-name $KEY_VAULT_NAME --name JiraOAuthClientSecret --value <your-client-secret>"
|
||||||
echo " az keyvault secret set --vault-name $KEY_VAULT_NAME --name JiraSchemaId --value <your-schema-id>"
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo -e "${GREEN}Step 5: Creating Application Insights...${NC}"
|
echo -e "${GREEN}Step 5: Creating Application Insights...${NC}"
|
||||||
@@ -382,7 +380,6 @@ echo "1. Add secrets to Key Vault:"
|
|||||||
echo " az keyvault secret set --vault-name $KEY_VAULT_NAME --name SessionSecret --value \$(openssl rand -hex 32)"
|
echo " az keyvault secret set --vault-name $KEY_VAULT_NAME --name SessionSecret --value \$(openssl rand -hex 32)"
|
||||||
echo " az keyvault secret set --vault-name $KEY_VAULT_NAME --name JiraOAuthClientId --value <your-client-id>"
|
echo " az keyvault secret set --vault-name $KEY_VAULT_NAME --name JiraOAuthClientId --value <your-client-id>"
|
||||||
echo " az keyvault secret set --vault-name $KEY_VAULT_NAME --name JiraOAuthClientSecret --value <your-client-secret>"
|
echo " az keyvault secret set --vault-name $KEY_VAULT_NAME --name JiraOAuthClientSecret --value <your-client-secret>"
|
||||||
echo " az keyvault secret set --vault-name $KEY_VAULT_NAME --name JiraSchemaId --value <your-schema-id>"
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "2. Update backend app settings to use Key Vault references:"
|
echo "2. Update backend app settings to use Key Vault references:"
|
||||||
echo " See AZURE-NEW-SUBSCRIPTION-SETUP.md for details"
|
echo " See AZURE-NEW-SUBSCRIPTION-SETUP.md for details"
|
||||||
|
|||||||
Reference in New Issue
Block a user