Skip to content

Commit

Permalink
GitHubReleaseTaskV1 (#11134)
Browse files Browse the repository at this point in the history
* bumping up task version. removing preview

* minor

* minor fix
  • Loading branch information
TheLayman committed Aug 16, 2019
1 parent 2f65e27 commit fc1e44a
Show file tree
Hide file tree
Showing 47 changed files with 6,104 additions and 0 deletions.
63 changes: 63 additions & 0 deletions Tasks/GitHubReleaseV1/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# GitHub Release

## Overview

The [GitHub Release task](https://aka.ms/AA3m1bq) can be used to create/edit/delete a GitHub release directly from your CI/CD pipeline. This task works on cross platform Azure Pipeline agents running Windows, Linux or Mac and uses GitHub APIs to manage GitHub releases.

## Contact Information

Please report a problem at [Developer Community Forum](https://developercommunity.visualstudio.com/spaces/21/index.html) if you are facing problems in making this task work. You can also share feedback about the task, like, what more functionality should be added to the task, what other tasks you would like to have, at the same place.

## Pre-requisites for the task

The following pre-requisites are required for the task to work properly:

#### GitHub Service Connection

In order to perform operations on the GitHub repository, the task needs a GitHub service connection with adequate permission. If it does not exist already, you can [create a GitHub service connection](https://aka.ms/AA3am5s) in your azure pipelines project. Once the service connection is created, all you need is the name of the service connection in this task.

## Parameters of the task

The GitHub Release task can run in 3 action types, viz. create, edit or delete. Based on the action chosen by the user certain parameters will be ignored. The following is the list of parameters required for this task.

* **Service Connection:** This is the name of GitHub service connection which will be used to connect to target GitHub account. You can use an existing GitHub service connection or create a new one. Note that the service connection should use OAuth or PAT for authentication.

* **GitHub Repository:** This is the name of the GitHub repository where GitHub releases will be managed. E.g. `microsoft/vscode`.

* **Action:** Action is the type of release operation you want perform using this task. This task can perform 3 different actions - create, edit or delete.

* Create: This action creates a GitHub release. Throws error if a published release already exists with the given tag.

* Edit: This action modifies a existing GitHub release. Tag is used to identify the release to be edited. Throws error if more than 1 release(draft or published) is found with the given tag.

* Delete: This action deletes a GitHub release. Tag is used to identify the release to be deleted. Throws error if more than 1 release(draft or published) is found with the given tag.

* **Target:** This is the commit SHA for which the GitHub release will be created. By default, the value is $(Build.SourceVersion) which corresponds to the commit for which the build was run. If you specify a branch name here(E.g. *master* ), the latest commit from this branch will be used as target. This field is ignored when using edit and delete actions.

* **Tag Source:** This parameter allows you to choose the source of tag to be used for a release action. This is available only for *create* action. It can be done in 2 ways:

* Git tag: Choose this option if the tag to be used in release creation has been pushed to the repository. The release will be created using the git tag that is associated with this commit. If no tag is found for the given commit, the release will not be created. If multiple tags are found, the task will throw an error.

* User specified tag: Choose this option if you want the task to create a new tag. The release will subsequently be created using the new tag provided in the 'tag' parameter. If the tag already exists in the repository, then the release will be created for the existing tag.

* **Tag:** This is the tag to be used for the chosen release action. You can specify the tag directly or by using variables, Eg. v\$(MajorVersion).\$(MinorVersion).\$(PatchVersion). For *edit*, *delete* actions, the release having this tag will be acted upon. For *create* action, a new release will be created with this tag. Note that this is a mandatory field for *edit* and *delete* actions.

* **Release Title:** This is the title that will be used for release creation. If left empty, the tag name will be used as the release title.

* **Release Notes Source:** This field lets you specify the source for the description of your GitHub release. There are 2 ways for doing this:
* Release notes file: On selecting this, you will have to specify the path to the file. The contents of this file will be copied as release notes at the time of release creation.
* Inline release notes: On selecting this, you can manually type your release notes into a text area. The contents of this text area will be copied as release notes at the time of release creation.

* **Assets** These are the files that will be uploaded as assets for the release. You can use wild card characters to specify a set of files. All the matching files shall be uploaded. You can also specify multiple patterns - one path per line. By default, it uploads the contents of $(Build.ArtifactStagingDirectory). If the specified folder is missing, it throws a warning.

* **Asset Upload Mode** This option is used in case of editing a release. There are 2 ways in which assets can be uploaded.

* Delete existing assets: When using this option, the task will first delete any existing assets in the release and upload all the assets once again.

* Replace existing assets: When using this option, the task will replace any assets that have the same name*

* **Draft Release** Check this option if the release has to be saved as a draft release. If kept unchecked, the created release will be published. This option is ignored in case of *delete* action.

* **Pre Release** Check this option if the release has to be marked as a pre-release. This option is ignored in case of *delete* action.

* **Add Changelog:** Using this option you can generate and append list of changes to release notes. The list of changes(commits and issues) between this and last published release will be generated and appended to release notes. Maximum number of changes shown is 250.
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
{
"loc.friendlyName": "GitHub-Release",
"loc.helpMarkDown": "[Weitere Informationen](https://aka.ms/AA3aeiw)",
"loc.description": "Hiermit wird ein GitHub-Release erstellt, bearbeitet oder gelöscht.",
"loc.instanceNameFormat": "GitHub-Release ($(action))",
"loc.input.label.gitHubConnection": "GitHub-Verbindung (OAuth oder PAT)",
"loc.input.help.gitHubConnection": "Geben Sie den Namen der GitHub-Dienstverbindung an, die zum Herstellen einer Verbindung mit dem GitHub-Repository verwendet werden soll. Die Verbindung muss auf einem OAuth-Token eines GitHub-Benutzers oder einem persönlichen GitHub-Zugriffstoken basieren. Weitere Informationen zu Dienstverbindungen finden Sie [hier](https://aka.ms/AA3am5s).",
"loc.input.label.repositoryName": "Repository",
"loc.input.help.repositoryName": "Geben Sie den Namen des GitHub-Repositorys an, in dem das GitHub-Release erstellt, bearbeitet oder gelöscht wird.",
"loc.input.label.action": "Aktion",
"loc.input.help.action": "Geben Sie den Typ des auszuführenden Releasevorgangs an. Mit dieser Aufgabe kann ein GitHub-Release erstellt, bearbeitet oder gelöscht werden.",
"loc.input.label.target": "Ziel",
"loc.input.help.target": "Geben Sie den Commit-SHA an, für den das GitHub-Release erstellt wird, z. B. \"48b11d8d6e92a22e3e9563a3f643699c16fd6e27\". Sie können hier auch eine Variable verwenden, beispielsweise \"$(myCommitSHA)\".",
"loc.input.label.tagSource": "Tagquelle",
"loc.input.help.tagSource": "Geben Sie das Tag an, das für die Releaseerstellung verwendet werden soll. Die Option \"Git-Tag\" verwendet automatisch das Tag, das dem Git-Commit zugeordnet ist. Verwenden Sie die Option \"Benutzerdefiniertes Tag\", um manuell ein Tag anzugeben.",
"loc.input.label.tag": "Tag",
"loc.input.help.tag": "Geben Sie das Tag an, für das ein Release erstellt, bearbeitet oder gelöscht werden soll. Sie können hier auch eine Variable verwenden, z. B. \"$(myTagName)\".",
"loc.input.label.title": "Releasetitel",
"loc.input.help.title": "Geben Sie den Titel für das GitHub-Release an. Wenn Sie keinen Titel angeben, wird das Tag als Releasetitel verwendet.",
"loc.input.label.releaseNotesSource": "Quelle für Versionshinweise",
"loc.input.help.releaseNotesSource": "Geben Sie die Beschreibung für das GitHub-Release an. Verwenden Sie die Option \"Datei mit Anmerkungen zu dieser Version\", um den Inhalt einer Datei als Versionshinweise zu verwenden. Verwenden Sie die Option \"Inline-Versionshinweise\", um Anmerkungen zu dieser Version manuell einzugeben.",
"loc.input.label.releaseNotesFile": "Dateipfad zu Versionsanmerkungen",
"loc.input.help.releaseNotesFile": "Wählen Sie die Datei aus, die die Versionshinweise enthält.",
"loc.input.label.releaseNotes": "Anmerkungen zu dieser Version",
"loc.input.help.releaseNotes": "Geben Sie hier die Versionshinweise ein. Markdown wird unterstützt.",
"loc.input.label.assets": "Objekte",
"loc.input.help.assets": "Geben Sie die Dateien an, die als Ressourcen für das Release hochgeladen werden sollen. Sie können Platzhalterzeichen verwenden, um mehrere Dateien anzugeben. Beispielsweise können Sie für Buildpipelines \"$(Build.ArtifactStagingDirectory)/*.zip\" oder für Releasepipelines \"$(System.DefaultWorkingDirectory)/*.zip\" verwenden. Es ist auch möglich, mehrere Muster anzugeben – ein Muster pro Zeile. Standardmäßig werden alle Dateien im Verzeichnis \"$(Build.ArtifactStagingDirectory)\" hochgeladen. Weitere Informationen zur Liste der verfügbaren vordefinierten Variablen finden Sie unter [Buildvariablen](https://aka.ms/AA4449z) und [Releasevariablen](https://aka.ms/AA43wws).",
"loc.input.label.assetUploadMode": "Uploadmodus für Ressourcen",
"loc.input.help.assetUploadMode": "Verwenden Sie die Option \"Vorhandene Ressourcen löschen\", um zunächst alle vorhandenen Ressourcen im Release zu löschen und dann alle Ressourcen hochzuladen. Verwenden Sie die Option \"Vorhandene Ressourcen ersetzen\", um alle Ressourcen mit übereinstimmenden Namen zu ersetzen.",
"loc.input.label.isDraft": "Entwurfsrelease",
"loc.input.help.isDraft": "Geben Sie an, ob das Release als (nicht veröffentlichter) Entwurf gespeichert werden soll. Bei Festlegung auf FALSE wird das Release veröffentlicht.",
"loc.input.label.isPreRelease": "Vorabversion",
"loc.input.help.isPreRelease": "Geben Sie an, ob das Release als Vorabversion gekennzeichnet werden soll.",
"loc.input.label.addChangeLog": "Änderungsprotokoll hinzufügen",
"loc.input.help.addChangeLog": "Bei Festlegung auf TRUE wird eine Liste der Änderungen (Commits und Issues) zwischen dieser und dem zuletzt veröffentlichten Release generiert und an die Versionshinweise angefügt.",
"loc.messages.GithubApiFailError": "Ein unerwarteter Fehler ist aufgetreten.",
"loc.messages.GetTagsError": "Unerwarteter Fehler beim Abrufen von Tags.",
"loc.messages.GetReleasesError": "Unerwarteter Fehler beim Abrufen von Releases.",
"loc.messages.CreateReleaseError": "Unerwarteter Fehler beim Erstellen der Release.",
"loc.messages.EditReleaseError": "Unerwarteter Fehler beim Bearbeiten des Release.",
"loc.messages.DeleteReleaseError": "Unerwarteter Fehler beim Löschen des Release.",
"loc.messages.CreatingRelease": "Release für Tag wird erstellt: %s",
"loc.messages.CreateReleaseSuccess": "Das Release wurde erfolgreich in \"%s\" erstellt.",
"loc.messages.ReleaseAlreadyExists": "Fehler beim Erstellen des Release. Für das folgende Tag ist bereits ein Release vorhanden: %s",
"loc.messages.EditingRelease": "Das Release mit folgendem Tag wird bearbeitet: %s",
"loc.messages.EditReleaseSuccess": "Release erfolgreich bearbeitet",
"loc.messages.NoReleaseFoundToEditCreateRelease": "Es wurde kein vorhandenes Release zum Bearbeiten gefunden. Es wird ein Release mit dem folgenden Tag erstellt: %s",
"loc.messages.DeletingRelease": "Das Release für folgendes Tag wird gelöscht: %s",
"loc.messages.DeleteReleaseSuccess": "Die Release wurde erfolgreich gelöscht.",
"loc.messages.NoReleaseFoundToDelete": "Für das Tag \"%s\" wurde kein Release gefunden. Fehler beim Löschen des Release.",
"loc.messages.FetchReleaseForTag": "Das Release für das folgende Tag wird abgerufen: %s",
"loc.messages.FetchReleaseForTagSuccess": "Für folgendes Tag wurde ein Release gefunden: %s",
"loc.messages.FetchTagForTarget": "Es wird nach Tags gesucht, die dem Zielcommit zugeordnet sind: %s",
"loc.messages.FetchTagForTargetSuccess": "Für folgenden Zielcommit wurde ein Tag gefunden: %s",
"loc.messages.MissingAssetError": "Datei nicht gefunden: %s",
"loc.messages.MultipleReleasesFoundError": "Es wurde nur 1 Release erwartet, aber für das Tag \"%s\" wurde mehr als 1 Release gefunden. Die Aktion kann nicht ausgeführt werden.",
"loc.messages.MultipleTagFound": "Es wurde nur 1 Tag erwartet, aber für den angegebenen Commit \"%s\" wurde mehr als 1 Tag gefunden. Die Aktion kann nicht ausgeführt werden.",
"loc.messages.NoTagFound": "Das Release wird nicht erstellt, weil für den Zielcommit keine Tags gefunden wurden. Weitere Informationen finden Sie im Abschnitt zur Tagquelle in der Dokumentation: https://aka.ms/AA4f03a.",
"loc.messages.DeleteAllExistingAssets": "Alle vorhandenen Ressourcen werden gelöscht...",
"loc.messages.DuplicateAssetFound": "Doppelte Ressource gefunden: %s",
"loc.messages.AssetsDeletedSuccessfully": "Die Ressourcen wurden erfolgreich gelöscht.",
"loc.messages.DeletingDuplicateAsset": "Doppelte Ressource wird gelöscht: %s",
"loc.messages.SkipDuplicateAssetFound": "Doppelte Ressource gefunden: %s. Wird übersprungen...",
"loc.messages.AssetDeletedSuccessfully": "Die Ressource \"%s\" wurde erfolgreich gelöscht.",
"loc.messages.AllAssetsUploadedSuccessfully": "Alle Ressourcen wurden erfolgreich hochgeladen.",
"loc.messages.ErrorDeletingDuplicateAsset": "Unerwarteter Fehler beim Löschen der doppelten Ressource: %s",
"loc.messages.ErrorDeletingAsset": "Unerwarteter Fehler beim Löschen der Ressource: %s",
"loc.messages.DeletingAsset": "Ressource wird gelöscht: %s",
"loc.messages.NoAssetFoundToDelete": "Es wurden keine Ressourcen zum Löschen gefunden.",
"loc.messages.UploadingAssets": "Ressourcen werden hochgeladen...",
"loc.messages.UploadingAsset": "Datei wird hochgeladen: \"%s\"",
"loc.messages.UploadAssetError": "Unerwarteter Fehler beim Hochladen der Datei: %s",
"loc.messages.UploadAssetSuccess": "Datei erfolgreich hochgeladen: \"%s\"",
"loc.messages.NoAssetFoundToUpload": "Es wurden keine Ressourcen zum Hochladen gefunden.",
"loc.messages.ReleaseNotesFileIsDirectoryError": "Die Datei mit Versionshinweisen \"%s\" ist ein Verzeichnis und keine Datei.",
"loc.messages.AssetIsDirectoryError": "Die Ressource ist ein Verzeichnis und keine Datei. Der Upload des Verzeichnisses wird übersprungen: %s",
"loc.messages.ComputingChangeLog": "In diesem Release vorgenommene Änderungen werden berechnet...",
"loc.messages.ComputingChangeLogSuccess": "Die Änderungen wurden erfolgreich berechnet.",
"loc.messages.CommitDiffBehind": "Die Änderungen können nicht berechnet werden, weil der angegebene Zielcommit älter ist als der Commit für das neueste veröffentlichte Release.",
"loc.messages.CommitDiffEqual": "Es wurden keine Änderungen gefunden. Der angegebene Zielcommit ist mit dem Commit für das neueste veröffentlichte Release identisch.",
"loc.messages.FetchLatestPublishRelease": "Das neueste veröffentlichte Release wird abgerufen...",
"loc.messages.FetchLatestPublishReleaseSuccess": "Das neueste veröffentlichte Release wurde gefunden: %s",
"loc.messages.GetLatestReleaseError": "Unerwarteter Fehler beim Abrufen des neuesten veröffentlichten Release.",
"loc.messages.NoLatestPublishRelease": "Im Repository wurden noch keine Releases veröffentlicht.",
"loc.messages.FetchCommitDiff": "Die Liste der Commits seit dem zuletzt veröffentlichten Release wird abgerufen...",
"loc.messages.FetchCommitDiffSuccess": "Die Liste der Änderungen wurde gefunden.",
"loc.messages.FetchCommitDiffError": "Unerwarteter Fehler beim Abrufen der Liste mit Änderungen.",
"loc.messages.FetchInitialCommit": "Der erste Commit wird abgerufen...",
"loc.messages.FetchInitialCommitSuccess": "Der erste Commit wurde gefunden: %s",
"loc.messages.InvalidGitHubEndpoint": "Ungültiger GitHub-Dienstendpunkt: %s.",
"loc.messages.InvalidEndpointAuthScheme": "Ungültiges GitHub-Dienstverbindungsschema: %s. Es sind nur GitHub-Verbindungen zulässig, die auf einem OAuth-Token oder einem persönlichen Zugriffstoken basieren.",
"loc.messages.FetchInitialCommitError": "Unerwarteter Fehler beim Abrufen des ersten Commits.",
"loc.messages.InvalidActionSet": "Ungültige Aktion: %s. Es sind nur die Aktionen \"create\", \"edit\" oder \"delete\" zulässig. Informationen zur YAML-Syntax finden Sie hier: https://aka.ms/AA3m1bq",
"loc.messages.InvalidTagSource": "Ungültige Tagquelle: %s. Es sind nur die Optionen \"auto\" oder \"manual\" zulässig. Informationen zur YAML-Syntax finden Sie hier: https://aka.ms/AA3m1bq",
"loc.messages.InvalidReleaseNotesSource": "Ungültige Quelle für Versionshinweise: %s. Es sind nur die Optionen \"file\" oder \"input\" zulässig. Informationen zur YAML-Syntax finden Sie hier: https://aka.ms/AA3m1bq",
"loc.messages.InvalidAssetUploadMode": "Ungültiger Modus für Ressourcenupload: %s. Es sind nur die Aktionen \"delete\" oder \"replace\" zulässig. Informationen zur YAML-Syntax finden Sie hier: https://aka.ms/AA3m1bq",
"loc.messages.TagRequiredEditDeleteAction": "Für die Aktion \"%s\" ist ein Tag erforderlich. Geben Sie im Schritt ein Tag an. Informationen zur YAML-Syntax finden Sie hier: https://aka.ms/AA3m1bq",
"loc.messages.TagRequiredCreateAction": "Die Tagquelle ist auf \"manual\" festgelegt. Geben Sie ein Tag für die Aktion zum Erstellen an. Informationen zur YAML-Syntax finden Sie hier: https://aka.ms/AA3m1bq",
"loc.messages.NoFileFoundMatchingPattern": "Es wurden keine Dateien gefunden, die mit \"%s\" übereinstimmen. Keine Elemente zum Upload vorhanden.",
"loc.messages.PatternIsADirectory": "\"%s\" kann nicht hochgeladen werden, weil es sich um ein Verzeichnis handelt. Geben Sie eine Datei an.",
"loc.messages.SearchingFileMatchingPattern": "Es wird nach Dateien gesucht, die mit \"%s\" übereinstimmen."
}
Loading

0 comments on commit fc1e44a

Please sign in to comment.