{"id":20431558,"url":"https://github.com/skylinecommunications/skyline-dataminer-deploy-action","last_synced_at":"2026-03-06T18:07:49.280Z","repository":{"id":37802378,"uuid":"494472474","full_name":"SkylineCommunications/Skyline-DataMiner-Deploy-Action","owner":"SkylineCommunications","description":"An action to build a DataMiner Application Package (.dmapp) from your solution and deploy it to your cloud connected DataMiner System. ","archived":false,"fork":false,"pushed_at":"2024-11-15T12:43:43.000Z","size":7020,"stargazers_count":10,"open_issues_count":0,"forks_count":10,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-17T07:36:26.446Z","etag":null,"topics":["continuous-delivery","dataminer","deployment","skyline-communications"],"latest_commit_sha":null,"homepage":"https://skyline.be/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SkylineCommunications.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-20T13:21:43.000Z","updated_at":"2024-11-15T12:40:30.000Z","dependencies_parsed_at":"2024-05-10T07:32:15.575Z","dependency_job_id":"9166203c-7779-4796-9326-462d44cae418","html_url":"https://github.com/SkylineCommunications/Skyline-DataMiner-Deploy-Action","commit_stats":{"total_commits":68,"total_committers":10,"mean_commits":6.8,"dds":0.6764705882352942,"last_synced_commit":"9d9e8d534334b02d2e4a20a4deb0534e9456fae3"},"previous_names":[],"tags_count":74,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkylineCommunications%2FSkyline-DataMiner-Deploy-Action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkylineCommunications%2FSkyline-DataMiner-Deploy-Action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkylineCommunications%2FSkyline-DataMiner-Deploy-Action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkylineCommunications%2FSkyline-DataMiner-Deploy-Action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SkylineCommunications","download_url":"https://codeload.github.com/SkylineCommunications/Skyline-DataMiner-Deploy-Action/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241975136,"owners_count":20051428,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["continuous-delivery","dataminer","deployment","skyline-communications"],"created_at":"2024-11-15T08:12:12.580Z","updated_at":"2026-03-06T18:07:49.264Z","avatar_url":"https://github.com/SkylineCommunications.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Skyline DataMiner Deploy Action\n\n\u003e [!IMPORTANT]\n\u003e This GitHub action no longer runs under its own docker image. The docker image 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 packages to DataMiner.\n\u003e You can still use this GitHub action in GitHub workflows. It will perform the dotnet tool calls on the current runner.\n\n## **Important Changes Effective from May 1, 2025**\n\n- artifact-id is deprecated and will be removed.\n\n- Deployments now require specifying the catalog-guid within a catalog.yml file, as explained [here](#important-changes-since-version-200).\n\n- The api-key must now exclusively contain an Organization Key.\n\n- A new mandatory input, agent-destination-id, specifying the target DataMiner Agent is required. To obtain this ID for an existing DataMiner System, navigate to its details page in the admin.dataminer.services. The ID is the last GUID of the URL.\n\nThese changes improve security, enhance flexibility, and ensure compatibility with newer workflows and tooling.\n\n\u003e [!IMPORTANT]\n\u003e Only Legacy Automation Script solutions are supported. Automation Scripts build upon the Skyline.DataMiner.Sdk are not supported by this Action. Please use the .NET Tools and built-in SDK actions (build and publish).\n\n## **Important Changes Since Version 2.0.0**\n\n- The **catalog identifier** (GUID identifying the catalog item on [catalog.dataminer.services](https://catalog.dataminer.services/)) is now required. It must be specified in a `catalog.yml` file as described [here](https://docs.dataminer.services/user-guide/Cloud_Platform/Catalog/Register_Catalog_Item.html#manifest-file).\n  \n- If a `README.md` file or an `Images` folder exists in the same directory (or a parent directory) as the `.dmapp` file, they will be automatically registered alongside the package.\n\n- Either the repository’s name or a GitHub topic must be used to infer the catalog item type.\n\n### **Inferring Catalog Item Type:**\n\nThe GitHub action can automatically determine the artifact type in two ways:\n\n1. **Repository Naming Convention:**\n   - If the repository follows the naming conventions outlined in the [GitHub Repository Naming Convention](https://docs.dataminer.services/develop/CICD/Skyline%20Communications/Github/Use_Github_Guidelines.html#repository-naming-convention), the tool can infer the type from the repository name itself without needing a GitHub topic.\n\n2. **GitHub Topic:**\n   - If the repository does not follow the naming convention, the tool relies on the presence of a GitHub topic that matches one of the [Artifact Types](#artifact-types) to determine the type.\n\nIf neither the repository name follows the convention nor the appropriate GitHub topic is present, the tool will fail to detect the type and return an error.\n\n### Artifact Types\n\n- **AS**: automationscript\n- **C**: connector\n- **CF**: companionfile\n- **CHATOPS**: chatopsextension\n- **D**: dashboard\n- **DISMACRO**: dismacro\n- **DOC**: documentation\n- **F**: functiondefinition\n- **GQIDS**: gqidatasource\n- **GQIO**: gqioperator\n- **LSO**: lifecycleserviceorchestration\n- **PA**: processautomation\n- **PLS**: profileloadscript\n- **S**: solution\n- **SC**: scriptedconnector\n- **T**: testingsolution\n- **UDAPI**: userdefinedapi\n- **V**: visio\n\n\u003e [!IMPORTANT]\n\u003e The valid types for this GitHub Action are limited to 'automationscript', 'gqidatasource', 'gqioperator', 'lifecycleserviceorchestration', 'profileloadscript' and 'userdefinedapi'\n\n## Transition to .NET Tools\n\nOur 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.\n\nThe GitHub Action encompassed a bundled approach, performing three distinct tasks within a single docker image in the background:\n\n1. Generating a package\n1. Uploading the package to the Catalog\n1. Deploying the package to a DataMiner\n\nHowever, 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.\n\nBelow, we present an example detailing the migration process from the GitHub action:\n\n```yaml\n       - name: Install .NET Tools\n         run: |\n           dotnet tool install -g Skyline.DataMiner.CICD.Tools.Packager\n           dotnet tool install -g Skyline.DataMiner.CICD.Tools.CatalogUpload\n           dotnet tool install -g Skyline.DataMiner.CICD.Tools.DataMinerDeploy\n\n       - name: Create package name\n         id: packageName\n         run: |\n          tempName=\"${{ github.repository }} ${{ github.ref_name }}\"\n          echo name=${tempName//[\\\"\\/\\\\\u003c\u003e|:*?]/_} \u003e\u003e $GITHUB_OUTPUT\n         shell: bash\n\n       - name: Create dmapp package\n         run: dataminer-package-create dmapp \"${{ github.workspace }}\" --type automation --version ${{ github.ref_name }} --output \"${{ github.workspace }}\" --name \"${{ steps.packageName.outputs.name }}\"\n\n       - name: Upload to Catalog\n         id: uploadToCatalog\n         run: dataminer-catalog-upload with-registration --path-to-artifact \"${{ github.workspace }}/${{ steps.packageName.outputs.name }}.dmapp\" --dm-catalog-token ${{ secrets.api-key }} --artifact-version ${{ github.ref_name }}\n \n       - name: Deploy to DataMiner\n         run: dataminer-package-deploy from-catalog --catalog-id TODO:FillInCatalogGuidHere --catalog-version ${{ github.ref_name }} --agent-destination-id TODO:FillInAgentDestinationGuidHere --dm-catalog-token ${{ secrets.api-key }}\n\n```\n\nMore information on how to use these .NET tools can be found on their respective README files:\n\n- [Creating a package](https://github.com/SkylineCommunications/Skyline.DataMiner.CICD.Packages/blob/main/Tools.Packager/README.md)\n- [Uploading a package to the Catalog](https://github.com/SkylineCommunications/Skyline.DataMiner.CICD.Tools.CatalogUpload/blob/main/CICD.Tools.CatalogUpload/README.md)\n- [Deploying a package to a DataMiner](https://github.com/SkylineCommunications/Skyline.DataMiner.CICD.Tools.DataMinerDeploy/blob/main/CICD.Tools.DataMinerDeploy/README.md)\n\n## Github Action\n\nThis 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.\n\nThe action consists of 2 stages: `Upload` and `Deploy`.\n\n## Stages\n\n### Upload\n\nThis 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.\n\n### Deploy\n\nThis stage deploys the artifact from the artifact storage to your cloud-connected DataMiner System.\n\n## Limitations\n\nThis action currently only supports the creation of artifacts with Automation scripts as a solution.\n\n## Inputs\n\n### `api-key`\n\n**Required**. The API key generated in the [DCP Admin app](https://admin.dataminer.services) to authenticate to a certain DataMiner Organization. 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/dataminer_services/Admin/Managing_dataminer_services_keys.html#organization-keys).\n\n### `solution-path`\n\n**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'`.\n\n### `github-token`\n\n**Optional**. The secrets.GITHUB_TOKEN.  Required for stages `'Upload'` and `'All'`.\n\n### `artifact-name`\n\n**Optional**. The chosen name for the artifact. E.g. `'MyPackageName'`. Required for stages `'Upload'` and `'All'`.\n\n### `version`\n\n**Optional**.\nThe 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.\n\n### `timeout`\n\n**Optional**. The maximum time spent waiting for the deployment to finish, in seconds. Default '900'. E.g. `'300'`.\n\n### `stage`\n\n**Optional**. The stage of the action to run. Options are: `'Upload'`, `'Deploy'` and `'All'`. Default: 'All'.\n\n### `destination-agent-id`\n\n**Optional**. The destination agent ID to deploy to. To obtain this ID for an existing DataMiner System, navigate to its details page in the Admin app. The ID is the last GUID of the URL. Required for stages `'Deploy'` and `'All'`.\n\n### `build-number`\n\n**Optional**.\nThe build number of a workflow run. Only required for a development run. Required for stages `'Upload'` and `'All'` if no version was provided instead.\n\n## Example usage\n\n### All stages at once\n\n```yaml\non: [push]\n\njobs:\n  deploy_artifact_job:\n    runs-on: ubuntu-latest\n    name: Deploy the artifact on the DataMiner System job\n    steps:\n      # To use this action, the repository must be checked out \n      - name: Checkout\n        uses: actions/checkout@v4\n      - name: Set up NuGet\n        uses: nuget/setup-nuget@v2.0.1     \n      - name: NuGet restore solution\n        run: nuget restore \"AutomationScript.sln\" -OutputDirectory ${{ github.workspace }}/packages\n      - name: Deploy the artifact on the DataMiner System step\n        uses: SkylineCommunications/Skyline-DataMiner-Deploy-Action@v1\n        id: deploy_artifact_step\n        with:\n          api-key: ${{ secrets.NAME_OF_YOUR_APIKEY_SECRET }}\n          solution-path: './Example/AutomationScript.sln'\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          artifact-name: 'MyArtifactName'\n          version: '1.0.1'\n          agent-destination-id: 'abc-abc-abc'\n```\n\n### Separate stages\n\n```yaml\non: [push]\n\n\njobs:\n  build:\n    name: build\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n      - name: Set up NuGet\n        uses: nuget/setup-nuget@v2.0.1     \n      - name: NuGet restore solution\n        run: nuget restore \"AutomationScript.sln\" -OutputDirectory ${{ github.workspace }}/packages\n      - name: Deploy the artifact on the DataMiner System step\n        uses: SkylineCommunications/Skyline-DataMiner-Deploy-Action@v1\n        id: Build_and_upload_artifact_step\n        with:\n          api-key: ${{ secrets.NAME_OF_YOUR_APIKEY_SECRET }}\n          solution-path: './Example/AutomationScript.sln'\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          artifact-name: 'MyArtifactName'\n          version: '1.0.1'\n          stage: Upload\n\n  deploy:\n    name: deploy\n    runs-on: ubuntu-latest\n    needs: build\n    steps:\n      - name: Deploy\n        uses: SkylineCommunications/Skyline-DataMiner-Deploy-Action@v1\n        with:\n          api-key: ${{ secrets.NAME_OF_YOUR_APIKEY_SECRET }}\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          agent-destination-id: 'abc-abc-abc'\n          version: '1.0.1'\n          stage: Deploy\n```\n\n## License\n\nCode and documentation in this project are released under the [MIT License](https://github.com/SkylineCommunications/Skyline-DataMiner-Deploy-Action/blob/feature/preRelease/LICENSE.txt).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskylinecommunications%2Fskyline-dataminer-deploy-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskylinecommunications%2Fskyline-dataminer-deploy-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskylinecommunications%2Fskyline-dataminer-deploy-action/lists"}