Skip to content

This project aims to help to release a project which especially has multiple git repositories.

License

Notifications You must be signed in to change notification settings

kubesphere-sigs/ks-releaser

Repository files navigation

codecov GitHub All Releases

This project aims to help to release a project which especially has multiple git repositories.

Features

  • Support to create a tag for a git repository
  • Support to create a release (or pre-release) for a GitHub repository
  • Metrics support for the release action count
  • Support to integrate with GitOps framework (such as Argo CD)

Installation

Install it to a Kubernetes cluster. You can use kubekey or ks CLI.

Requirement

For local environment

make deploy

For production environment

kubectl apply -f https://github.com/kubesphere-sigs/ks-releaser/releases/latest/download/install.yaml

or install it without ServiceMonitor

kubectl apply -f https://github.com/kubesphere-sigs/ks-releaser/releases/latest/download/install-no-monitor.yaml

How to use

Create a secret for your git repositories with name test-git, such as:

apiVersion: v1
stringData:
  password: admin
  username: admin
kind: Secret
metadata:
  name: test-git
  namespace: default
type: "kubernetes.io/basic-auth"

Create a Kubernetes custom resource with the following example:

apiVersion: devops.kubesphere.io/v1alpha1
kind: Releaser
metadata:
  name: releaser-sample
spec:
  repositories:
    - name: test
      address: https://gitee.com/linuxsuren/test
      branch: master
  secret:
    name: test-git
    namespace: default

Integration with ArgoCD

Please provide the corresponding git repository if you want to use GitOps way.

apiVersion: devops.kubesphere.io/v1alpha1
kind: Releaser
metadata:
  name: releaser-sample
spec:
  gitOps:
    enable: true
    repository:
      address: https://gitee.com/linuxsuren/linuxsuren-releaser
      branch: master
      name: test
  repositories:
    - name: test
      address: https://gitee.com/linuxsuren/test
      branch: master
  secret:
    name: test-git
    namespace: default

Wait for a while, you can check your git repositories to see if there is a new git tag over there.