{"_id":"@armyknife/backstage-gitlab-template","name":"@armyknife/backstage-gitlab-template","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@armyknife/backstage-gitlab-template","version":"0.1.0","description":"GitLab repository template creation for Backstage","main":"dist/index.js","types":"dist/index.d.ts","license":"Apache-2.0","publishConfig":{"access":"public","main":"dist/index.js","types":"dist/index.d.ts"},"backstage":{"role":"backend-plugin"},"scripts":{"build":"tsc","lint":"eslint src --ext .ts,.tsx","test":"jest","clean":"rm -rf dist","prepublishOnly":"yarn build"},"dependencies":{"@backstage/backend-common":"^0.19.0","@backstage/catalog-model":"^1.4.0","@backstage/config":"^1.0.8","@backstage/integration":"^1.7.0","@backstage/plugin-scaffolder-backend":"^1.15.0","@gitbeaker/node":"^35.8.0","cross-fetch":"^4.0.0","yaml":"^2.3.1"},"devDependencies":{"@types/jest":"^29.0.0","@types/node":"^18.17.8","eslint":"^8.0.0","jest":"^29.0.0","typescript":"~5.4.0"},"keywords":["backstage","gitlab","template","scaffolder"],"_id":"@armyknife/backstage-gitlab-template@0.1.0","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-5Uo5a2kkaXMS6hMTnGPbXKOlBfpeMSFG+fFdFL/NvKDR8WexOpKJtASSOwZ0raEKzkFHPnhJBBENczWHlgxjxQ==","shasum":"4abdcd03e4b62ca7305200f80c6e0553fdc7b05c","tarball":"https://registry.npmjs.org/@armyknife/backstage-gitlab-template/-/backstage-gitlab-template-0.1.0.tgz","fileCount":8,"unpackedSize":14680,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIB7abs5SmDrevncymQ43VMT959IMT9jyJ+/wt/CejZFUAiAT1uSJbfmJQysH4LGutd52i+Lj2Ee/aCU/6xXFxubH1g=="}]},"_npmUser":{"name":"armyknife","email":"backstage@devexparty.com"},"directories":{},"maintainers":[{"name":"armyknife","email":"backstage@devexparty.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/backstage-gitlab-template_0.1.0_1740925580718_0.1850550140724756"},"_hasShrinkwrap":false}},"time":{"created":"2025-03-02T14:26:20.582Z","0.1.0":"2025-03-02T14:26:20.941Z","modified":"2025-03-02T14:26:21.248Z"},"maintainers":[{"name":"armyknife","email":"backstage@devexparty.com"}],"description":"GitLab repository template creation for Backstage","keywords":["backstage","gitlab","template","scaffolder"],"license":"Apache-2.0","readme":"# Backstage GitLab Template\n\nThis package provides GitLab repository template creation for Backstage.\n\n## Installation\n\n```bash\n# npm\nnpm install @armyknife/backstage-gitlab-template\n\n# yarn\nyarn add @armyknife/backstage-gitlab-template\n```\n\n## Usage\n\nIn your `packages/backend/src/plugins/scaffolder.ts` file:\n\n```typescript\nimport { createRouter } from '@backstage/plugin-scaffolder-backend';\nimport { Router } from 'express';\nimport { PluginEnvironment } from '../types';\nimport { createGitLabRepoAction } from '@armyknife/backstage-gitlab-template';\n\nexport default async function createPlugin(\n  env: PluginEnvironment,\n): Promise<Router> {\n  const catalogClient = new CatalogClient({\n    discoveryApi: env.discovery,\n  });\n\n  const actions = [\n    createGitLabRepoAction({\n      integrations: ScmIntegrations.fromConfig(env.config),\n      config: env.config,\n      catalogClient,\n      reader: env.reader,\n    }),\n    // ... other actions\n  ];\n\n  return await createRouter({\n    actions,\n    logger: env.logger,\n    config: env.config,\n    database: env.database,\n    reader: env.reader,\n    catalogClient,\n    identity: env.identity,\n  });\n}\n```\n\n## Template Configuration\n\nCreate a template with GitLab repository creation:\n\n```yaml\napiVersion: scaffolder.backstage.io/v1beta3\nkind: Template\nmetadata:\n  name: gitlab-repo-template\n  title: GitLab Repository\n  description: Create a new GitLab repository\nspec:\n  owner: user:guest\n  type: service\n\n  parameters:\n    - title: Repository Information\n      required:\n        - name\n        - owner\n        - description\n      properties:\n        name:\n          title: Repository Name\n          type: string\n          description: Name of the repository\n        owner:\n          title: Repository Owner\n          type: string\n          description: Owner of the repository (group or user)\n        description:\n          title: Description\n          type: string\n          description: Description of the repository\n        visibility:\n          title: Repository Visibility\n          type: string\n          enum: ['public', 'private', 'internal']\n          default: private\n          description: Visibility of the repository\n        enableSecurityFeatures:\n          title: Enable Security Features\n          type: boolean\n          default: true\n          description: Enable security features like branch protection, CODEOWNERS, etc.\n\n  steps:\n    - id: createGitLabRepo\n      name: Create GitLab Repository\n      action: armyknife:gitlab:create-repo\n      input:\n        name: ${{ parameters.name }}\n        owner: ${{ parameters.owner }}\n        description: ${{ parameters.description }}\n        visibility: ${{ parameters.visibility }}\n        enableSecurityFeatures: ${{ parameters.enableSecurityFeatures }}\n\n    - id: registerCatalog\n      name: Register in Catalog\n      action: catalog:register\n      input:\n        repoContentsUrl: ${{ steps.createGitLabRepo.output.repoContentsUrl }}\n        catalogInfoPath: '/catalog-info.yaml'\n```\n\n## Environment Variables\n\nYou'll need to set the following environment variables:\n\n```bash\nGITLAB_TOKEN=your-gitlab-personal-access-token\n```\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}