-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Preparation for deprecation of GitHub Action. (#72)
* Update readme with more info regarding the .NET tools and moving the old readme * CR remarks * Missed a line
- Loading branch information
1 parent
c69d1f5
commit 5a9d1d5
Showing
2 changed files
with
172 additions
and
120 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,138 +1,52 @@ | ||
# Skyline DataMiner Deploy Action | ||
|
||
This action builds a DataMiner Artifact from your Automation Script solution and deploys it to your cloud-connected DataMiner System. The action will wait until the deployment is finished, with a configurable timeout. At present, only DataMiner Automation Script solutions created by DIS are supported. | ||
> [!IMPORTANT] | ||
> This GitHub action has been deprecated and is replaced by .NET tools which makes it easier to create workflows/pipelines/... outside GitHub and still be able to deploy package to DataMiner. | ||
> | ||
> The old readme file can be found here: [old readme](oldReadme.md) | ||
The action consists of 2 stages: `Upload` and `Deploy`. | ||
## Transition to .NET Tools | ||
|
||
## Stages | ||
Our workflow has evolved from relying solely on GitHub actions to embracing the versatility of .NET tools. This transition offers enhanced flexibility, enabling seamless integration across various widely utilized platforms such as GitHub, GitLab, Azure DevOps, and more. | ||
|
||
### Upload | ||
Previously, the GitHub Action encompassed a bundled approach, performing three distinct tasks: | ||
|
||
This stage creates an artifact and uploads it to dedicated storage in the cloud. The output of this stage will be the ID of the artifact, which can be used in the deploy stage. | ||
1. Generating a package | ||
1. Uploading the package to the Catalog | ||
1. Deploying the package to a DataMiner | ||
|
||
### Deploy | ||
However, this bundled functionality didn't always align with the specific needs of our users. In response, we have modularized these tasks into individual .NET tools, allowing for tailored usage based on the unique requirements of each scenario. | ||
|
||
This stage deploys the artifact from the artifact storage to your cloud-connected DataMiner System. | ||
|
||
## Limitations | ||
|
||
This action currently only supports the creation of artifacts with Automation scripts. | ||
|
||
## Inputs | ||
|
||
### `api-key` | ||
|
||
**Required**. The API key generated in the [DCP Admin app](https://admin.dataminer.services) to authenticate to a certain DataMiner System. E.g. `${{ secrets.NAME_OF_YOUR_APIKEY_SECRET }}`. For more information about creating a key, refer to the [DataMiner documentation](https://docs.dataminer.services/user-guide/Cloud_Platform/CloudAdminApp/Managing_DCP_keys.html). | ||
|
||
### `solution-path` | ||
|
||
**Required**. The path to the .sln file of the solution. At present, only DataMiner Automation Script solutions are supported. E.g. `'./Example/AutomationScript.sln'`. Required for stages `'Upload'` and `'All'`. | ||
|
||
### `artifact-name` | ||
|
||
**Optional**. The chosen name for the artifact. E.g. `'MyPackageName'`. Required for stages `'Upload'` and `'All'`. | ||
|
||
### `version` | ||
|
||
**Optional**. | ||
The version number for the artifact. Only required for a release run. Format A.B.C for a stable release or A.B.C-text for a pre-release. E.g. `'1.0.1'`. Required for stages `'Upload'` and `'All'` if no build-number was provided instead. | ||
|
||
### `timeout` | ||
|
||
**Optional**. The maximum time spent waiting for the deployment to finish, in seconds. Default '900'. E.g. `'300'`. | ||
|
||
### `stage` | ||
|
||
**Optional**. The stage of the action to run. Options are: `'Upload'`, `'Deploy'` and `'All'`. Default: 'All'. | ||
|
||
### `artifact-id` | ||
|
||
**Optional**. The private artifact to deploy. This is only needed when 'stage' is `'Deploy'`. | ||
|
||
### `build-number` | ||
|
||
**Optional**. | ||
The build number of a workflow run. Only required for a development run. Required for stages `'Upload'` and `'All'` if no version was provided instead. | ||
|
||
## Outputs | ||
|
||
### `artifact-id` | ||
|
||
The ID of the private artifact that has been deployed. This is only filled in for stages `'Upload'` and `'All'`. | ||
|
||
## Example usage | ||
|
||
### All stages at once | ||
Below, we present an example detailing the migration process from the GitHub action: | ||
|
||
```yaml | ||
on: [push] | ||
- name: Install .NET Tools | ||
run: | | ||
dotnet tool install -g Skyline.DataMiner.CICD.Tools.Packager | ||
dotnet tool install -g Skyline.DataMiner.CICD.Tools.CatalogUpload | ||
dotnet tool install -g Skyline.DataMiner.CICD.Tools.DataMinerDeploy | ||
jobs: | ||
deploy_artifact_job: | ||
runs-on: ubuntu-latest | ||
name: Deploy the artifact on the DataMiner System job | ||
steps: | ||
# To use this action, the repository must be checked out | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
- name: Set up NuGet | ||
uses: nuget/setup-nuget@v1.1.1 | ||
- name: NuGet restore solution | ||
run: nuget restore "AutomationScript.sln" -OutputDirectory ${{ github.workspace }}/packages | ||
- name: Deploy the artifact on the DataMiner System step | ||
uses: SkylineCommunications/Skyline-DataMiner-Deploy-Action@v1 | ||
id: deploy_artifact_step | ||
with: | ||
api-key: ${{ secrets.NAME_OF_YOUR_APIKEY_SECRET }} | ||
solution-path: './Example/AutomationScript.sln' | ||
artifact-name: 'MyArtifactName' | ||
version: '1.0.1' | ||
timeout: '300' | ||
``` | ||
### Separate stages | ||
- name: Create package name | ||
id: packageName | ||
run: | | ||
tempName="${{ github.repository }} ${{ github.ref_name }}" | ||
echo name=${tempName//[\"\/\\<>|:*?]/_} >> $GITHUB_OUTPUT | ||
shell: bash | ||
|
||
```yaml | ||
on: [push] | ||
- name: Create dmapp package | ||
run: dataminer-package-create dmapp "${{ github.workspace }}" --type automation --version ${{ github.ref_name }} --output "${{ github.workspace }}" --name "${{ steps.packageName.outputs.name }}" | ||
|
||
- name: Upload to Catalog | ||
id: uploadToCatalog | ||
run: echo "id=$(dataminer-catalog-upload --path-to-artifact "${{ github.workspace }}/${{ steps.packageName.outputs.name }}.dmapp" --dm-catalog-token ${{ secrets.DATAMINER_DEPLOY_KEY }})" >> $GITHUB_OUTPUT | ||
|
||
jobs: | ||
build: | ||
name: build | ||
runs-on: ubuntu-latest | ||
outputs: | ||
ARTIFACT_ID: ${{ steps.Build_and_upload_artifact_step.outputs.ARTIFACT_ID }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
- name: Set up NuGet | ||
uses: nuget/setup-nuget@v1.1.1 | ||
- name: NuGet restore solution | ||
run: nuget restore "AutomationScript.sln" -OutputDirectory ${{ github.workspace }}/packages | ||
- name: Deploy the artifact on the DataMiner System step | ||
uses: SkylineCommunications/Skyline-DataMiner-Deploy-Action@v1 | ||
id: Build_and_upload_artifact_step | ||
with: | ||
api-key: ${{ secrets.NAME_OF_YOUR_APIKEY_SECRET }} | ||
solution-path: './Example/AutomationScript.sln' | ||
artifact-name: 'MyArtifactName' | ||
version: '1.0.1' | ||
stage: Upload | ||
- name: Deploy to DataMiner | ||
run: dataminer-package-deploy from-catalog --artifact-id "${{ steps.uploadToCatalog.outputs.id }}" --dm-catalog-token ${{ secrets.DATAMINER_DEPLOY_KEY }} | ||
|
||
deploy: | ||
name: deploy | ||
runs-on: ubuntu-latest | ||
needs: build | ||
steps: | ||
- name: Deploy | ||
uses: SkylineCommunications/Skyline-DataMiner-Deploy-Action@v1 | ||
with: | ||
api-key: ${{ secrets.NAME_OF_YOUR_APIKEY_SECRET }} | ||
stage: Deploy | ||
timeout: '300' | ||
artifact-id: ${{ needs.build.outputs.ARTIFACT_ID }} | ||
``` | ||
|
||
## License | ||
More information on how to use these .NET tools can be found on their respective README files: | ||
|
||
Code and documentation in this project are released under the [MIT License](https://github.com/SkylineCommunications/Skyline-DataMiner-Deploy-Action/blob/feature/preRelease/LICENSE.txt). | ||
- [Creating a package](https://github.com/SkylineCommunications/Skyline.DataMiner.CICD.Packages/blob/main/Tools.Packager/README.md) | ||
- [Uploading a package to the Catalog](https://github.com/SkylineCommunications/Skyline.DataMiner.CICD.Tools.CatalogUpload/blob/main/CICD.Tools.CatalogUpload/README.md) | ||
- [Deploying a package to a DataMiner](https://github.com/SkylineCommunications/Skyline.DataMiner.CICD.Tools.DataMinerDeploy/blob/main/CICD.Tools.DataMinerDeploy/README.md) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
# Skyline DataMiner Deploy Action | ||
|
||
This action builds a DataMiner Artifact from your Automation Script solution and deploys it to your cloud-connected DataMiner System. The action will wait until the deployment is finished, with a configurable timeout. At present, only DataMiner Automation Script solutions created by DIS are supported. | ||
|
||
The action consists of 2 stages: `Upload` and `Deploy`. | ||
|
||
## Stages | ||
|
||
### Upload | ||
|
||
This stage creates an artifact and uploads it to dedicated storage in the cloud. The output of this stage will be the ID of the artifact, which can be used in the deploy stage. | ||
|
||
### Deploy | ||
|
||
This stage deploys the artifact from the artifact storage to your cloud-connected DataMiner System. | ||
|
||
## Limitations | ||
|
||
This action currently only supports the creation of artifacts with Automation scripts. | ||
|
||
## Inputs | ||
|
||
### `api-key` | ||
|
||
**Required**. The API key generated in the [DCP Admin app](https://admin.dataminer.services) to authenticate to a certain DataMiner System. E.g. `${{ secrets.NAME_OF_YOUR_APIKEY_SECRET }}`. For more information about creating a key, refer to the [DataMiner documentation](https://docs.dataminer.services/user-guide/Cloud_Platform/CloudAdminApp/Managing_DCP_keys.html). | ||
|
||
### `solution-path` | ||
|
||
**Required**. The path to the .sln file of the solution. At present, only DataMiner Automation Script solutions are supported. E.g. `'./Example/AutomationScript.sln'`. Required for stages `'Upload'` and `'All'`. | ||
|
||
### `artifact-name` | ||
|
||
**Optional**. The chosen name for the artifact. E.g. `'MyPackageName'`. Required for stages `'Upload'` and `'All'`. | ||
|
||
### `version` | ||
|
||
**Optional**. | ||
The version number for the artifact. Only required for a release run. Format A.B.C for a stable release or A.B.C-text for a pre-release. E.g. `'1.0.1'`. Required for stages `'Upload'` and `'All'` if no build-number was provided instead. | ||
|
||
### `timeout` | ||
|
||
**Optional**. The maximum time spent waiting for the deployment to finish, in seconds. Default '900'. E.g. `'300'`. | ||
|
||
### `stage` | ||
|
||
**Optional**. The stage of the action to run. Options are: `'Upload'`, `'Deploy'` and `'All'`. Default: 'All'. | ||
|
||
### `artifact-id` | ||
|
||
**Optional**. The private artifact to deploy. This is only needed when 'stage' is `'Deploy'`. | ||
|
||
### `build-number` | ||
|
||
**Optional**. | ||
The build number of a workflow run. Only required for a development run. Required for stages `'Upload'` and `'All'` if no version was provided instead. | ||
|
||
## Outputs | ||
|
||
### `artifact-id` | ||
|
||
The ID of the private artifact that has been deployed. This is only filled in for stages `'Upload'` and `'All'`. | ||
|
||
## Example usage | ||
|
||
### All stages at once | ||
|
||
```yaml | ||
on: [push] | ||
|
||
jobs: | ||
deploy_artifact_job: | ||
runs-on: ubuntu-latest | ||
name: Deploy the artifact on the DataMiner System job | ||
steps: | ||
# To use this action, the repository must be checked out | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
- name: Set up NuGet | ||
uses: nuget/setup-nuget@v1.1.1 | ||
- name: NuGet restore solution | ||
run: nuget restore "AutomationScript.sln" -OutputDirectory ${{ github.workspace }}/packages | ||
- name: Deploy the artifact on the DataMiner System step | ||
uses: SkylineCommunications/Skyline-DataMiner-Deploy-Action@v1 | ||
id: deploy_artifact_step | ||
with: | ||
api-key: ${{ secrets.NAME_OF_YOUR_APIKEY_SECRET }} | ||
solution-path: './Example/AutomationScript.sln' | ||
artifact-name: 'MyArtifactName' | ||
version: '1.0.1' | ||
timeout: '300' | ||
``` | ||
### Separate stages | ||
```yaml | ||
on: [push] | ||
|
||
|
||
jobs: | ||
build: | ||
name: build | ||
runs-on: ubuntu-latest | ||
outputs: | ||
ARTIFACT_ID: ${{ steps.Build_and_upload_artifact_step.outputs.ARTIFACT_ID }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
- name: Set up NuGet | ||
uses: nuget/setup-nuget@v1.1.1 | ||
- name: NuGet restore solution | ||
run: nuget restore "AutomationScript.sln" -OutputDirectory ${{ github.workspace }}/packages | ||
- name: Deploy the artifact on the DataMiner System step | ||
uses: SkylineCommunications/Skyline-DataMiner-Deploy-Action@v1 | ||
id: Build_and_upload_artifact_step | ||
with: | ||
api-key: ${{ secrets.NAME_OF_YOUR_APIKEY_SECRET }} | ||
solution-path: './Example/AutomationScript.sln' | ||
artifact-name: 'MyArtifactName' | ||
version: '1.0.1' | ||
stage: Upload | ||
|
||
deploy: | ||
name: deploy | ||
runs-on: ubuntu-latest | ||
needs: build | ||
steps: | ||
- name: Deploy | ||
uses: SkylineCommunications/Skyline-DataMiner-Deploy-Action@v1 | ||
with: | ||
api-key: ${{ secrets.NAME_OF_YOUR_APIKEY_SECRET }} | ||
stage: Deploy | ||
timeout: '300' | ||
artifact-id: ${{ needs.build.outputs.ARTIFACT_ID }} | ||
``` | ||
## License | ||
Code and documentation in this project are released under the [MIT License](https://github.com/SkylineCommunications/Skyline-DataMiner-Deploy-Action/blob/feature/preRelease/LICENSE.txt). |