All Projects → tinglesoftware → dependabot-azure-devops

tinglesoftware / dependabot-azure-devops

Licence: MIT license
Convenience tool for updating dependencies in Azure DevOps repositories using https://dependabot.com

Programming Languages

ruby
36898 projects - #4 most used programming language
typescript
32286 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to dependabot-azure-devops

Renovate
Universal dependency update tool that fits into your workflows.
Stars: ✭ 6,700 (+10706.45%)
Mutual labels:  dependencies, azure-devops
vsts-mirror-git-repository
A straightforward utility to mirror one Git repository to another location
Stars: ✭ 22 (-64.52%)
Mutual labels:  azure-devops
Power-Platform-ALM-Starter-Kit
Kit to help you start your DevOps journey with the Power Platform
Stars: ✭ 26 (-58.06%)
Mutual labels:  azure-devops
node-express-azure
Node & Express Demo App for Azure DevOps
Stars: ✭ 31 (-50%)
Mutual labels:  azure-devops
azuregovernance
Implement Azure Governance using Terraform
Stars: ✭ 21 (-66.13%)
Mutual labels:  azure-devops
Implementing-Terraform-on-Microsoft-Azure
Code examples for the Pluralsight course Implementing Terraform on Microsoft Azure
Stars: ✭ 95 (+53.23%)
Mutual labels:  azure-devops
TfsCmdlets
PowerShell Cmdlets for Azure DevOps and Team Foundation Server
Stars: ✭ 75 (+20.97%)
Mutual labels:  azure-devops
VstsExtensions
Documentation and issue tracking for Microsoft Premier Services Visual Studio Team Services Extensions
Stars: ✭ 42 (-32.26%)
Mutual labels:  azure-devops
sbt-hackling
Prototype of the Libling concept. Libling is a way to add source dependencies to your sbt project.
Stars: ✭ 13 (-79.03%)
Mutual labels:  dependencies
tsdi
Dependency Injection container (IoC) for TypeScript
Stars: ✭ 50 (-19.35%)
Mutual labels:  dependencies
deps-ok
Fast checking of top level dependencies based on version numbers
Stars: ✭ 17 (-72.58%)
Mutual labels:  dependencies
jmeter-aci-terraform
Scalable cloud load/stress testing pipeline solution with Apache JMeter and Terraform to dynamically provision and destroy the required infrastructure on Azure.
Stars: ✭ 114 (+83.87%)
Mutual labels:  azure-devops
lint-deps
Lint for unused or missing dependencies in your node.js projects. Customize with plugins or configuration.
Stars: ✭ 48 (-22.58%)
Mutual labels:  dependencies
AzureDevOpsPipelines-Templates
This project shows how to use YAML templates in Azure DevOps Pipelines.
Stars: ✭ 35 (-43.55%)
Mutual labels:  azure-devops
terraform-tuesdays
Demo files for various Terraform Tuesday Examples
Stars: ✭ 211 (+240.32%)
Mutual labels:  azure-devops
dep check
Checks your (Flutter) dependencies for the latest version
Stars: ✭ 18 (-70.97%)
Mutual labels:  dependencies
mojito-admin-starter
此项目主要为了演示如何自动化 Fullstack project 的 Infrastructure。
Stars: ✭ 17 (-72.58%)
Mutual labels:  azure-devops
azure-devops-terraform
Recipe to deploy Azure Infrastructure with Terraform via Azure DevOps
Stars: ✭ 18 (-70.97%)
Mutual labels:  azure-devops
tools jvm autodeps
Automatic Dependency Management Tools for JVM Languages
Stars: ✭ 48 (-22.58%)
Mutual labels:  dependencies
govizz
No description or website provided.
Stars: ✭ 19 (-69.35%)
Mutual labels:  dependencies

Dependabot for Azure DevOps

This repository contains convenience tool(s) for updating dependencies in Azure DevOps repositories using Dependabot.

GitHub Workflow Status Release Docker Image Docker Pulls license

