最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Can Backstage Templates publish new files to existing repos? - Stack Overflow

programmeradmin0浏览0评论

When using Backstage, it seems all the demos on template creation are centered around the concept of creating a new Git repo from scratch.

Can a template be created that will add new content (files) to an existing repo without trying to create a new repo or branch? I would prefer to push instead of pull request, but will accept pull request if that is the only option.

Here is my template so far...

apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
  name: addfile
  title: "Generate MongoDB Cluster YAML"
  description: "Asks user for cluster details and publishes a YAML configuration file to a target GitHub repository."
spec:
  owner: [email protected]
  type: configuration
  parameters:
    - title: Cluster Configuration
      required:
        - clusterName
        - clusterSize
        - comments
      properties:
        clusterName:
          type: string
          title: Cluster Name
        clusterSize:
          type: string
          title: Cluster Size
          enum:
            - Small
            - Medium
            - Large
        comments:
          title: Request Comments
          type: string
  steps:
    - id: fetch-repo
      name: Fetch repo
      action: fetch:template
      input:
        values:
          cluster_name: ${{ parameters.clusterName }}
          provider_instance_size_name: ${{ parameters.clusterSize }}
        url: ./skeleton
        targetPath: ./new_cluster_requests/${{ parameters.clusterName }}

    - id: write-to-file
      name: Overwrite File Or Create New
      action: roadiehq:utils:fs:write
      input:
        path: ./new_cluster_requests/${{ parameters.clusterName }}.yaml
        content: |
          clusterName: ${{ parameters.clusterName }}
          clusterSize: ${{ parameters.clusterSize }}

    - id: publish-to-github
      name: Publish to GitHub
      action: github:repo:push
      input:
        repoUrl: "github?owner=bongo&repo=testrepo"
        defaultBranch: main
        sourcePath: "new_cluster_requests/"
        gitCommitMessage: ${{ parametersments }}
        force: true

I receive an error trying to publish:

Push rejected because it was not a simple fast-forward. Use "force: true" to override. {data={"reason":"not-fast-forward"}}

The github repo exists, as does the branch. I just want to add the new file. Any ideas?

When using Backstage, it seems all the demos on template creation are centered around the concept of creating a new Git repo from scratch.

Can a template be created that will add new content (files) to an existing repo without trying to create a new repo or branch? I would prefer to push instead of pull request, but will accept pull request if that is the only option.

Here is my template so far...

apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
  name: addfile
  title: "Generate MongoDB Cluster YAML"
  description: "Asks user for cluster details and publishes a YAML configuration file to a target GitHub repository."
spec:
  owner: [email protected]
  type: configuration
  parameters:
    - title: Cluster Configuration
      required:
        - clusterName
        - clusterSize
        - comments
      properties:
        clusterName:
          type: string
          title: Cluster Name
        clusterSize:
          type: string
          title: Cluster Size
          enum:
            - Small
            - Medium
            - Large
        comments:
          title: Request Comments
          type: string
  steps:
    - id: fetch-repo
      name: Fetch repo
      action: fetch:template
      input:
        values:
          cluster_name: ${{ parameters.clusterName }}
          provider_instance_size_name: ${{ parameters.clusterSize }}
        url: ./skeleton
        targetPath: ./new_cluster_requests/${{ parameters.clusterName }}

    - id: write-to-file
      name: Overwrite File Or Create New
      action: roadiehq:utils:fs:write
      input:
        path: ./new_cluster_requests/${{ parameters.clusterName }}.yaml
        content: |
          clusterName: ${{ parameters.clusterName }}
          clusterSize: ${{ parameters.clusterSize }}

    - id: publish-to-github
      name: Publish to GitHub
      action: github:repo:push
      input:
        repoUrl: "github?owner=bongo&repo=testrepo"
        defaultBranch: main
        sourcePath: "new_cluster_requests/"
        gitCommitMessage: ${{ parametersments }}
        force: true

I receive an error trying to publish:

Push rejected because it was not a simple fast-forward. Use "force: true" to override. {data={"reason":"not-fast-forward"}}

The github repo exists, as does the branch. I just want to add the new file. Any ideas?

Share Improve this question asked Jan 19 at 22:08 barrypickerbarrypicker 10.1k12 gold badges67 silver badges83 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 1

I am facing a similar problem. The issue lies where the github:repo:push action uses a helper that initializes a git repo, https://github/backstage/backstage/blob/master/plugins/scaffolder-backend-module-github/src/actions/github.ts#L275, and uses this helper function here: https://github/backstage/backstage/blob/master/plugins/scaffolder-node/src/actions/gitHelpers.ts#L49-L52 My suggestion is to follow the GitHub issue https://github/backstage/backstage/issues/28749 to allow an action like: github:branch:push.

发布评论

评论列表(0)

  1. 暂无评论