New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SCM extension point #818

Closed
srinivasupadhya opened this Issue Dec 30, 2014 · 0 comments

Comments

Projects
None yet
2 participants
@srinivasupadhya
Copy link
Contributor

srinivasupadhya commented Dec 30, 2014

Go currently supports Git, Mercurial, SVN, TFS & Perforce. There is scope wider coverage. This end-point provides ability to write SCM integrations to Go.


References:


Implementation:

This will be on the same lines as Package Repository extension point. Differences between Package Repository & SCM extension points:

  1. there is only one entity (scm) as opposed to 2 (repository & package) in case of Package Repository
  2. support for destination folder & filters (as in case of regular SCMs)
  3. the lastModificationSince will return multiple revisions
  4. each revision can return modified files
  5. there will ability agent side checkout
  6. the view will be defined by plugin (not generated)

To Do:

  • XML CRUD
  • end-point (get config, get view, validate config, check connection, latest revision, latest revisions since, checkout)
  • DB CRUD
  • poller & agent fetch
  • read view (materials UI read, build cause pop-up [pipeline dashboard, pipeline history, VSM], compare pipeline, trigger with options pop-up, stage - overview & materials, job - materials, environment dashboard, APIs)
  • materials UI - SCM pop-up (add, edit, dis-associate)
  • use-existing SCM
  • new pipeline wizard (add)
  • SCM listing - delete

Sample Config XML:

<scms>
    <scm id="3bfc282e-43a6-4795-ba9c-6c50665220dd" name="test">
      <pluginConfiguration id="git" version="0.1" />
      <configuration>
        <property>
          <key>url</key>
          <value>/tmp/git-repo-1</value>
        </property>
      </configuration>
    </scm>
  </scms>
  <pipelines group="first">
    <pipeline name="pipeline">
      <materials>
        <scm ref="3bfc282e-43a6-4795-ba9c-6c50665220dd" dest="dest_dir">
          <filter>
            <ignore pattern="*.log" />
          </filter>
        </scm>
      </materials>
      <stage name="stage">
        <jobs>
          <job name="job">
            <tasks>
              <exec command="ls" />
            </tasks>
          </job>
        </jobs>
      </stage>
    </pipeline>
  </pipelines>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment