deployctl
deployctl
is a command line tool for deploying your code to Deno Deploy, and
it's also a GitHub Action
for the same purpose.
The default GitHub integration of Deno Deploy automatically uploads the files in
your repository as Static Assets
and you can access those files in Deno Deploy. However this static assets
support is limited to the files in your repository with the default GitHub
integration.
If you like to dynamically generate the static assets during the build
steps, you need to use deployctl
.
deployctl
CLI
You can install deployctl
command with the below command:
deno install --allow-read --allow-write --allow-env --allow-net --allow-run --no-check -r -f https://deno.land/x/deploy/deployctl.ts
You also need to set your Personal Access Token to DENO_DEPLOY_TOKEN
environment variable. You can generate your Personal Access Token in
https://dash.deno.com/account#access-tokens .
Usages
To deploy a local script:
deployctl deploy --project=helloworld main.ts
To deploy a remote script:
deployctl deploy --project=helloworld https://deno.com/examples/hello.js
To deploy a remote script without static files:
deployctl deploy --project=helloworld --no-static https://deno.com/examples/hello.js
To ignore the node_modules directory while deploying:
deployctl deploy --project=helloworld --exclude=node_modules main.tsx
See the help message (deployctl -h
) for more details.
deployctl
GitHub Action
There's also
deployctl
GitHub Action
which wraps and automates the above command line usages.
You just need to include the deployctl
GitHub Action as a step in your
workflow.
You do not need to set up any secrets for this to work. You do need to link your GitHub repository to your Deno Deploy project and choose the "GitHub Actions" deployment mode. You can do this in your project settings on https://dash.deno.com.
job:
permissions:
id-token: write # This is required to allow the GitHub Action to authenticate with Deno Deploy.
contents: read
steps:
- name: Deploy to Deno Deploy
uses: denoland/deployctl@v1
with:
project: my-project # the name of the project on Deno Deploy
entrypoint: main.ts # the entrypoint to deploy
By default the entire contents of the repository will be deployed. This can be
changed by specifying the root
option.
- name: Deploy to Deno Deploy
uses: denoland/deployctl@v1
with:
project: my-project
entrypoint: index.js
root: dist
The entrypoint
can either be a relative path or file name, or a an absolute
URL. If it is a relative path, it will be resolved relative to the root
. Both
absolute file:///
and https://
URLs are supported.
To deploy the ./dist
directory using the std/http/file_server.ts
module, you can use the following configuration:
- name: Deploy to Deno Deploy
uses: denoland/deployctl@v1
with:
project: my-project
entrypoint: https://deno.land/std/http/file_server.ts
root: dist
See deployctl README for more details.