GitHub Release-Aufgabe

Azure DevOps Services

Verwenden Sie diese Aufgabe in Ihrer Pipeline, um ein GitHub Release zu erstellen, zu bearbeiten oder zu verwerfen.

Voraussetzungen

GitHub Dienstverbindung

Für diese Aufgabe ist eine GitHub-Dienstverbindung mit Schreibberechtigung für das GitHub-Repository erforderlich. Sie können eine GitHub Dienstverbindung in Ihrem Azure Pipelines-Projekt erstellen. Verwenden Sie nach der Erstellung den Namen der Dienstverbindung in den Einstellungen dieser Aufgabe.

YAML-Codeausschnitt

# GitHub Release
# Create, edit, or delete a GitHub release
- task: GitHubRelease@0
  inputs:
    gitHubConnection: 
    #repositoryName: '$(Build.Repository.Name)' 
    #action: 'create' # Options: create, edit, delete
    #target: '$(Build.SourceVersion)' # Required when action == Create || Action == Edit
    #tagSource: 'auto' # Required when action == Create# Options: auto, manual
    #tagPattern: # Optional
    #tag: # Required when action == Edit || Action == Delete || TagSource == Manual
    #title: # Optional
    #releaseNotesSource: 'file' # Optional. Options: file, inline
    #releaseNotesInline: Use this option to manually enter release notes. Use with releaseNotesSource = inline
    #releaseNotesFilePath: # Optional. Use the contents of a file as release notes. 
    #releaseNotes: # Optional
    #assets: '$(Build.ArtifactStagingDirectory)/*' # Optional
    #assetUploadMode: 'delete' # Optional. Options: delete, replace
    #isDraft: false # Optional
    #isPreRelease: false # Optional
    #addChangeLog: true # Optional
    #compareWith: 'lastFullRelease' # Required when addChangeLog == True. Options: lastFullRelease, lastRelease, lastReleaseByTag
    #releaseTag: # Required when compareWith == LastReleaseByTag

Argumente

