Skip to content

Implementation of the GOPROXY protocol that uses GitLab as a backing datastore.

License

Notifications You must be signed in to change notification settings

djcass44/gitlab-goproxy

Repository files navigation

GitLab GoProxy

This project contains an implementation of the GOPROXY protocol that stores data in the GitLab Generic Package Repository.

Getting started

  1. In GitLab, create a project that you intend on using to store packages.

    We recommend creating a new project otherwise it will make it hard to find any pre-existing packages.

  2. Create a project or group access token with the api scope.
  3. Create a Kubernetes secret using the token we just created:
    export GOPROXY_TOKEN=<token we just got>
    kubectl create secret generic goproxy-token --from-literal=token=$GOPROXY_TOKEN
  4. Create a values.yaml file with at least the following:
    gitlab:
      url: https://gitlab.example.com
      projectId: 123 # numeric ID of the project we created
      tokenSecretRef:
        name: goproxy-token
        key: token
    There's plenty more that can be figured, but we will leave that as an exercise to the reader.
  5. Deploy the application:
    helm install goproxy oci://ghcr.io/djcass44/gitlab-goproxy/helm-charts/gitlab-goproxy -f values.yaml

    We recommend using a GitOps tool (e.g., FluxCD, ArgoCD) rather than doing this manually.

Usage

Once the application has been deployed, using it is as simple as setting the GOPROXY environment variable:

export GOPROXY="https://goproxy.example.org"
go mod download