{"id":14063925,"url":"https://github.com/techthoughts2/PoshNotify","last_synced_at":"2025-07-29T17:31:00.823Z","repository":{"id":47147257,"uuid":"370490789","full_name":"techthoughts2/PoshNotify","owner":"techthoughts2","description":"PowerShell application powered by Azure Functions that sends PowerShell news to Slack","archived":false,"fork":false,"pushed_at":"2021-09-11T16:03:49.000Z","size":955,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-19T08:54:03.884Z","etag":null,"topics":["azure","azure-devops","azure-functions","azure-pipelines","bicep","bicep-powershell","powershell","powershell-module","serverless"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","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/techthoughts2.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-05-24T21:37:37.000Z","updated_at":"2023-04-01T21:41:22.000Z","dependencies_parsed_at":"2022-09-13T23:11:42.219Z","dependency_job_id":null,"html_url":"https://github.com/techthoughts2/PoshNotify","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/techthoughts2/PoshNotify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techthoughts2%2FPoshNotify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techthoughts2%2FPoshNotify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techthoughts2%2FPoshNotify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techthoughts2%2FPoshNotify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/techthoughts2","download_url":"https://codeload.github.com/techthoughts2/PoshNotify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techthoughts2%2FPoshNotify/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267726742,"owners_count":24134901,"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","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["azure","azure-devops","azure-functions","azure-pipelines","bicep","bicep-powershell","powershell","powershell-module","serverless"],"created_at":"2024-08-13T07:03:34.777Z","updated_at":"2025-07-29T17:31:00.457Z","avatar_url":"https://github.com/techthoughts2.png","language":"PowerShell","funding_links":[],"categories":["PowerShell"],"sub_categories":[],"readme":"# PoshNotify\n\nmain | dev\n--- | --- |\n![PoshNotify Azure DevOps](https://dev.azure.com/JakeMorrison/PoshNotify/_apis/build/status/PoshNotify-Main?branchName=main) | ![PoshNotify Azure DevOps](https://dev.azure.com/JakeMorrison/PoshNotify/_apis/build/status/PoshNotify-Dev?branchName=dev)\n\n## Synopsis\n\nPoshNotify is a serverless PowerShell application powered by Azure Functions that sends slack messages letting channels know when new things are happening with PowerShell.\n\n## Description\n\nPoshNotify is a real world, functional serverless PowerShell application. It is powered by [Azure Functions](https://docs.microsoft.com/azure/azure-functions/) and exists to notify slack channel members of various [PowerShell](https://github.com/PowerShell/PowerShell) news events.\n\nThis repository is linked with an [Azure DevOps pipeline](https://azure.microsoft.com/services/devops/) and deploys real-world Azure resources. However, it's primary purpose is to serve as a practical and referenceable example for deploying [PowerShell Azure Functions](https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-powershell).\n\n*This is not THE way, this is ONE way*\n\nThere are not a lot of published practical examples today for deploying [Azure PowerShell functions](https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-powershell) via a CI/CD process. If you are looking to accomplish this you can explore this project to see how I tackled various tasks. To date, there aren't established best practices on this type of effort. So if you have a suggestion to improve, feel free to pop an issue and discuss!\n\nWhat can you learn by looking over this project?\n\n- How to deploy [Azure PowerShell Functions](https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-powershell) using [Azure DevOps]((https://azure.microsoft.com/services/devops/))\n- How to build a custom [PowerShell module](https://docs.microsoft.com/powershell/scripting/developer/module/writing-a-windows-powershell-module?view=powershell-7.1) during the CI/CD process that is intended for use inside your [Azure Functions]((https://docs.microsoft.com/azure/azure-functions/))\n- How to have your PowerShell functions leverage public modules on the PSGallery\n- How to deploy Azure resources using [Bicep](https://github.com/Azure/bicep)\n  - How to store various secrets (such as Storage Access Keys) in Azure Key Vault during the bicep deployment process\n- How to assign permissions to enable your Azure PowerShell Functions to do things like:\n  - Get secrets from Azure Key Vault (slack webhook, SA connection strings)\n  - Write information to blob storage\n  - Write and read to Azure Table Storage\n  - Generate Application Insights information\n- How to run [Azure DevOps on a self hosted pool](https://docs.microsoft.com/azure/devops/pipelines/agents/v2-windows?view=azure-devops)\n- How to format an [Azure DevOps yaml file](https://docs.microsoft.com/azure/devops/pipelines/)\n- How to use PowerShell in an Azure DevOps pipeline deployment\n- How to use [Pester](https://github.com/pester/Pester) 5 in an Azure DevOps pipeline\n- How to publish test results for beautiful graphs in Azure DevOps\n- How to publish code coverage for beautiful graphs in Azure DevOps\n- How to deploy a separate Dev and Prod stack using Azure DevOps\n- How to properly build and structure Azure PowerShell Functions\n\n### PoshNotify High Level Design\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./media/PoshNotify_HLD.png\" alt=\"PoshNotify High Level Design\" \u003e\n\u003c/p\u003e\n\n### PoshNotify Logical Flow\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./media/function_flow.png\" alt=\"PoshNotify functional flow diagram\" \u003e\n\u003c/p\u003e\n\n### PoshNotify Deployment Pipeline\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./media/PoshNotify_Pipeline.png\" alt=\"PoshNotify Pipeline Deployment\" \u003e\n\u003c/p\u003e\n\n## Author\n\n[Jake Morrison](https://twitter.com/JakeMorrison) - [https://techthoughts.info/](https://www.techthoughts.info/)\n\n## Notes\n\nThe PowerShell module inside this project was created using [Catesta](https://github.com/techthoughts2/Catesta).\n\nLooking for a serverless PowerShell example on AWS instead? Check out [PSGalleryExplorer](https://github.com/techthoughts2/PSGalleryExplorer)\n\n## License\n\nThis project is [licensed under the MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechthoughts2%2FPoshNotify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechthoughts2%2FPoshNotify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechthoughts2%2FPoshNotify/lists"}