In this repository you'll find:

  1. Dependabot's Update script in Ruby.
  2. Dockerfile and build/image for running the script via Docker here.
  3. Azure DevOps Extension and source.
  4. Kubernetes CronJob template.
  5. Hosted versions: fully hosted, self hosted (source code and instructions coming soon).

Using a configuration file

Similar to the GitHub native version where you add a .github/dependabot.yml file, this repository adds support for the same official configuration options via a file located at .azuredevops/dependabot.yml. This support is only available in the Azure DevOps extension and the hosted version. However, the extension does not currently support automatically picking up the file, a pipeline is still required. See docs.

Credentials for private registries and feeds

Besides accessing the repository, sometimes, private feeds/registries may need to be accessed. For example a private NuGet feed or a company internal docker registry. Adding credentials is currently done via the DEPENDABOT_EXTRA_CREDENTIALS environment variable. The value is supplied in JSON hence allowing any type of credentials even if they are not for private feeds/registries.

When working with Azure Artifacts, some extra steps need to be done:

  1. The PAT should have Packaging Read permission.
  2. The user owning the PAT must be granted permissions to access the feed either directly or via a group. An easy way for this is to give Contributor permissions the [{project_name}]\Contributors group under the Feed Settings -> Permissions page. The page has the url format: https://dev.azure.com/{organization}/{project}/_packaging?_a=settings&feed={feed-name}&view=permissions.

Kubernetes CronJob

A Kubernetes CronJobs is a useful resource for running tasks (a.k.a Jobs) on a recurring schedule. For more information on them read the documentation. Using the Docker image, we can create a CronJob and have it run periodically. The environment variables are supplied in the job template but can be stored in a ConfigMap for ease of reuse.

Use the template provided and replace the parameters in curly braces (e.g. replace {{azure_organization}} with the actual value for your organization), then deploy it. Be sure to replace the {{k8s_schedule}} variable with the desired schedule as per the Cron format.

Notes

  1. Timezone support is not yet available in Kubernetes (Issue 1, Issue 2). If this is important to you, consider using cronjobber.
  2. History for successful and failed jobs is restricted to 1 (change to suit you).
  3. Jobs are removed after 2 days (ttlSecondsAfterFinished: 172800). No need keep it for too long.
  4. Jobs run duration is capped at 1 hour (activeDeadlineSeconds: 3600). This should be enough time.
  5. Labels can be used to find cronjobs created.
  6. Annotations can be used to store extra data for comparison but not searching/finding e.g. package ecosystem.

Hosted version

The hosted version (source code) for Azure DevOps work almost similar to the native version of dependabot on GitHub, hosted in your own Kubernetes cluster. It supports:

  1. Pulling configuration from a file located at .azuredevops/dependabot.yml.
  2. Adding/updating the file, triggers a run.
  3. Extra credentials for private registries, feeds and package repositories.
  4. Hosted on Kubernetes; easier compared to using Azure build agents.
  5. Auto resolving of merge conflicts using webhooks.
  6. Viewing the most recent runs for each repository, project and organization configured.

Still using the old *.visualstudio.com URL?

The new URL in the format https://dev.azure.com/{organization} is recommended. If you are still using the older {organization}.visualstudio.com URL, you need to toggle on the new URL. As far as out testing has gone, we have not had any issues using both the new and old URL. It is possible to keep both. The core implementation will only support the new one. See #27 for more explanation. For someone really looking to use dependabot to keep dependencies up to date, migrating to the new URL should really be a no-brainer.

Acknowledgements

The work in this repository is based on inspired and occasionally guided by some predecessors in the same area:

  1. Official Script support: code
  2. Andrew Craven's work: blog, code
  3. Chris' work: code
  4. andrcun's work on GitLab: code
  5. WeWork's work for GitLab: code

Issues & Comments

Please leave all comments, bugs, requests, and issues on the Issues page. We'll respond to your request ASAP!

License

The code is licensed under the MIT license. Refer to the LICENSE file for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].