ArgumentBeschreibung
gitHubConnection
GitHub Verbindung
(Erforderlich) Geben Sie den Dienstverbindungsnamen für Ihre GitHub Verbindung ein. Weitere Informationen zu Dienstverbindungen finden Sie hier.
repositoryName
Repository
(Erforderlich) Wählen Sie den Namen GitHub Repositorys aus, in dem GitHub Releases erstellt werden.
action
Aktion
(Erforderlich) Wählen Sie den Typ des Releasevorgangs aus, den Sie ausführen möchten. Diese Aufgabe kann ein GitHub Release erstellen, bearbeiten oder verwerfen.
target
Ziel
(Erforderlich) Dies ist der Commit-SHA, für den das GitHub Release erstellt wird. Beispiel: 48b11d8d6e92a22e3e9563a3f643699c16fd6e27. Sie können hier auch Variablen verwenden.
tagSource
Tagquelle
(Erforderlich) Konfigurieren Sie das Tag, das für die Releaseerstellung verwendet werden soll. Die Option "Git-Tag" übernimmt automatisch das Tag, das diesem Commit zugeordnet ist. Verwenden Sie die Option "Vom Benutzer angegebenes Tag", falls Sie ein Tag manuell bereitstellen möchten.
tag
Tag
(Erforderlich) Geben Sie das Tag an, für das Sie ein Release erstellen, bearbeiten oder verwerfen möchten. Sie können hier auch Variablen verwenden. Beispiel: $(tagName).
title
Releasetitel
(Optional) Geben Sie den Titel des GitHub Release an. Wenn das Tag leer gelassen wird, wird es als Releasetitel verwendet.
releaseNotesSource
Quelle der Versionshinweise
(Optional) Geben Sie die Beschreibung des GitHub Release an. Verwenden Sie die Option "Datei mit Versionshinweisen", um den Inhalt einer Datei als Versionshinweise zu verwenden. Verwenden Sie die Option "Versionshinweise inline", um die Versionshinweise manuell einzugeben.
releaseNotesFilePath
Dateipfad der Versionshinweise
(Optional) Wählen Sie die Datei aus, die die Versionshinweise enthält.
releaseNotesInline
Versionshinweise inline
(Optional) Geben Sie hier Ihre Versionshinweise ein. Markdown wird unterstützt.
assets
Objekte
(Optional) Geben Sie die Dateien an, die als Objekte für das Release hochgeladen werden sollen. Sie können Platzhalterzeichen verwenden, um einen Satz von Dateien anzugeben. Beispiel: $(Build.ArtifactStagingDirectory)/*.zip. Sie können auch mehrere Muster angeben – ein Muster pro Zeile. Standardmäßig werden alle Dateien im $(Build.ArtifactStagingDirectory) Verzeichnis hochgeladen.
assetUploadMode
Medienobjektuploadmodus
(Optional) Verwenden Sie die Option "Vorhandene Assets löschen", um zunächst alle vorhandenen Objekte in der Version zu löschen und dann alle Assets hochzuladen. Verwenden Sie die Option "Vorhandene Ressourcen ersetzen", um alle Ressourcen mit dem gleichen Namen zu ersetzen.
isDraft
Entwurfsversion
(Optional) Geben Sie an, ob das Release als Entwurf (nicht veröffentlicht) gespeichert werden soll. Gibt falsean, dass das Release veröffentlicht wird.
isPreRelease
Vorabrelease
(Optional) Geben Sie an, ob das Release als Vorabversion markiert werden soll.
addChangeLog
Hinzufügen eines Änderungsprotokolls
(Optional) Wenn diese Einstellung auf truefestgelegt ist, wird eine Liste der Änderungen (Commits und Probleme) zwischen diesem und dem letzten veröffentlichten Release generiert und an die Versionshinweise angefügt.

Beispiele

Erstellen eines GitHub Release

Die folgende YAML-Datei erstellt jedes Mal, wenn der Task ausgeführt wird, ein GitHub Release. Die Buildnummer wird als Tagversion für das Release verwendet. Alle .exe Dateien und README.txt Dateien im Ordner $(Build.ArtifactStagingDirectory) werden als Objekte hochgeladen. Standardmäßig generiert der Task auch ein Änderungsprotokoll (eine Liste von Commits und Problemen, die Teil dieses Release sind) und veröffentlicht es als Versionshinweise.

- task: GithubRelease@1 
  displayName: 'Create GitHub Release'      
  inputs:
    gitHubConnection: zenithworks
    repositoryName: zenithworks/javaAppWithMaven
    tagSource: manual
    tag: $(Build.BuildNumber)      
    assets: |
      $(Build.ArtifactStagingDirectory)/*.exe
      $(Build.ArtifactStagingDirectory)/README.txt

Sie können auch die Erstellung des Release basierend auf Repositorytags steuern. Der folgende YAML-Code erstellt nur dann ein GitHub Release, wenn dem Commit, der die Pipeline auslöst, ein Git-Tag zugeordnet ist. Das GitHub Release wird mit der gleichen Tagversion wie das zugeordnete Git-Tag erstellt.

- task: GithubRelease@1 
  displayName: 'Create GitHub Release'      
  inputs:
    gitHubConnection: zenithworks
    repositoryName: zenithworks/javaAppWithMaven           
    assets: $(Build.ArtifactStagingDirectory)/*.exe

Sie können die Aufgabe auch in Verbindung mit Aufgabenbedingungen verwenden, um eine noch feineren Kontrolle darüber zu erhalten, wann der Task ausgeführt wird, wodurch die Erstellung von Releases eingeschränkt wird. In der folgenden YAML-Datei wird der Task beispielsweise nur ausgeführt, wenn die Pipeline durch ein Git-Tag ausgelöst wird, das dem Muster "refs/tags/release-v*" entspricht.

- task: GithubRelease@1 
  displayName: 'Create GitHub Release'   
  condition: startsWith(variables['Build.SourceBranch'], 'refs/tags/release-v')   
  inputs:
    gitHubConnection: zenithworks
    repositoryName: zenithworks/javaAppWithMaven           
    assets: $(Build.ArtifactStagingDirectory)/*.exe

Bearbeiten eines GitHub Release

Mit der folgenden YAML-Datei wird der Status eines GitHub Release von "draft" in "published" aktualisiert. Das zu bearbeitende Release wird durch das angegebene Tag bestimmt.

- task: GithubRelease@1
  displayName: 'Edit GitHub Release'
  inputs:
    gitHubConnection: zenithworks
    repositoryName: zenithworks/javaAppWithMaven
    action: edit
    tag: $(myDraftReleaseVersion)
    isDraft: false

Löschen eines GitHub Release

Mit dem folgenden YAML-Befehl wird ein GitHub Release gelöscht. Das zu löschende Release wird durch das angegebene Tag bestimmt.

- task: GithubRelease@1
  displayName: 'Delete GitHub Release'
  inputs:
    gitHubConnection: zenithworks
    repositoryName: zenithworks/javaAppWithMaven
    action: delete
    tag: $(myDraftReleaseVersion)

Versionshinweise zu Inlineversionen

Mit der folgenden YAML-Datei wird ein GitHub Release erstellt und Inline-Versionshinweise hinzugefügt.

- task: GitHubRelease@1
  inputs:
    gitHubConnection: <GITHUB_SERVICE_CONNECTION>
    repositoryName: '$(Build.Repository.Name)'
    action: 'create'
    target: '$(Build.SourceVersion)'
    tagSource: 'userSpecifiedTag'
    tag: <YOUR_TAG>
    title: <YOUR_TITLE>
    releaseNotesSource: 'inline'
    releaseNotesInline: <YOUR_RELEASE_NOTES>

Open Source

Diese Aufgabe wird auf GitHub Open Source. Feedback und Beiträge sind willkommen.