PluginDownloadURL moves off github:// to a templated Gitea release URL.
Pulumi interpolates ${VERSION}, then appends
pulumi-resource-dokploy-v<version>-<os>-<arch>.tar.gz -- which is what
the GoReleaser archive template already produces. Schema, bridge
metadata and all four SDKs regenerated to carry it.
Releases publish to this instance's npm, PyPI, NuGet and Go registries
using the GITEA_TOKEN that Gitea injects, so no secrets need
configuring.
The Go SDK keeps its github.com module path, which is exactly why it
goes to Gitea's Go registry: pointing GOPROXY there is what makes that
path resolve at all. Verified locally by serving the module zip from a
file proxy and building a consumer against it -- note zip -D, without
which go get rejects the archive's directory entries.
1907 lines
63 KiB
C#
Generated
1907 lines
63 KiB
C#
Generated
// *** WARNING: this file was generated by pulumi-language-dotnet. ***
|
|
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Immutable;
|
|
using System.Threading.Tasks;
|
|
using Pulumi.Serialization;
|
|
using Pulumi;
|
|
|
|
namespace Maxvojtkov.Dokploy
|
|
{
|
|
[DokployResourceType("dokploy:index/application:Application")]
|
|
public partial class Application : global::Pulumi.CustomResource
|
|
{
|
|
/// <summary>
|
|
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new application.
|
|
/// </summary>
|
|
[Output("appName")]
|
|
public Output<string> AppName { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Current status reported by Dokploy: `Idle`, `Running`, `Done` or `Error`.
|
|
/// </summary>
|
|
[Output("applicationStatus")]
|
|
public Output<string> ApplicationStatus { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Arguments appended to the container command.
|
|
/// </summary>
|
|
[Output("args")]
|
|
public Output<ImmutableArray<string>> Args { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Deploy automatically when the configured trigger fires.
|
|
/// </summary>
|
|
[Output("autoDeploy")]
|
|
public Output<bool> AutoDeploy { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Bitbucket branch to build.
|
|
/// </summary>
|
|
[Output("bitbucketBranch")]
|
|
public Output<string?> BitbucketBranch { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Path within the Bitbucket repository to build from.
|
|
/// </summary>
|
|
[Output("bitbucketBuildPath")]
|
|
public Output<string> BitbucketBuildPath { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// ID of the configured Bitbucket provider connection.
|
|
/// </summary>
|
|
[Output("bitbucketId")]
|
|
public Output<string?> BitbucketId { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Bitbucket repository owner.
|
|
/// </summary>
|
|
[Output("bitbucketOwner")]
|
|
public Output<string?> BitbucketOwner { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Bitbucket repository name.
|
|
/// </summary>
|
|
[Output("bitbucketRepository")]
|
|
public Output<string?> BitbucketRepository { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Bitbucket repository slug.
|
|
/// </summary>
|
|
[Output("bitbucketRepositorySlug")]
|
|
public Output<string?> BitbucketRepositorySlug { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// GitHub branch to build.
|
|
/// </summary>
|
|
[Output("branch")]
|
|
public Output<string?> Branch { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Docker build arguments in `KEY=value` format, one per line.
|
|
/// </summary>
|
|
[Output("buildArgs")]
|
|
public Output<string?> BuildArgs { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Path within the GitHub repository to build from.
|
|
/// </summary>
|
|
[Output("buildPath")]
|
|
public Output<string> BuildPath { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Registry used by a dedicated build server.
|
|
/// </summary>
|
|
[Output("buildRegistryId")]
|
|
public Output<string?> BuildRegistryId { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Docker build secrets in `KEY=value` format, one per line.
|
|
/// </summary>
|
|
[Output("buildSecrets")]
|
|
public Output<string> BuildSecrets { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Server that performs builds, when separate from the deploy server.
|
|
/// </summary>
|
|
[Output("buildServerId")]
|
|
public Output<string?> BuildServerId { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// How the application is built. Valid values: `Dockerfile`, `HerokuBuildpacks`, `PaketoBuildpacks`, `Nixpacks`, `Static`, `Railpack`.
|
|
/// </summary>
|
|
[Output("buildType")]
|
|
public Output<string> BuildType { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Discard the build cache on the next deployment.
|
|
/// </summary>
|
|
[Output("cleanCache")]
|
|
public Output<bool> CleanCache { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Override the container entrypoint command.
|
|
/// </summary>
|
|
[Output("command")]
|
|
public Output<string?> Command { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Hard CPU limit, for example `1`.
|
|
/// </summary>
|
|
[Output("cpuLimit")]
|
|
public Output<string?> CpuLimit { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Soft CPU reservation, for example `0.5`.
|
|
/// </summary>
|
|
[Output("cpuReservation")]
|
|
public Output<string?> CpuReservation { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Write the environment variables to a `.env` file in the container.
|
|
/// </summary>
|
|
[Output("createEnvFile")]
|
|
public Output<bool> CreateEnvFile { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// RFC 3339 timestamp of when the application was created.
|
|
/// </summary>
|
|
[Output("createdAt")]
|
|
public Output<string> CreatedAt { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Branch to build for a custom Git remote.
|
|
/// </summary>
|
|
[Output("customGitBranch")]
|
|
public Output<string?> CustomGitBranch { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Path within a custom Git repository to build from.
|
|
/// </summary>
|
|
[Output("customGitBuildPath")]
|
|
public Output<string?> CustomGitBuildPath { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// SSH key used to clone a private custom Git remote.
|
|
/// </summary>
|
|
[Output("customGitSshKeyId")]
|
|
public Output<string?> CustomGitSshKeyId { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Git remote URL, when `SourceType` is `Git`.
|
|
/// </summary>
|
|
[Output("customGitUrl")]
|
|
public Output<string?> CustomGitUrl { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Free-form description.
|
|
/// </summary>
|
|
[Output("description")]
|
|
public Output<string?> Description { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Detach the service from the shared `dokploy-network`.
|
|
/// </summary>
|
|
[Output("detachDokployNetwork")]
|
|
public Output<bool> DetachDokployNetwork { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Target stage for a multi-stage Docker build.
|
|
/// </summary>
|
|
[Output("dockerBuildStage")]
|
|
public Output<string?> DockerBuildStage { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Docker build context path.
|
|
/// </summary>
|
|
[Output("dockerContextPath")]
|
|
public Output<string?> DockerContextPath { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Docker image reference, when `SourceType` is `Docker`.
|
|
/// </summary>
|
|
[Output("dockerImage")]
|
|
public Output<string?> DockerImage { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Path to the Dockerfile, when `BuildType` is `Dockerfile`.
|
|
/// </summary>
|
|
[Output("dockerfile")]
|
|
public Output<string> Dockerfile { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Clone Git submodules when checking out the repository.
|
|
/// </summary>
|
|
[Output("enableSubmodules")]
|
|
public Output<bool> EnableSubmodules { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Whether the application is enabled.
|
|
/// </summary>
|
|
[Output("enabled")]
|
|
public Output<bool> Enabled { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Docker Swarm endpoint specification, as a JSON object.
|
|
/// </summary>
|
|
[Output("endpointSpecSwarm")]
|
|
public Output<string?> EndpointSpecSwarm { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Runtime environment variables in `KEY=value` format, one per line.
|
|
/// </summary>
|
|
[Output("env")]
|
|
public Output<string?> Env { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Environment this application belongs to.
|
|
/// </summary>
|
|
[Output("environmentId")]
|
|
public Output<string> EnvironmentId { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Gitea branch to build.
|
|
/// </summary>
|
|
[Output("giteaBranch")]
|
|
public Output<string?> GiteaBranch { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Path within the Gitea repository to build from.
|
|
/// </summary>
|
|
[Output("giteaBuildPath")]
|
|
public Output<string> GiteaBuildPath { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// ID of the configured Gitea provider connection.
|
|
/// </summary>
|
|
[Output("giteaId")]
|
|
public Output<string?> GiteaId { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Gitea repository owner.
|
|
/// </summary>
|
|
[Output("giteaOwner")]
|
|
public Output<string?> GiteaOwner { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Gitea repository name.
|
|
/// </summary>
|
|
[Output("giteaRepository")]
|
|
public Output<string?> GiteaRepository { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// ID of the configured GitHub provider connection.
|
|
/// </summary>
|
|
[Output("githubId")]
|
|
public Output<string?> GithubId { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// GitLab branch to build.
|
|
/// </summary>
|
|
[Output("gitlabBranch")]
|
|
public Output<string?> GitlabBranch { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Path within the GitLab repository to build from.
|
|
/// </summary>
|
|
[Output("gitlabBuildPath")]
|
|
public Output<string> GitlabBuildPath { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// ID of the configured GitLab provider connection.
|
|
/// </summary>
|
|
[Output("gitlabId")]
|
|
public Output<string?> GitlabId { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// GitLab repository owner.
|
|
/// </summary>
|
|
[Output("gitlabOwner")]
|
|
public Output<string?> GitlabOwner { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Full GitLab namespace path.
|
|
/// </summary>
|
|
[Output("gitlabPathNamespace")]
|
|
public Output<string?> GitlabPathNamespace { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Numeric GitLab project ID.
|
|
/// </summary>
|
|
[Output("gitlabProjectId")]
|
|
public Output<int?> GitlabProjectId { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// GitLab repository name.
|
|
/// </summary>
|
|
[Output("gitlabRepository")]
|
|
public Output<string?> GitlabRepository { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Docker Swarm health check configuration, as a JSON object.
|
|
/// </summary>
|
|
[Output("healthCheckSwarm")]
|
|
public Output<string?> HealthCheckSwarm { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Heroku buildpack stack version.
|
|
/// </summary>
|
|
[Output("herokuVersion")]
|
|
public Output<string> HerokuVersion { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Build a preview deployment for each pull request.
|
|
/// </summary>
|
|
[Output("isPreviewDeploymentsActive")]
|
|
public Output<bool> IsPreviewDeploymentsActive { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Serve a static build as a single-page application.
|
|
/// </summary>
|
|
[Output("isStaticSpa")]
|
|
public Output<bool> IsStaticSpa { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Docker Swarm service labels, as a JSON object.
|
|
/// </summary>
|
|
[Output("labelsSwarm")]
|
|
public Output<string?> LabelsSwarm { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Hard memory limit, for example `512m`.
|
|
/// </summary>
|
|
[Output("memoryLimit")]
|
|
public Output<string?> MemoryLimit { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Soft memory reservation, for example `256m`.
|
|
/// </summary>
|
|
[Output("memoryReservation")]
|
|
public Output<string?> MemoryReservation { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Docker Swarm service mode, as a JSON object.
|
|
/// </summary>
|
|
[Output("modeSwarm")]
|
|
public Output<string?> ModeSwarm { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Display name of the application.
|
|
/// </summary>
|
|
[Output("name")]
|
|
public Output<string> Name { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// IDs of additional Docker networks to attach.
|
|
/// </summary>
|
|
[Output("networkIds")]
|
|
public Output<ImmutableArray<string>> NetworkIds { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Docker Swarm network attachments, as a JSON array.
|
|
/// </summary>
|
|
[Output("networkSwarm")]
|
|
public Output<string?> NetworkSwarm { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// GitHub repository owner.
|
|
/// </summary>
|
|
[Output("owner")]
|
|
public Output<string?> Owner { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Registry password, when pulling a private image.
|
|
/// </summary>
|
|
[Output("password")]
|
|
public Output<string> Password { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Docker Swarm placement constraints, as a JSON object.
|
|
/// </summary>
|
|
[Output("placementSwarm")]
|
|
public Output<string?> PlacementSwarm { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Build arguments applied to preview deployments.
|
|
/// </summary>
|
|
[Output("previewBuildArgs")]
|
|
public Output<string?> PreviewBuildArgs { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Build secrets applied to preview deployments.
|
|
/// </summary>
|
|
[Output("previewBuildSecrets")]
|
|
public Output<string> PreviewBuildSecrets { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Certificate strategy for preview deployments. Valid values: `Letsencrypt`, `None`, `Custom`.
|
|
/// </summary>
|
|
[Output("previewCertificateType")]
|
|
public Output<string> PreviewCertificateType { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Traefik certificate resolver for preview deployments.
|
|
/// </summary>
|
|
[Output("previewCustomCertResolver")]
|
|
public Output<string?> PreviewCustomCertResolver { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Environment variables applied to preview deployments.
|
|
/// </summary>
|
|
[Output("previewEnv")]
|
|
public Output<string?> PreviewEnv { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Serve preview deployments over HTTPS.
|
|
/// </summary>
|
|
[Output("previewHttps")]
|
|
public Output<bool> PreviewHttps { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Pull request labels that opt into preview deployments.
|
|
/// </summary>
|
|
[Output("previewLabels")]
|
|
public Output<ImmutableArray<string>> PreviewLabels { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Maximum number of concurrent preview deployments.
|
|
/// </summary>
|
|
[Output("previewLimit")]
|
|
public Output<int> PreviewLimit { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Base path for preview deployments.
|
|
/// </summary>
|
|
[Output("previewPath")]
|
|
public Output<string> PreviewPath { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Container port exposed by preview deployments.
|
|
/// </summary>
|
|
[Output("previewPort")]
|
|
public Output<int> PreviewPort { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Wildcard domain used to expose preview deployments.
|
|
/// </summary>
|
|
[Output("previewWildcard")]
|
|
public Output<string?> PreviewWildcard { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Directory served when `BuildType` is `Static`.
|
|
/// </summary>
|
|
[Output("publishDirectory")]
|
|
public Output<string?> PublishDirectory { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Railpack version.
|
|
/// </summary>
|
|
[Output("railpackVersion")]
|
|
public Output<string> RailpackVersion { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Registry used to push the built image.
|
|
/// </summary>
|
|
[Output("registryId")]
|
|
public Output<string?> RegistryId { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Registry URL, when pulling a private image.
|
|
/// </summary>
|
|
[Output("registryUrl")]
|
|
public Output<string?> RegistryUrl { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Number of replicas to run.
|
|
/// </summary>
|
|
[Output("replicas")]
|
|
public Output<int> Replicas { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// GitHub repository name.
|
|
/// </summary>
|
|
[Output("repository")]
|
|
public Output<string?> Repository { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Docker Swarm restart policy, as a JSON object.
|
|
/// </summary>
|
|
[Output("restartPolicySwarm")]
|
|
public Output<string?> RestartPolicySwarm { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Keep previous images so deployments can be rolled back.
|
|
/// </summary>
|
|
[Output("rollbackActive")]
|
|
public Output<bool> RollbackActive { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Docker Swarm rollback configuration, as a JSON object.
|
|
/// </summary>
|
|
[Output("rollbackConfigSwarm")]
|
|
public Output<string?> RollbackConfigSwarm { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Registry used to store rollback images.
|
|
/// </summary>
|
|
[Output("rollbackRegistryId")]
|
|
public Output<string?> RollbackRegistryId { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Remote server to deploy on. Omit to use the Dokploy host itself.
|
|
/// </summary>
|
|
[Output("serverId")]
|
|
public Output<string?> ServerId { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Where the application's code or image comes from. Valid values: `Docker`, `Git`, `Github`, `Gitlab`, `Bitbucket`, `Gitea`, `Drop`.
|
|
/// </summary>
|
|
[Output("sourceType")]
|
|
public Output<string> SourceType { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Grace period in nanoseconds before a container is killed.
|
|
/// </summary>
|
|
[Output("stopGracePeriodSwarm")]
|
|
public Output<int?> StopGracePeriodSwarm { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Display subtitle shown in the Dokploy UI.
|
|
/// </summary>
|
|
[Output("subtitle")]
|
|
public Output<string?> Subtitle { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Display title shown in the Dokploy UI.
|
|
/// </summary>
|
|
[Output("title")]
|
|
public Output<string?> Title { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// What triggers an automatic GitHub deployment. Valid values: `Push`, `Tag`.
|
|
/// </summary>
|
|
[Output("triggerType")]
|
|
public Output<string> TriggerType { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Docker Swarm ulimits, as a JSON object.
|
|
/// </summary>
|
|
[Output("ulimitsSwarm")]
|
|
public Output<string?> UlimitsSwarm { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Docker Swarm rolling update configuration, as a JSON object.
|
|
/// </summary>
|
|
[Output("updateConfigSwarm")]
|
|
public Output<string?> UpdateConfigSwarm { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Registry username, when pulling a private image.
|
|
/// </summary>
|
|
[Output("username")]
|
|
public Output<string?> Username { get; private set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Glob patterns that limit which changed paths trigger an automatic deployment.
|
|
/// </summary>
|
|
[Output("watchPaths")]
|
|
public Output<ImmutableArray<string>> WatchPaths { get; private set; } = null!;
|
|
|
|
|
|
/// <summary>
|
|
/// Create a Application resource with the given unique name, arguments, and options.
|
|
/// </summary>
|
|
///
|
|
/// <param name="name">The unique name of the resource</param>
|
|
/// <param name="args">The arguments used to populate this resource's properties</param>
|
|
/// <param name="options">A bag of options that control this resource's behavior</param>
|
|
public Application(string name, ApplicationArgs args, CustomResourceOptions? options = null)
|
|
: base("dokploy:index/application:Application", name, args ?? new ApplicationArgs(), MakeResourceOptions(options, ""))
|
|
{
|
|
}
|
|
|
|
private Application(string name, Input<string> id, ApplicationState? state = null, CustomResourceOptions? options = null)
|
|
: base("dokploy:index/application:Application", name, state, MakeResourceOptions(options, id))
|
|
{
|
|
}
|
|
|
|
private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
|
|
{
|
|
var defaultOptions = new CustomResourceOptions
|
|
{
|
|
Version = Utilities.Version,
|
|
PluginDownloadURL = "https://gitea.coolify.vojtkov.dev/usr_unknown/pulumi-dokploy/releases/download/v${VERSION}",
|
|
AdditionalSecretOutputs =
|
|
{
|
|
"buildSecrets",
|
|
"password",
|
|
"previewBuildSecrets",
|
|
},
|
|
};
|
|
var merged = CustomResourceOptions.Merge(defaultOptions, options);
|
|
// Override the ID if one was specified for consistency with other language SDKs.
|
|
merged.Id = id ?? merged.Id;
|
|
return merged;
|
|
}
|
|
/// <summary>
|
|
/// Get an existing Application resource's state with the given name, ID, and optional extra
|
|
/// properties used to qualify the lookup.
|
|
/// </summary>
|
|
///
|
|
/// <param name="name">The unique name of the resulting resource.</param>
|
|
/// <param name="id">The unique provider ID of the resource to lookup.</param>
|
|
/// <param name="state">Any extra arguments used during the lookup.</param>
|
|
/// <param name="options">A bag of options that control this resource's behavior</param>
|
|
public static Application Get(string name, Input<string> id, ApplicationState? state = null, CustomResourceOptions? options = null)
|
|
{
|
|
return new Application(name, id, state, options);
|
|
}
|
|
}
|
|
|
|
public sealed class ApplicationArgs : global::Pulumi.ResourceArgs
|
|
{
|
|
/// <summary>
|
|
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new application.
|
|
/// </summary>
|
|
[Input("appName")]
|
|
public Input<string>? AppName { get; set; }
|
|
|
|
[Input("args")]
|
|
private InputList<string>? _args;
|
|
|
|
/// <summary>
|
|
/// Arguments appended to the container command.
|
|
/// </summary>
|
|
public InputList<string> Args
|
|
{
|
|
get => _args ?? (_args = new InputList<string>());
|
|
set => _args = value;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Deploy automatically when the configured trigger fires.
|
|
/// </summary>
|
|
[Input("autoDeploy")]
|
|
public Input<bool>? AutoDeploy { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bitbucket branch to build.
|
|
/// </summary>
|
|
[Input("bitbucketBranch")]
|
|
public Input<string>? BitbucketBranch { get; set; }
|
|
|
|
/// <summary>
|
|
/// Path within the Bitbucket repository to build from.
|
|
/// </summary>
|
|
[Input("bitbucketBuildPath")]
|
|
public Input<string>? BitbucketBuildPath { get; set; }
|
|
|
|
/// <summary>
|
|
/// ID of the configured Bitbucket provider connection.
|
|
/// </summary>
|
|
[Input("bitbucketId")]
|
|
public Input<string>? BitbucketId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bitbucket repository owner.
|
|
/// </summary>
|
|
[Input("bitbucketOwner")]
|
|
public Input<string>? BitbucketOwner { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bitbucket repository name.
|
|
/// </summary>
|
|
[Input("bitbucketRepository")]
|
|
public Input<string>? BitbucketRepository { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bitbucket repository slug.
|
|
/// </summary>
|
|
[Input("bitbucketRepositorySlug")]
|
|
public Input<string>? BitbucketRepositorySlug { get; set; }
|
|
|
|
/// <summary>
|
|
/// GitHub branch to build.
|
|
/// </summary>
|
|
[Input("branch")]
|
|
public Input<string>? Branch { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker build arguments in `KEY=value` format, one per line.
|
|
/// </summary>
|
|
[Input("buildArgs")]
|
|
public Input<string>? BuildArgs { get; set; }
|
|
|
|
/// <summary>
|
|
/// Path within the GitHub repository to build from.
|
|
/// </summary>
|
|
[Input("buildPath")]
|
|
public Input<string>? BuildPath { get; set; }
|
|
|
|
/// <summary>
|
|
/// Registry used by a dedicated build server.
|
|
/// </summary>
|
|
[Input("buildRegistryId")]
|
|
public Input<string>? BuildRegistryId { get; set; }
|
|
|
|
[Input("buildSecrets")]
|
|
private Input<string>? _buildSecrets;
|
|
|
|
/// <summary>
|
|
/// Docker build secrets in `KEY=value` format, one per line.
|
|
/// </summary>
|
|
public Input<string>? BuildSecrets
|
|
{
|
|
get => _buildSecrets;
|
|
set
|
|
{
|
|
var emptySecret = Output.CreateSecret(0);
|
|
_buildSecrets = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Server that performs builds, when separate from the deploy server.
|
|
/// </summary>
|
|
[Input("buildServerId")]
|
|
public Input<string>? BuildServerId { get; set; }
|
|
|
|
/// <summary>
|
|
/// How the application is built. Valid values: `Dockerfile`, `HerokuBuildpacks`, `PaketoBuildpacks`, `Nixpacks`, `Static`, `Railpack`.
|
|
/// </summary>
|
|
[Input("buildType")]
|
|
public Input<string>? BuildType { get; set; }
|
|
|
|
/// <summary>
|
|
/// Discard the build cache on the next deployment.
|
|
/// </summary>
|
|
[Input("cleanCache")]
|
|
public Input<bool>? CleanCache { get; set; }
|
|
|
|
/// <summary>
|
|
/// Override the container entrypoint command.
|
|
/// </summary>
|
|
[Input("command")]
|
|
public Input<string>? Command { get; set; }
|
|
|
|
/// <summary>
|
|
/// Hard CPU limit, for example `1`.
|
|
/// </summary>
|
|
[Input("cpuLimit")]
|
|
public Input<string>? CpuLimit { get; set; }
|
|
|
|
/// <summary>
|
|
/// Soft CPU reservation, for example `0.5`.
|
|
/// </summary>
|
|
[Input("cpuReservation")]
|
|
public Input<string>? CpuReservation { get; set; }
|
|
|
|
/// <summary>
|
|
/// Write the environment variables to a `.env` file in the container.
|
|
/// </summary>
|
|
[Input("createEnvFile")]
|
|
public Input<bool>? CreateEnvFile { get; set; }
|
|
|
|
/// <summary>
|
|
/// Branch to build for a custom Git remote.
|
|
/// </summary>
|
|
[Input("customGitBranch")]
|
|
public Input<string>? CustomGitBranch { get; set; }
|
|
|
|
/// <summary>
|
|
/// Path within a custom Git repository to build from.
|
|
/// </summary>
|
|
[Input("customGitBuildPath")]
|
|
public Input<string>? CustomGitBuildPath { get; set; }
|
|
|
|
/// <summary>
|
|
/// SSH key used to clone a private custom Git remote.
|
|
/// </summary>
|
|
[Input("customGitSshKeyId")]
|
|
public Input<string>? CustomGitSshKeyId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Git remote URL, when `SourceType` is `Git`.
|
|
/// </summary>
|
|
[Input("customGitUrl")]
|
|
public Input<string>? CustomGitUrl { get; set; }
|
|
|
|
/// <summary>
|
|
/// Free-form description.
|
|
/// </summary>
|
|
[Input("description")]
|
|
public Input<string>? Description { get; set; }
|
|
|
|
/// <summary>
|
|
/// Detach the service from the shared `dokploy-network`.
|
|
/// </summary>
|
|
[Input("detachDokployNetwork")]
|
|
public Input<bool>? DetachDokployNetwork { get; set; }
|
|
|
|
/// <summary>
|
|
/// Target stage for a multi-stage Docker build.
|
|
/// </summary>
|
|
[Input("dockerBuildStage")]
|
|
public Input<string>? DockerBuildStage { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker build context path.
|
|
/// </summary>
|
|
[Input("dockerContextPath")]
|
|
public Input<string>? DockerContextPath { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker image reference, when `SourceType` is `Docker`.
|
|
/// </summary>
|
|
[Input("dockerImage")]
|
|
public Input<string>? DockerImage { get; set; }
|
|
|
|
/// <summary>
|
|
/// Path to the Dockerfile, when `BuildType` is `Dockerfile`.
|
|
/// </summary>
|
|
[Input("dockerfile")]
|
|
public Input<string>? Dockerfile { get; set; }
|
|
|
|
/// <summary>
|
|
/// Clone Git submodules when checking out the repository.
|
|
/// </summary>
|
|
[Input("enableSubmodules")]
|
|
public Input<bool>? EnableSubmodules { get; set; }
|
|
|
|
/// <summary>
|
|
/// Whether the application is enabled.
|
|
/// </summary>
|
|
[Input("enabled")]
|
|
public Input<bool>? Enabled { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker Swarm endpoint specification, as a JSON object.
|
|
/// </summary>
|
|
[Input("endpointSpecSwarm")]
|
|
public Input<string>? EndpointSpecSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Runtime environment variables in `KEY=value` format, one per line.
|
|
/// </summary>
|
|
[Input("env")]
|
|
public Input<string>? Env { get; set; }
|
|
|
|
/// <summary>
|
|
/// Environment this application belongs to.
|
|
/// </summary>
|
|
[Input("environmentId", required: true)]
|
|
public Input<string> EnvironmentId { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Gitea branch to build.
|
|
/// </summary>
|
|
[Input("giteaBranch")]
|
|
public Input<string>? GiteaBranch { get; set; }
|
|
|
|
/// <summary>
|
|
/// Path within the Gitea repository to build from.
|
|
/// </summary>
|
|
[Input("giteaBuildPath")]
|
|
public Input<string>? GiteaBuildPath { get; set; }
|
|
|
|
/// <summary>
|
|
/// ID of the configured Gitea provider connection.
|
|
/// </summary>
|
|
[Input("giteaId")]
|
|
public Input<string>? GiteaId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gitea repository owner.
|
|
/// </summary>
|
|
[Input("giteaOwner")]
|
|
public Input<string>? GiteaOwner { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gitea repository name.
|
|
/// </summary>
|
|
[Input("giteaRepository")]
|
|
public Input<string>? GiteaRepository { get; set; }
|
|
|
|
/// <summary>
|
|
/// ID of the configured GitHub provider connection.
|
|
/// </summary>
|
|
[Input("githubId")]
|
|
public Input<string>? GithubId { get; set; }
|
|
|
|
/// <summary>
|
|
/// GitLab branch to build.
|
|
/// </summary>
|
|
[Input("gitlabBranch")]
|
|
public Input<string>? GitlabBranch { get; set; }
|
|
|
|
/// <summary>
|
|
/// Path within the GitLab repository to build from.
|
|
/// </summary>
|
|
[Input("gitlabBuildPath")]
|
|
public Input<string>? GitlabBuildPath { get; set; }
|
|
|
|
/// <summary>
|
|
/// ID of the configured GitLab provider connection.
|
|
/// </summary>
|
|
[Input("gitlabId")]
|
|
public Input<string>? GitlabId { get; set; }
|
|
|
|
/// <summary>
|
|
/// GitLab repository owner.
|
|
/// </summary>
|
|
[Input("gitlabOwner")]
|
|
public Input<string>? GitlabOwner { get; set; }
|
|
|
|
/// <summary>
|
|
/// Full GitLab namespace path.
|
|
/// </summary>
|
|
[Input("gitlabPathNamespace")]
|
|
public Input<string>? GitlabPathNamespace { get; set; }
|
|
|
|
/// <summary>
|
|
/// Numeric GitLab project ID.
|
|
/// </summary>
|
|
[Input("gitlabProjectId")]
|
|
public Input<int>? GitlabProjectId { get; set; }
|
|
|
|
/// <summary>
|
|
/// GitLab repository name.
|
|
/// </summary>
|
|
[Input("gitlabRepository")]
|
|
public Input<string>? GitlabRepository { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker Swarm health check configuration, as a JSON object.
|
|
/// </summary>
|
|
[Input("healthCheckSwarm")]
|
|
public Input<string>? HealthCheckSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Heroku buildpack stack version.
|
|
/// </summary>
|
|
[Input("herokuVersion")]
|
|
public Input<string>? HerokuVersion { get; set; }
|
|
|
|
/// <summary>
|
|
/// Build a preview deployment for each pull request.
|
|
/// </summary>
|
|
[Input("isPreviewDeploymentsActive")]
|
|
public Input<bool>? IsPreviewDeploymentsActive { get; set; }
|
|
|
|
/// <summary>
|
|
/// Serve a static build as a single-page application.
|
|
/// </summary>
|
|
[Input("isStaticSpa")]
|
|
public Input<bool>? IsStaticSpa { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker Swarm service labels, as a JSON object.
|
|
/// </summary>
|
|
[Input("labelsSwarm")]
|
|
public Input<string>? LabelsSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Hard memory limit, for example `512m`.
|
|
/// </summary>
|
|
[Input("memoryLimit")]
|
|
public Input<string>? MemoryLimit { get; set; }
|
|
|
|
/// <summary>
|
|
/// Soft memory reservation, for example `256m`.
|
|
/// </summary>
|
|
[Input("memoryReservation")]
|
|
public Input<string>? MemoryReservation { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker Swarm service mode, as a JSON object.
|
|
/// </summary>
|
|
[Input("modeSwarm")]
|
|
public Input<string>? ModeSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Display name of the application.
|
|
/// </summary>
|
|
[Input("name")]
|
|
public Input<string>? Name { get; set; }
|
|
|
|
[Input("networkIds")]
|
|
private InputList<string>? _networkIds;
|
|
|
|
/// <summary>
|
|
/// IDs of additional Docker networks to attach.
|
|
/// </summary>
|
|
public InputList<string> NetworkIds
|
|
{
|
|
get => _networkIds ?? (_networkIds = new InputList<string>());
|
|
set => _networkIds = value;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Docker Swarm network attachments, as a JSON array.
|
|
/// </summary>
|
|
[Input("networkSwarm")]
|
|
public Input<string>? NetworkSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// GitHub repository owner.
|
|
/// </summary>
|
|
[Input("owner")]
|
|
public Input<string>? Owner { get; set; }
|
|
|
|
[Input("password")]
|
|
private Input<string>? _password;
|
|
|
|
/// <summary>
|
|
/// Registry password, when pulling a private image.
|
|
/// </summary>
|
|
public Input<string>? Password
|
|
{
|
|
get => _password;
|
|
set
|
|
{
|
|
var emptySecret = Output.CreateSecret(0);
|
|
_password = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Docker Swarm placement constraints, as a JSON object.
|
|
/// </summary>
|
|
[Input("placementSwarm")]
|
|
public Input<string>? PlacementSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Build arguments applied to preview deployments.
|
|
/// </summary>
|
|
[Input("previewBuildArgs")]
|
|
public Input<string>? PreviewBuildArgs { get; set; }
|
|
|
|
[Input("previewBuildSecrets")]
|
|
private Input<string>? _previewBuildSecrets;
|
|
|
|
/// <summary>
|
|
/// Build secrets applied to preview deployments.
|
|
/// </summary>
|
|
public Input<string>? PreviewBuildSecrets
|
|
{
|
|
get => _previewBuildSecrets;
|
|
set
|
|
{
|
|
var emptySecret = Output.CreateSecret(0);
|
|
_previewBuildSecrets = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Certificate strategy for preview deployments. Valid values: `Letsencrypt`, `None`, `Custom`.
|
|
/// </summary>
|
|
[Input("previewCertificateType")]
|
|
public Input<string>? PreviewCertificateType { get; set; }
|
|
|
|
/// <summary>
|
|
/// Traefik certificate resolver for preview deployments.
|
|
/// </summary>
|
|
[Input("previewCustomCertResolver")]
|
|
public Input<string>? PreviewCustomCertResolver { get; set; }
|
|
|
|
/// <summary>
|
|
/// Environment variables applied to preview deployments.
|
|
/// </summary>
|
|
[Input("previewEnv")]
|
|
public Input<string>? PreviewEnv { get; set; }
|
|
|
|
/// <summary>
|
|
/// Serve preview deployments over HTTPS.
|
|
/// </summary>
|
|
[Input("previewHttps")]
|
|
public Input<bool>? PreviewHttps { get; set; }
|
|
|
|
[Input("previewLabels")]
|
|
private InputList<string>? _previewLabels;
|
|
|
|
/// <summary>
|
|
/// Pull request labels that opt into preview deployments.
|
|
/// </summary>
|
|
public InputList<string> PreviewLabels
|
|
{
|
|
get => _previewLabels ?? (_previewLabels = new InputList<string>());
|
|
set => _previewLabels = value;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Maximum number of concurrent preview deployments.
|
|
/// </summary>
|
|
[Input("previewLimit")]
|
|
public Input<int>? PreviewLimit { get; set; }
|
|
|
|
/// <summary>
|
|
/// Base path for preview deployments.
|
|
/// </summary>
|
|
[Input("previewPath")]
|
|
public Input<string>? PreviewPath { get; set; }
|
|
|
|
/// <summary>
|
|
/// Container port exposed by preview deployments.
|
|
/// </summary>
|
|
[Input("previewPort")]
|
|
public Input<int>? PreviewPort { get; set; }
|
|
|
|
/// <summary>
|
|
/// Wildcard domain used to expose preview deployments.
|
|
/// </summary>
|
|
[Input("previewWildcard")]
|
|
public Input<string>? PreviewWildcard { get; set; }
|
|
|
|
/// <summary>
|
|
/// Directory served when `BuildType` is `Static`.
|
|
/// </summary>
|
|
[Input("publishDirectory")]
|
|
public Input<string>? PublishDirectory { get; set; }
|
|
|
|
/// <summary>
|
|
/// Railpack version.
|
|
/// </summary>
|
|
[Input("railpackVersion")]
|
|
public Input<string>? RailpackVersion { get; set; }
|
|
|
|
/// <summary>
|
|
/// Registry used to push the built image.
|
|
/// </summary>
|
|
[Input("registryId")]
|
|
public Input<string>? RegistryId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Registry URL, when pulling a private image.
|
|
/// </summary>
|
|
[Input("registryUrl")]
|
|
public Input<string>? RegistryUrl { get; set; }
|
|
|
|
/// <summary>
|
|
/// Number of replicas to run.
|
|
/// </summary>
|
|
[Input("replicas")]
|
|
public Input<int>? Replicas { get; set; }
|
|
|
|
/// <summary>
|
|
/// GitHub repository name.
|
|
/// </summary>
|
|
[Input("repository")]
|
|
public Input<string>? Repository { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker Swarm restart policy, as a JSON object.
|
|
/// </summary>
|
|
[Input("restartPolicySwarm")]
|
|
public Input<string>? RestartPolicySwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Keep previous images so deployments can be rolled back.
|
|
/// </summary>
|
|
[Input("rollbackActive")]
|
|
public Input<bool>? RollbackActive { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker Swarm rollback configuration, as a JSON object.
|
|
/// </summary>
|
|
[Input("rollbackConfigSwarm")]
|
|
public Input<string>? RollbackConfigSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Registry used to store rollback images.
|
|
/// </summary>
|
|
[Input("rollbackRegistryId")]
|
|
public Input<string>? RollbackRegistryId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Remote server to deploy on. Omit to use the Dokploy host itself.
|
|
/// </summary>
|
|
[Input("serverId")]
|
|
public Input<string>? ServerId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Where the application's code or image comes from. Valid values: `Docker`, `Git`, `Github`, `Gitlab`, `Bitbucket`, `Gitea`, `Drop`.
|
|
/// </summary>
|
|
[Input("sourceType")]
|
|
public Input<string>? SourceType { get; set; }
|
|
|
|
/// <summary>
|
|
/// Grace period in nanoseconds before a container is killed.
|
|
/// </summary>
|
|
[Input("stopGracePeriodSwarm")]
|
|
public Input<int>? StopGracePeriodSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Display subtitle shown in the Dokploy UI.
|
|
/// </summary>
|
|
[Input("subtitle")]
|
|
public Input<string>? Subtitle { get; set; }
|
|
|
|
/// <summary>
|
|
/// Display title shown in the Dokploy UI.
|
|
/// </summary>
|
|
[Input("title")]
|
|
public Input<string>? Title { get; set; }
|
|
|
|
/// <summary>
|
|
/// What triggers an automatic GitHub deployment. Valid values: `Push`, `Tag`.
|
|
/// </summary>
|
|
[Input("triggerType")]
|
|
public Input<string>? TriggerType { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker Swarm ulimits, as a JSON object.
|
|
/// </summary>
|
|
[Input("ulimitsSwarm")]
|
|
public Input<string>? UlimitsSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker Swarm rolling update configuration, as a JSON object.
|
|
/// </summary>
|
|
[Input("updateConfigSwarm")]
|
|
public Input<string>? UpdateConfigSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Registry username, when pulling a private image.
|
|
/// </summary>
|
|
[Input("username")]
|
|
public Input<string>? Username { get; set; }
|
|
|
|
[Input("watchPaths")]
|
|
private InputList<string>? _watchPaths;
|
|
|
|
/// <summary>
|
|
/// Glob patterns that limit which changed paths trigger an automatic deployment.
|
|
/// </summary>
|
|
public InputList<string> WatchPaths
|
|
{
|
|
get => _watchPaths ?? (_watchPaths = new InputList<string>());
|
|
set => _watchPaths = value;
|
|
}
|
|
|
|
public ApplicationArgs()
|
|
{
|
|
}
|
|
public static new ApplicationArgs Empty => new ApplicationArgs();
|
|
}
|
|
|
|
public sealed class ApplicationState : global::Pulumi.ResourceArgs
|
|
{
|
|
/// <summary>
|
|
/// Unique Docker service name. Generated by Dokploy when omitted. Changing it forces a new application.
|
|
/// </summary>
|
|
[Input("appName")]
|
|
public Input<string>? AppName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Current status reported by Dokploy: `Idle`, `Running`, `Done` or `Error`.
|
|
/// </summary>
|
|
[Input("applicationStatus")]
|
|
public Input<string>? ApplicationStatus { get; set; }
|
|
|
|
[Input("args")]
|
|
private InputList<string>? _args;
|
|
|
|
/// <summary>
|
|
/// Arguments appended to the container command.
|
|
/// </summary>
|
|
public InputList<string> Args
|
|
{
|
|
get => _args ?? (_args = new InputList<string>());
|
|
set => _args = value;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Deploy automatically when the configured trigger fires.
|
|
/// </summary>
|
|
[Input("autoDeploy")]
|
|
public Input<bool>? AutoDeploy { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bitbucket branch to build.
|
|
/// </summary>
|
|
[Input("bitbucketBranch")]
|
|
public Input<string>? BitbucketBranch { get; set; }
|
|
|
|
/// <summary>
|
|
/// Path within the Bitbucket repository to build from.
|
|
/// </summary>
|
|
[Input("bitbucketBuildPath")]
|
|
public Input<string>? BitbucketBuildPath { get; set; }
|
|
|
|
/// <summary>
|
|
/// ID of the configured Bitbucket provider connection.
|
|
/// </summary>
|
|
[Input("bitbucketId")]
|
|
public Input<string>? BitbucketId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bitbucket repository owner.
|
|
/// </summary>
|
|
[Input("bitbucketOwner")]
|
|
public Input<string>? BitbucketOwner { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bitbucket repository name.
|
|
/// </summary>
|
|
[Input("bitbucketRepository")]
|
|
public Input<string>? BitbucketRepository { get; set; }
|
|
|
|
/// <summary>
|
|
/// Bitbucket repository slug.
|
|
/// </summary>
|
|
[Input("bitbucketRepositorySlug")]
|
|
public Input<string>? BitbucketRepositorySlug { get; set; }
|
|
|
|
/// <summary>
|
|
/// GitHub branch to build.
|
|
/// </summary>
|
|
[Input("branch")]
|
|
public Input<string>? Branch { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker build arguments in `KEY=value` format, one per line.
|
|
/// </summary>
|
|
[Input("buildArgs")]
|
|
public Input<string>? BuildArgs { get; set; }
|
|
|
|
/// <summary>
|
|
/// Path within the GitHub repository to build from.
|
|
/// </summary>
|
|
[Input("buildPath")]
|
|
public Input<string>? BuildPath { get; set; }
|
|
|
|
/// <summary>
|
|
/// Registry used by a dedicated build server.
|
|
/// </summary>
|
|
[Input("buildRegistryId")]
|
|
public Input<string>? BuildRegistryId { get; set; }
|
|
|
|
[Input("buildSecrets")]
|
|
private Input<string>? _buildSecrets;
|
|
|
|
/// <summary>
|
|
/// Docker build secrets in `KEY=value` format, one per line.
|
|
/// </summary>
|
|
public Input<string>? BuildSecrets
|
|
{
|
|
get => _buildSecrets;
|
|
set
|
|
{
|
|
var emptySecret = Output.CreateSecret(0);
|
|
_buildSecrets = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Server that performs builds, when separate from the deploy server.
|
|
/// </summary>
|
|
[Input("buildServerId")]
|
|
public Input<string>? BuildServerId { get; set; }
|
|
|
|
/// <summary>
|
|
/// How the application is built. Valid values: `Dockerfile`, `HerokuBuildpacks`, `PaketoBuildpacks`, `Nixpacks`, `Static`, `Railpack`.
|
|
/// </summary>
|
|
[Input("buildType")]
|
|
public Input<string>? BuildType { get; set; }
|
|
|
|
/// <summary>
|
|
/// Discard the build cache on the next deployment.
|
|
/// </summary>
|
|
[Input("cleanCache")]
|
|
public Input<bool>? CleanCache { get; set; }
|
|
|
|
/// <summary>
|
|
/// Override the container entrypoint command.
|
|
/// </summary>
|
|
[Input("command")]
|
|
public Input<string>? Command { get; set; }
|
|
|
|
/// <summary>
|
|
/// Hard CPU limit, for example `1`.
|
|
/// </summary>
|
|
[Input("cpuLimit")]
|
|
public Input<string>? CpuLimit { get; set; }
|
|
|
|
/// <summary>
|
|
/// Soft CPU reservation, for example `0.5`.
|
|
/// </summary>
|
|
[Input("cpuReservation")]
|
|
public Input<string>? CpuReservation { get; set; }
|
|
|
|
/// <summary>
|
|
/// Write the environment variables to a `.env` file in the container.
|
|
/// </summary>
|
|
[Input("createEnvFile")]
|
|
public Input<bool>? CreateEnvFile { get; set; }
|
|
|
|
/// <summary>
|
|
/// RFC 3339 timestamp of when the application was created.
|
|
/// </summary>
|
|
[Input("createdAt")]
|
|
public Input<string>? CreatedAt { get; set; }
|
|
|
|
/// <summary>
|
|
/// Branch to build for a custom Git remote.
|
|
/// </summary>
|
|
[Input("customGitBranch")]
|
|
public Input<string>? CustomGitBranch { get; set; }
|
|
|
|
/// <summary>
|
|
/// Path within a custom Git repository to build from.
|
|
/// </summary>
|
|
[Input("customGitBuildPath")]
|
|
public Input<string>? CustomGitBuildPath { get; set; }
|
|
|
|
/// <summary>
|
|
/// SSH key used to clone a private custom Git remote.
|
|
/// </summary>
|
|
[Input("customGitSshKeyId")]
|
|
public Input<string>? CustomGitSshKeyId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Git remote URL, when `SourceType` is `Git`.
|
|
/// </summary>
|
|
[Input("customGitUrl")]
|
|
public Input<string>? CustomGitUrl { get; set; }
|
|
|
|
/// <summary>
|
|
/// Free-form description.
|
|
/// </summary>
|
|
[Input("description")]
|
|
public Input<string>? Description { get; set; }
|
|
|
|
/// <summary>
|
|
/// Detach the service from the shared `dokploy-network`.
|
|
/// </summary>
|
|
[Input("detachDokployNetwork")]
|
|
public Input<bool>? DetachDokployNetwork { get; set; }
|
|
|
|
/// <summary>
|
|
/// Target stage for a multi-stage Docker build.
|
|
/// </summary>
|
|
[Input("dockerBuildStage")]
|
|
public Input<string>? DockerBuildStage { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker build context path.
|
|
/// </summary>
|
|
[Input("dockerContextPath")]
|
|
public Input<string>? DockerContextPath { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker image reference, when `SourceType` is `Docker`.
|
|
/// </summary>
|
|
[Input("dockerImage")]
|
|
public Input<string>? DockerImage { get; set; }
|
|
|
|
/// <summary>
|
|
/// Path to the Dockerfile, when `BuildType` is `Dockerfile`.
|
|
/// </summary>
|
|
[Input("dockerfile")]
|
|
public Input<string>? Dockerfile { get; set; }
|
|
|
|
/// <summary>
|
|
/// Clone Git submodules when checking out the repository.
|
|
/// </summary>
|
|
[Input("enableSubmodules")]
|
|
public Input<bool>? EnableSubmodules { get; set; }
|
|
|
|
/// <summary>
|
|
/// Whether the application is enabled.
|
|
/// </summary>
|
|
[Input("enabled")]
|
|
public Input<bool>? Enabled { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker Swarm endpoint specification, as a JSON object.
|
|
/// </summary>
|
|
[Input("endpointSpecSwarm")]
|
|
public Input<string>? EndpointSpecSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Runtime environment variables in `KEY=value` format, one per line.
|
|
/// </summary>
|
|
[Input("env")]
|
|
public Input<string>? Env { get; set; }
|
|
|
|
/// <summary>
|
|
/// Environment this application belongs to.
|
|
/// </summary>
|
|
[Input("environmentId")]
|
|
public Input<string>? EnvironmentId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gitea branch to build.
|
|
/// </summary>
|
|
[Input("giteaBranch")]
|
|
public Input<string>? GiteaBranch { get; set; }
|
|
|
|
/// <summary>
|
|
/// Path within the Gitea repository to build from.
|
|
/// </summary>
|
|
[Input("giteaBuildPath")]
|
|
public Input<string>? GiteaBuildPath { get; set; }
|
|
|
|
/// <summary>
|
|
/// ID of the configured Gitea provider connection.
|
|
/// </summary>
|
|
[Input("giteaId")]
|
|
public Input<string>? GiteaId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gitea repository owner.
|
|
/// </summary>
|
|
[Input("giteaOwner")]
|
|
public Input<string>? GiteaOwner { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gitea repository name.
|
|
/// </summary>
|
|
[Input("giteaRepository")]
|
|
public Input<string>? GiteaRepository { get; set; }
|
|
|
|
/// <summary>
|
|
/// ID of the configured GitHub provider connection.
|
|
/// </summary>
|
|
[Input("githubId")]
|
|
public Input<string>? GithubId { get; set; }
|
|
|
|
/// <summary>
|
|
/// GitLab branch to build.
|
|
/// </summary>
|
|
[Input("gitlabBranch")]
|
|
public Input<string>? GitlabBranch { get; set; }
|
|
|
|
/// <summary>
|
|
/// Path within the GitLab repository to build from.
|
|
/// </summary>
|
|
[Input("gitlabBuildPath")]
|
|
public Input<string>? GitlabBuildPath { get; set; }
|
|
|
|
/// <summary>
|
|
/// ID of the configured GitLab provider connection.
|
|
/// </summary>
|
|
[Input("gitlabId")]
|
|
public Input<string>? GitlabId { get; set; }
|
|
|
|
/// <summary>
|
|
/// GitLab repository owner.
|
|
/// </summary>
|
|
[Input("gitlabOwner")]
|
|
public Input<string>? GitlabOwner { get; set; }
|
|
|
|
/// <summary>
|
|
/// Full GitLab namespace path.
|
|
/// </summary>
|
|
[Input("gitlabPathNamespace")]
|
|
public Input<string>? GitlabPathNamespace { get; set; }
|
|
|
|
/// <summary>
|
|
/// Numeric GitLab project ID.
|
|
/// </summary>
|
|
[Input("gitlabProjectId")]
|
|
public Input<int>? GitlabProjectId { get; set; }
|
|
|
|
/// <summary>
|
|
/// GitLab repository name.
|
|
/// </summary>
|
|
[Input("gitlabRepository")]
|
|
public Input<string>? GitlabRepository { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker Swarm health check configuration, as a JSON object.
|
|
/// </summary>
|
|
[Input("healthCheckSwarm")]
|
|
public Input<string>? HealthCheckSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Heroku buildpack stack version.
|
|
/// </summary>
|
|
[Input("herokuVersion")]
|
|
public Input<string>? HerokuVersion { get; set; }
|
|
|
|
/// <summary>
|
|
/// Build a preview deployment for each pull request.
|
|
/// </summary>
|
|
[Input("isPreviewDeploymentsActive")]
|
|
public Input<bool>? IsPreviewDeploymentsActive { get; set; }
|
|
|
|
/// <summary>
|
|
/// Serve a static build as a single-page application.
|
|
/// </summary>
|
|
[Input("isStaticSpa")]
|
|
public Input<bool>? IsStaticSpa { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker Swarm service labels, as a JSON object.
|
|
/// </summary>
|
|
[Input("labelsSwarm")]
|
|
public Input<string>? LabelsSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Hard memory limit, for example `512m`.
|
|
/// </summary>
|
|
[Input("memoryLimit")]
|
|
public Input<string>? MemoryLimit { get; set; }
|
|
|
|
/// <summary>
|
|
/// Soft memory reservation, for example `256m`.
|
|
/// </summary>
|
|
[Input("memoryReservation")]
|
|
public Input<string>? MemoryReservation { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker Swarm service mode, as a JSON object.
|
|
/// </summary>
|
|
[Input("modeSwarm")]
|
|
public Input<string>? ModeSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Display name of the application.
|
|
/// </summary>
|
|
[Input("name")]
|
|
public Input<string>? Name { get; set; }
|
|
|
|
[Input("networkIds")]
|
|
private InputList<string>? _networkIds;
|
|
|
|
/// <summary>
|
|
/// IDs of additional Docker networks to attach.
|
|
/// </summary>
|
|
public InputList<string> NetworkIds
|
|
{
|
|
get => _networkIds ?? (_networkIds = new InputList<string>());
|
|
set => _networkIds = value;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Docker Swarm network attachments, as a JSON array.
|
|
/// </summary>
|
|
[Input("networkSwarm")]
|
|
public Input<string>? NetworkSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// GitHub repository owner.
|
|
/// </summary>
|
|
[Input("owner")]
|
|
public Input<string>? Owner { get; set; }
|
|
|
|
[Input("password")]
|
|
private Input<string>? _password;
|
|
|
|
/// <summary>
|
|
/// Registry password, when pulling a private image.
|
|
/// </summary>
|
|
public Input<string>? Password
|
|
{
|
|
get => _password;
|
|
set
|
|
{
|
|
var emptySecret = Output.CreateSecret(0);
|
|
_password = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Docker Swarm placement constraints, as a JSON object.
|
|
/// </summary>
|
|
[Input("placementSwarm")]
|
|
public Input<string>? PlacementSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Build arguments applied to preview deployments.
|
|
/// </summary>
|
|
[Input("previewBuildArgs")]
|
|
public Input<string>? PreviewBuildArgs { get; set; }
|
|
|
|
[Input("previewBuildSecrets")]
|
|
private Input<string>? _previewBuildSecrets;
|
|
|
|
/// <summary>
|
|
/// Build secrets applied to preview deployments.
|
|
/// </summary>
|
|
public Input<string>? PreviewBuildSecrets
|
|
{
|
|
get => _previewBuildSecrets;
|
|
set
|
|
{
|
|
var emptySecret = Output.CreateSecret(0);
|
|
_previewBuildSecrets = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Certificate strategy for preview deployments. Valid values: `Letsencrypt`, `None`, `Custom`.
|
|
/// </summary>
|
|
[Input("previewCertificateType")]
|
|
public Input<string>? PreviewCertificateType { get; set; }
|
|
|
|
/// <summary>
|
|
/// Traefik certificate resolver for preview deployments.
|
|
/// </summary>
|
|
[Input("previewCustomCertResolver")]
|
|
public Input<string>? PreviewCustomCertResolver { get; set; }
|
|
|
|
/// <summary>
|
|
/// Environment variables applied to preview deployments.
|
|
/// </summary>
|
|
[Input("previewEnv")]
|
|
public Input<string>? PreviewEnv { get; set; }
|
|
|
|
/// <summary>
|
|
/// Serve preview deployments over HTTPS.
|
|
/// </summary>
|
|
[Input("previewHttps")]
|
|
public Input<bool>? PreviewHttps { get; set; }
|
|
|
|
[Input("previewLabels")]
|
|
private InputList<string>? _previewLabels;
|
|
|
|
/// <summary>
|
|
/// Pull request labels that opt into preview deployments.
|
|
/// </summary>
|
|
public InputList<string> PreviewLabels
|
|
{
|
|
get => _previewLabels ?? (_previewLabels = new InputList<string>());
|
|
set => _previewLabels = value;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Maximum number of concurrent preview deployments.
|
|
/// </summary>
|
|
[Input("previewLimit")]
|
|
public Input<int>? PreviewLimit { get; set; }
|
|
|
|
/// <summary>
|
|
/// Base path for preview deployments.
|
|
/// </summary>
|
|
[Input("previewPath")]
|
|
public Input<string>? PreviewPath { get; set; }
|
|
|
|
/// <summary>
|
|
/// Container port exposed by preview deployments.
|
|
/// </summary>
|
|
[Input("previewPort")]
|
|
public Input<int>? PreviewPort { get; set; }
|
|
|
|
/// <summary>
|
|
/// Wildcard domain used to expose preview deployments.
|
|
/// </summary>
|
|
[Input("previewWildcard")]
|
|
public Input<string>? PreviewWildcard { get; set; }
|
|
|
|
/// <summary>
|
|
/// Directory served when `BuildType` is `Static`.
|
|
/// </summary>
|
|
[Input("publishDirectory")]
|
|
public Input<string>? PublishDirectory { get; set; }
|
|
|
|
/// <summary>
|
|
/// Railpack version.
|
|
/// </summary>
|
|
[Input("railpackVersion")]
|
|
public Input<string>? RailpackVersion { get; set; }
|
|
|
|
/// <summary>
|
|
/// Registry used to push the built image.
|
|
/// </summary>
|
|
[Input("registryId")]
|
|
public Input<string>? RegistryId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Registry URL, when pulling a private image.
|
|
/// </summary>
|
|
[Input("registryUrl")]
|
|
public Input<string>? RegistryUrl { get; set; }
|
|
|
|
/// <summary>
|
|
/// Number of replicas to run.
|
|
/// </summary>
|
|
[Input("replicas")]
|
|
public Input<int>? Replicas { get; set; }
|
|
|
|
/// <summary>
|
|
/// GitHub repository name.
|
|
/// </summary>
|
|
[Input("repository")]
|
|
public Input<string>? Repository { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker Swarm restart policy, as a JSON object.
|
|
/// </summary>
|
|
[Input("restartPolicySwarm")]
|
|
public Input<string>? RestartPolicySwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Keep previous images so deployments can be rolled back.
|
|
/// </summary>
|
|
[Input("rollbackActive")]
|
|
public Input<bool>? RollbackActive { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker Swarm rollback configuration, as a JSON object.
|
|
/// </summary>
|
|
[Input("rollbackConfigSwarm")]
|
|
public Input<string>? RollbackConfigSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Registry used to store rollback images.
|
|
/// </summary>
|
|
[Input("rollbackRegistryId")]
|
|
public Input<string>? RollbackRegistryId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Remote server to deploy on. Omit to use the Dokploy host itself.
|
|
/// </summary>
|
|
[Input("serverId")]
|
|
public Input<string>? ServerId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Where the application's code or image comes from. Valid values: `Docker`, `Git`, `Github`, `Gitlab`, `Bitbucket`, `Gitea`, `Drop`.
|
|
/// </summary>
|
|
[Input("sourceType")]
|
|
public Input<string>? SourceType { get; set; }
|
|
|
|
/// <summary>
|
|
/// Grace period in nanoseconds before a container is killed.
|
|
/// </summary>
|
|
[Input("stopGracePeriodSwarm")]
|
|
public Input<int>? StopGracePeriodSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Display subtitle shown in the Dokploy UI.
|
|
/// </summary>
|
|
[Input("subtitle")]
|
|
public Input<string>? Subtitle { get; set; }
|
|
|
|
/// <summary>
|
|
/// Display title shown in the Dokploy UI.
|
|
/// </summary>
|
|
[Input("title")]
|
|
public Input<string>? Title { get; set; }
|
|
|
|
/// <summary>
|
|
/// What triggers an automatic GitHub deployment. Valid values: `Push`, `Tag`.
|
|
/// </summary>
|
|
[Input("triggerType")]
|
|
public Input<string>? TriggerType { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker Swarm ulimits, as a JSON object.
|
|
/// </summary>
|
|
[Input("ulimitsSwarm")]
|
|
public Input<string>? UlimitsSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Docker Swarm rolling update configuration, as a JSON object.
|
|
/// </summary>
|
|
[Input("updateConfigSwarm")]
|
|
public Input<string>? UpdateConfigSwarm { get; set; }
|
|
|
|
/// <summary>
|
|
/// Registry username, when pulling a private image.
|
|
/// </summary>
|
|
[Input("username")]
|
|
public Input<string>? Username { get; set; }
|
|
|
|
[Input("watchPaths")]
|
|
private InputList<string>? _watchPaths;
|
|
|
|
/// <summary>
|
|
/// Glob patterns that limit which changed paths trigger an automatic deployment.
|
|
/// </summary>
|
|
public InputList<string> WatchPaths
|
|
{
|
|
get => _watchPaths ?? (_watchPaths = new InputList<string>());
|
|
set => _watchPaths = value;
|
|
}
|
|
|
|
public ApplicationState()
|
|
{
|
|
}
|
|
public static new ApplicationState Empty => new ApplicationState();
|
|
}
|
|
}
|