Skip to main content

Manage packages using the package manager

caution

This documentation is for an older version of Dagger, which is no longer actively maintained.

We encourage you to upgrade and refer to the documentation for the most current version.

If you cannot upgrade to the latest version, please contact us in the help forum on Discord. When contacting us, please let us know why you cannot move to the latest version. From there, our team will work with you on your use case.

This tutorial illustrates how to install and upgrade packages using Dagger package manager.

Installing a package

Initializing project

Create an empty directory for your new Dagger project:

mkdir project
cd project

As described in the previous tutorials, initialize your Dagger project:

dagger init
dagger new test

That will create 2 directories: .dagger and cue.mod where our package will reside:

.
├── cue.mod
│ ├── module.cue
│ ├── pkg
│ └── usr
├── .dagger
│ └── env
│ └── test

Install

In our example we will use gcpcloudrun package from github Let's first add it to our source.cue file:

./source.cue
package main

import (
"github.com/dagger/packages/gcpcloudrun"
)

run: gcpcloudrun.#Run

To install it just run

dagger mod get github.com/dagger/packages/gcpcloudrun@v0.1

It should pull the v0.1 version from GitHub, leave a copy in cue.mod/pkg and reflect the change in cue.mod/dagger.mod file:

cue.mod/pkg/github.com/
└── dagger
└── packages
└── gcpcloudrun
├── cue.mod
├── README.md
└── source.cue
./cue.mod/dagger.mod
github.com/dagger/packages/gcpcloudrun v0.1

Querying the current setup with dagger query should return a valid result:

{
"run": {
"creds": {
"username": "oauth2accesstoken"
},
"deploy": {
"platform": "managed",
"port": "80"
},
"push": {
"auth": {
"username": "oauth2accesstoken"
},
"push": {}
}
}
}

Upgrading

Now that you've successfully installed a package, let's try to upgrade it.

dagger mod get github.com/dagger/packages/gcpcloudrun@v0.2

You should see similar output:

12:25PM INF system | downloading github.com/dagger/packages:v0.2

And cue.mod/dagger.mod should reflect the new version:

./cue.mod/dagger.mod
github.com/dagger/packages/gcpcloudrun v0.2

Develop package locally

Currently, package manager cannot add local packages so a workaround is linking the package to cue.mod/pkg. Create a directory with your domain name, usually github.com/myuser, and link your package directory.

mkdir cue.mod/pkg/<mydomain>
ln -s <localpackage> cue.mod/pkg/<mydomain>/<mypackagename>