com.pulumi.gitlab.kotlin.ProjectArgs.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pulumi-gitlab-kotlin Show documentation
Show all versions of pulumi-gitlab-kotlin Show documentation
Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.
@file:Suppress("NAME_SHADOWING", "DEPRECATION")
package com.pulumi.gitlab.kotlin
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gitlab.ProjectArgs.builder
import com.pulumi.gitlab.kotlin.inputs.ProjectContainerExpirationPolicyArgs
import com.pulumi.gitlab.kotlin.inputs.ProjectContainerExpirationPolicyArgsBuilder
import com.pulumi.gitlab.kotlin.inputs.ProjectPushRulesArgs
import com.pulumi.gitlab.kotlin.inputs.ProjectPushRulesArgsBuilder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.Deprecated
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName
/**
* ## Example Usage
* ## Import
* ```sh
* $ pulumi import gitlab:index/project:Project You can import a project state using ` `. The
* ```
* `id` can be whatever the [get single project api][get_single_project] takes for
* its `:id` value, so for example:
* ```sh
* $ pulumi import gitlab:index/project:Project example richardc/example
* ```
* NOTE: the `import_url_username` and `import_url_password` cannot be imported.
* @property allowMergeOnSkippedPipeline Set to true if you want to treat skipped pipelines as if they finished with success.
* @property analyticsAccessLevel Set the analytics access level. Valid values are `disabled`, `private`, `enabled`.
* @property approvalsBeforeMerge Number of merge request approvals required for merging. Default is 0.
* This field **does not** work well in combination with the `gitlab.ProjectApprovalRule` resource
* and is most likely gonna be deprecated in a future GitLab version (see [this upstream epic](https://gitlab.com/groups/gitlab-org/-/epics/7572)).
* In the meantime we recommend against using this attribute and use `gitlab.ProjectApprovalRule` instead.
* @property archiveOnDestroy Set to `true` to archive the project instead of deleting on destroy. If set to `true` it will entire omit the `DELETE` operation.
* @property archived Whether the project is in read-only mode (archived). Repositories can be archived/unarchived by toggling this parameter.
* @property autoCancelPendingPipelines Auto-cancel pending pipelines. This isn’t a boolean, but enabled/disabled.
* @property autoDevopsDeployStrategy Auto Deploy strategy. Valid values are `continuous`, `manual`, `timed_incremental`.
* @property autoDevopsEnabled Enable Auto DevOps for this project.
* @property autocloseReferencedIssues Set whether auto-closing referenced issues on default branch.
* @property avatar A local path to the avatar image to upload. **Note**: not available for imported resources.
* @property avatarHash The hash of the avatar image. Use `filesha256("path/to/avatar.png")` whenever possible. **Note**: this is used to trigger an update of the avatar. If it's not given, but an avatar is given, the avatar will be updated each time.
* @property buildCoverageRegex Test coverage parsing for the project. This is deprecated feature in GitLab 15.0.
* @property buildGitStrategy The Git strategy. Defaults to fetch. Valid values are `clone`, `fetch`.
* @property buildTimeout The maximum amount of time, in seconds, that a job can run.
* @property buildsAccessLevel Set the builds access level. Valid values are `disabled`, `private`, `enabled`.
* @property ciConfigPath Custom Path to CI config file.
* @property ciDefaultGitDepth Default number of revisions for shallow cloning.
* @property ciForwardDeploymentEnabled When a new deployment job starts, skip older deployment jobs that are still pending.
* @property ciRestrictPipelineCancellationRole The role required to cancel a pipeline or job. Introduced in GitLab 16.8. Premium and Ultimate only. Valid values are `developer`, `maintainer`, `no one`
* @property ciSeparatedCaches Use separate caches for protected branches.
* @property containerExpirationPolicy Set the image cleanup policy for this project. **Note**: this field is sometimes named `container_expiration_policy_attributes` in the GitLab Upstream API.
* @property containerRegistryAccessLevel Set visibility of container registry, for this project. Valid values are `disabled`, `private`, `enabled`.
* @property containerRegistryEnabled Enable container registry for the project.
* @property defaultBranch The default branch for the project.
* @property description A description of the project.
* @property emailsEnabled Enable email notifications.
* @property environmentsAccessLevel Set the environments access level. Valid values are `disabled`, `private`, `enabled`.
* @property externalAuthorizationClassificationLabel The classification label for the project.
* @property featureFlagsAccessLevel Set the feature flags access level. Valid values are `disabled`, `private`, `enabled`.
* @property forkedFromProjectId The id of the project to fork. During create the project is forked and during an update the fork relation is changed.
* @property forkingAccessLevel Set the forking access level. Valid values are `disabled`, `private`, `enabled`.
* @property groupRunnersEnabled Enable group runners for this project.
* @property groupWithProjectTemplatesId For group-level custom templates, specifies ID of group from which all the custom project templates are sourced. Leave empty for instance-level templates. Requires use*custom*template to be true (enterprise edition).
* @property importUrl Git URL to a repository to be imported. Together with `mirror = true` it will setup a Pull Mirror. This can also be used together with `forked_from_project_id` to setup a Pull Mirror for a fork. The fork takes precedence over the import. Make sure to provide the credentials in `import_url_username` and `import_url_password`. GitLab never returns the credentials, thus the provider cannot detect configuration drift in the credentials. They can also not be imported using `pulumi import`. See the examples section for how to properly use it.
* @property importUrlPassword The password for the `import_url`. The value of this field is used to construct a valid `import_url` and is only related to the provider. This field cannot be imported using `pulumi import`. See the examples section for how to properly use it.
* @property importUrlUsername The username for the `import_url`. The value of this field is used to construct a valid `import_url` and is only related to the provider. This field cannot be imported using `pulumi import`. See the examples section for how to properly use it.
* @property infrastructureAccessLevel Set the infrastructure access level. Valid values are `disabled`, `private`, `enabled`.
* @property initializeWithReadme Create main branch with first commit containing a README.md file. Must be set to `true` if importing an uninitialized project with a different `default_branch`.
* @property issuesAccessLevel Set the issues access level. Valid values are `disabled`, `private`, `enabled`.
* @property issuesEnabled Enable issue tracking for the project.
* @property issuesTemplate Sets the template for new issues in the project.
* @property keepLatestArtifact Disable or enable the ability to keep the latest artifact for this project.
* @property lfsEnabled Enable LFS for the project.
* @property mergeCommitTemplate Template used to create merge commit message in merge requests. (Introduced in GitLab 14.5.)
* @property mergeMethod Set the merge method. Valid values are `merge`, `rebase_merge`, `ff`.
* @property mergePipelinesEnabled Enable or disable merge pipelines.
* @property mergeRequestsAccessLevel Set the merge requests access level. Valid values are `disabled`, `private`, `enabled`.
* @property mergeRequestsEnabled Enable merge requests for the project.
* @property mergeRequestsTemplate Sets the template for new merge requests in the project.
* @property mergeTrainsEnabled Enable or disable merge trains. Requires `merge_pipelines_enabled` to be set to `true` to take effect.
* @property mirror Enable project pull mirror.
* @property mirrorOverwritesDivergedBranches Enable overwrite diverged branches for a mirrored project.
* @property mirrorTriggerBuilds Enable trigger builds on pushes for a mirrored project.
* @property monitorAccessLevel Set the monitor access level. Valid values are `disabled`, `private`, `enabled`.
* @property mrDefaultTargetSelf For forked projects, target merge requests to this project. If false, the target will be the upstream project.
* @property name The name of the project.
* @property namespaceId The namespace (group or user) of the project. Defaults to your user.
* @property onlyAllowMergeIfAllDiscussionsAreResolved Set to true if you want allow merges only if all discussions are resolved.
* @property onlyAllowMergeIfPipelineSucceeds Set to true if you want allow merges only if a pipeline succeeds.
* @property onlyMirrorProtectedBranches Enable only mirror protected branches for a mirrored project.
* @property packagesEnabled Enable packages repository for the project.
* @property pagesAccessLevel Enable pages access control. Valid values are `public`, `private`, `enabled`, `disabled`.
* @property path The path of the repository.
* @property pipelinesEnabled Enable pipelines for the project. The `pipelines_enabled` field is being sent as `jobs_enabled` in the GitLab API calls.
* @property printingMergeRequestLinkEnabled Show link to create/view merge request when pushing from the command line
* @property publicBuilds If true, jobs can be viewed by non-project members.
* @property publicJobs If true, jobs can be viewed by non-project members.
* @property pushRules Push rules for the project.
* @property releasesAccessLevel Set the releases access level. Valid values are `disabled`, `private`, `enabled`.
* @property removeSourceBranchAfterMerge Enable `Delete source branch` option by default for all new merge requests.
* @property repositoryAccessLevel Set the repository access level. Valid values are `disabled`, `private`, `enabled`.
* @property repositoryStorage Which storage shard the repository is on. (administrator only)
* @property requestAccessEnabled Allow users to request member access.
* @property requirementsAccessLevel Set the requirements access level. Valid values are `disabled`, `private`, `enabled`.
* @property resolveOutdatedDiffDiscussions Automatically resolve merge request diffs discussions on lines changed with a push.
* @property restrictUserDefinedVariables Allow only users with the Maintainer role to pass user-defined variables when triggering a pipeline.
* @property securityAndComplianceAccessLevel Set the security and compliance access level. Valid values are `disabled`, `private`, `enabled`.
* @property sharedRunnersEnabled Enable shared runners for this project.
* @property skipWaitForDefaultBranchProtection If `true`, the default behavior to wait for the default branch protection to be created is skipped.
* This is necessary if the current user is not an admin and the default branch protection is disabled on an instance-level.
* There is currently no known way to determine if the default branch protection is disabled on an instance-level for non-admin users.
* This attribute is only used during resource creation, thus changes are suppressed and the attribute cannot be imported.
* @property snippetsAccessLevel Set the snippets access level. Valid values are `disabled`, `private`, `enabled`.
* @property snippetsEnabled Enable snippets for the project.
* @property squashCommitTemplate Template used to create squash commit message in merge requests. (Introduced in GitLab 14.6.)
* @property squashOption Squash commits when merge request. Valid values are `never`, `always`, `default_on`, or `default_off`. The default value is `default_off`. [GitLab >= 14.1]
* @property suggestionCommitMessage The commit message used to apply merge request suggestions.
* @property tags The list of tags for a project; put array of tags, that should be finally assigned to a project. Use topics instead.
* @property templateName When used without use*custom*template, name of a built-in project template. When used with use*custom*template, name of a custom project template. This option is mutually exclusive with `template_project_id`.
* @property templateProjectId When used with use*custom*template, project ID of a custom project template. This is preferable to using template*name since template*name may be ambiguous (enterprise edition). This option is mutually exclusive with `template_name`. See `gitlab.GroupProjectFileTemplate` to set a project as a template project. If a project has not been set as a template, using it here will result in an error.
* @property topics The list of topics for the project.
* @property useCustomTemplate Use either custom instance or group (with group*with*project*templates*id) project template (enterprise edition).
* > When using a custom template, [Group Tokens won't work](https://docs.gitlab.com/15.7/ee/user/project/settings/import_export_troubleshooting.html#import-using-the-rest-api-fails-when-using-a-group-access-token). You must use a real user's Personal Access Token.
* @property visibilityLevel Set to `public` to create a public project. Valid values are `private`, `internal`, `public`.
* @property wikiAccessLevel Set the wiki access level. Valid values are `disabled`, `private`, `enabled`.
* @property wikiEnabled Enable wiki for the project.
*/
public data class ProjectArgs(
public val allowMergeOnSkippedPipeline: Output? = null,
public val analyticsAccessLevel: Output? = null,
public val approvalsBeforeMerge: Output? = null,
public val archiveOnDestroy: Output? = null,
public val archived: Output? = null,
public val autoCancelPendingPipelines: Output? = null,
public val autoDevopsDeployStrategy: Output? = null,
public val autoDevopsEnabled: Output? = null,
public val autocloseReferencedIssues: Output? = null,
public val avatar: Output? = null,
public val avatarHash: Output? = null,
@Deprecated(
message = """
build_coverage_regex is removed in GitLab 15.0.
""",
)
public val buildCoverageRegex: Output? = null,
public val buildGitStrategy: Output? = null,
public val buildTimeout: Output? = null,
public val buildsAccessLevel: Output? = null,
public val ciConfigPath: Output? = null,
public val ciDefaultGitDepth: Output? = null,
public val ciForwardDeploymentEnabled: Output? = null,
public val ciRestrictPipelineCancellationRole: Output? = null,
public val ciSeparatedCaches: Output? = null,
public val containerExpirationPolicy: Output? = null,
public val containerRegistryAccessLevel: Output? = null,
@Deprecated(
message = """
Use `container_registry_access_level` instead.
""",
)
public val containerRegistryEnabled: Output? = null,
public val defaultBranch: Output? = null,
public val description: Output? = null,
public val emailsEnabled: Output? = null,
public val environmentsAccessLevel: Output? = null,
public val externalAuthorizationClassificationLabel: Output? = null,
public val featureFlagsAccessLevel: Output? = null,
public val forkedFromProjectId: Output? = null,
public val forkingAccessLevel: Output? = null,
public val groupRunnersEnabled: Output? = null,
public val groupWithProjectTemplatesId: Output? = null,
public val importUrl: Output? = null,
public val importUrlPassword: Output? = null,
public val importUrlUsername: Output? = null,
public val infrastructureAccessLevel: Output? = null,
public val initializeWithReadme: Output? = null,
public val issuesAccessLevel: Output? = null,
public val issuesEnabled: Output? = null,
public val issuesTemplate: Output? = null,
public val keepLatestArtifact: Output? = null,
public val lfsEnabled: Output? = null,
public val mergeCommitTemplate: Output? = null,
public val mergeMethod: Output? = null,
public val mergePipelinesEnabled: Output? = null,
public val mergeRequestsAccessLevel: Output? = null,
public val mergeRequestsEnabled: Output? = null,
public val mergeRequestsTemplate: Output? = null,
public val mergeTrainsEnabled: Output? = null,
public val mirror: Output? = null,
public val mirrorOverwritesDivergedBranches: Output? = null,
public val mirrorTriggerBuilds: Output? = null,
public val monitorAccessLevel: Output? = null,
public val mrDefaultTargetSelf: Output? = null,
public val name: Output? = null,
public val namespaceId: Output? = null,
public val onlyAllowMergeIfAllDiscussionsAreResolved: Output? = null,
public val onlyAllowMergeIfPipelineSucceeds: Output? = null,
public val onlyMirrorProtectedBranches: Output? = null,
public val packagesEnabled: Output? = null,
public val pagesAccessLevel: Output? = null,
public val path: Output? = null,
@Deprecated(
message = """
Deprecated in favor of `builds_access_level`
""",
)
public val pipelinesEnabled: Output? = null,
public val printingMergeRequestLinkEnabled: Output? = null,
@Deprecated(
message = """
The `public_builds` attribute has been deprecated in favor of `public_jobs` and will be removed in
the next major version of the provider.
""",
)
public val publicBuilds: Output? = null,
public val publicJobs: Output? = null,
public val pushRules: Output? = null,
public val releasesAccessLevel: Output? = null,
public val removeSourceBranchAfterMerge: Output? = null,
public val repositoryAccessLevel: Output? = null,
public val repositoryStorage: Output? = null,
public val requestAccessEnabled: Output? = null,
public val requirementsAccessLevel: Output? = null,
public val resolveOutdatedDiffDiscussions: Output? = null,
public val restrictUserDefinedVariables: Output? = null,
public val securityAndComplianceAccessLevel: Output? = null,
public val sharedRunnersEnabled: Output? = null,
public val skipWaitForDefaultBranchProtection: Output? = null,
public val snippetsAccessLevel: Output? = null,
public val snippetsEnabled: Output? = null,
public val squashCommitTemplate: Output? = null,
public val squashOption: Output? = null,
public val suggestionCommitMessage: Output? = null,
public val tags: Output>? = null,
public val templateName: Output? = null,
public val templateProjectId: Output? = null,
public val topics: Output>? = null,
public val useCustomTemplate: Output? = null,
public val visibilityLevel: Output? = null,
public val wikiAccessLevel: Output? = null,
public val wikiEnabled: Output? = null,
) : ConvertibleToJava {
override fun toJava(): com.pulumi.gitlab.ProjectArgs = com.pulumi.gitlab.ProjectArgs.builder()
.allowMergeOnSkippedPipeline(allowMergeOnSkippedPipeline?.applyValue({ args0 -> args0 }))
.analyticsAccessLevel(analyticsAccessLevel?.applyValue({ args0 -> args0 }))
.approvalsBeforeMerge(approvalsBeforeMerge?.applyValue({ args0 -> args0 }))
.archiveOnDestroy(archiveOnDestroy?.applyValue({ args0 -> args0 }))
.archived(archived?.applyValue({ args0 -> args0 }))
.autoCancelPendingPipelines(autoCancelPendingPipelines?.applyValue({ args0 -> args0 }))
.autoDevopsDeployStrategy(autoDevopsDeployStrategy?.applyValue({ args0 -> args0 }))
.autoDevopsEnabled(autoDevopsEnabled?.applyValue({ args0 -> args0 }))
.autocloseReferencedIssues(autocloseReferencedIssues?.applyValue({ args0 -> args0 }))
.avatar(avatar?.applyValue({ args0 -> args0 }))
.avatarHash(avatarHash?.applyValue({ args0 -> args0 }))
.buildCoverageRegex(buildCoverageRegex?.applyValue({ args0 -> args0 }))
.buildGitStrategy(buildGitStrategy?.applyValue({ args0 -> args0 }))
.buildTimeout(buildTimeout?.applyValue({ args0 -> args0 }))
.buildsAccessLevel(buildsAccessLevel?.applyValue({ args0 -> args0 }))
.ciConfigPath(ciConfigPath?.applyValue({ args0 -> args0 }))
.ciDefaultGitDepth(ciDefaultGitDepth?.applyValue({ args0 -> args0 }))
.ciForwardDeploymentEnabled(ciForwardDeploymentEnabled?.applyValue({ args0 -> args0 }))
.ciRestrictPipelineCancellationRole(
ciRestrictPipelineCancellationRole?.applyValue({ args0 ->
args0
}),
)
.ciSeparatedCaches(ciSeparatedCaches?.applyValue({ args0 -> args0 }))
.containerExpirationPolicy(
containerExpirationPolicy?.applyValue({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
}),
)
.containerRegistryAccessLevel(containerRegistryAccessLevel?.applyValue({ args0 -> args0 }))
.containerRegistryEnabled(containerRegistryEnabled?.applyValue({ args0 -> args0 }))
.defaultBranch(defaultBranch?.applyValue({ args0 -> args0 }))
.description(description?.applyValue({ args0 -> args0 }))
.emailsEnabled(emailsEnabled?.applyValue({ args0 -> args0 }))
.environmentsAccessLevel(environmentsAccessLevel?.applyValue({ args0 -> args0 }))
.externalAuthorizationClassificationLabel(
externalAuthorizationClassificationLabel?.applyValue({ args0 ->
args0
}),
)
.featureFlagsAccessLevel(featureFlagsAccessLevel?.applyValue({ args0 -> args0 }))
.forkedFromProjectId(forkedFromProjectId?.applyValue({ args0 -> args0 }))
.forkingAccessLevel(forkingAccessLevel?.applyValue({ args0 -> args0 }))
.groupRunnersEnabled(groupRunnersEnabled?.applyValue({ args0 -> args0 }))
.groupWithProjectTemplatesId(groupWithProjectTemplatesId?.applyValue({ args0 -> args0 }))
.importUrl(importUrl?.applyValue({ args0 -> args0 }))
.importUrlPassword(importUrlPassword?.applyValue({ args0 -> args0 }))
.importUrlUsername(importUrlUsername?.applyValue({ args0 -> args0 }))
.infrastructureAccessLevel(infrastructureAccessLevel?.applyValue({ args0 -> args0 }))
.initializeWithReadme(initializeWithReadme?.applyValue({ args0 -> args0 }))
.issuesAccessLevel(issuesAccessLevel?.applyValue({ args0 -> args0 }))
.issuesEnabled(issuesEnabled?.applyValue({ args0 -> args0 }))
.issuesTemplate(issuesTemplate?.applyValue({ args0 -> args0 }))
.keepLatestArtifact(keepLatestArtifact?.applyValue({ args0 -> args0 }))
.lfsEnabled(lfsEnabled?.applyValue({ args0 -> args0 }))
.mergeCommitTemplate(mergeCommitTemplate?.applyValue({ args0 -> args0 }))
.mergeMethod(mergeMethod?.applyValue({ args0 -> args0 }))
.mergePipelinesEnabled(mergePipelinesEnabled?.applyValue({ args0 -> args0 }))
.mergeRequestsAccessLevel(mergeRequestsAccessLevel?.applyValue({ args0 -> args0 }))
.mergeRequestsEnabled(mergeRequestsEnabled?.applyValue({ args0 -> args0 }))
.mergeRequestsTemplate(mergeRequestsTemplate?.applyValue({ args0 -> args0 }))
.mergeTrainsEnabled(mergeTrainsEnabled?.applyValue({ args0 -> args0 }))
.mirror(mirror?.applyValue({ args0 -> args0 }))
.mirrorOverwritesDivergedBranches(mirrorOverwritesDivergedBranches?.applyValue({ args0 -> args0 }))
.mirrorTriggerBuilds(mirrorTriggerBuilds?.applyValue({ args0 -> args0 }))
.monitorAccessLevel(monitorAccessLevel?.applyValue({ args0 -> args0 }))
.mrDefaultTargetSelf(mrDefaultTargetSelf?.applyValue({ args0 -> args0 }))
.name(name?.applyValue({ args0 -> args0 }))
.namespaceId(namespaceId?.applyValue({ args0 -> args0 }))
.onlyAllowMergeIfAllDiscussionsAreResolved(
onlyAllowMergeIfAllDiscussionsAreResolved?.applyValue({ args0 ->
args0
}),
)
.onlyAllowMergeIfPipelineSucceeds(onlyAllowMergeIfPipelineSucceeds?.applyValue({ args0 -> args0 }))
.onlyMirrorProtectedBranches(onlyMirrorProtectedBranches?.applyValue({ args0 -> args0 }))
.packagesEnabled(packagesEnabled?.applyValue({ args0 -> args0 }))
.pagesAccessLevel(pagesAccessLevel?.applyValue({ args0 -> args0 }))
.path(path?.applyValue({ args0 -> args0 }))
.pipelinesEnabled(pipelinesEnabled?.applyValue({ args0 -> args0 }))
.printingMergeRequestLinkEnabled(printingMergeRequestLinkEnabled?.applyValue({ args0 -> args0 }))
.publicBuilds(publicBuilds?.applyValue({ args0 -> args0 }))
.publicJobs(publicJobs?.applyValue({ args0 -> args0 }))
.pushRules(pushRules?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
.releasesAccessLevel(releasesAccessLevel?.applyValue({ args0 -> args0 }))
.removeSourceBranchAfterMerge(removeSourceBranchAfterMerge?.applyValue({ args0 -> args0 }))
.repositoryAccessLevel(repositoryAccessLevel?.applyValue({ args0 -> args0 }))
.repositoryStorage(repositoryStorage?.applyValue({ args0 -> args0 }))
.requestAccessEnabled(requestAccessEnabled?.applyValue({ args0 -> args0 }))
.requirementsAccessLevel(requirementsAccessLevel?.applyValue({ args0 -> args0 }))
.resolveOutdatedDiffDiscussions(resolveOutdatedDiffDiscussions?.applyValue({ args0 -> args0 }))
.restrictUserDefinedVariables(restrictUserDefinedVariables?.applyValue({ args0 -> args0 }))
.securityAndComplianceAccessLevel(securityAndComplianceAccessLevel?.applyValue({ args0 -> args0 }))
.sharedRunnersEnabled(sharedRunnersEnabled?.applyValue({ args0 -> args0 }))
.skipWaitForDefaultBranchProtection(
skipWaitForDefaultBranchProtection?.applyValue({ args0 ->
args0
}),
)
.snippetsAccessLevel(snippetsAccessLevel?.applyValue({ args0 -> args0 }))
.snippetsEnabled(snippetsEnabled?.applyValue({ args0 -> args0 }))
.squashCommitTemplate(squashCommitTemplate?.applyValue({ args0 -> args0 }))
.squashOption(squashOption?.applyValue({ args0 -> args0 }))
.suggestionCommitMessage(suggestionCommitMessage?.applyValue({ args0 -> args0 }))
.tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
.templateName(templateName?.applyValue({ args0 -> args0 }))
.templateProjectId(templateProjectId?.applyValue({ args0 -> args0 }))
.topics(topics?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
.useCustomTemplate(useCustomTemplate?.applyValue({ args0 -> args0 }))
.visibilityLevel(visibilityLevel?.applyValue({ args0 -> args0 }))
.wikiAccessLevel(wikiAccessLevel?.applyValue({ args0 -> args0 }))
.wikiEnabled(wikiEnabled?.applyValue({ args0 -> args0 })).build()
}
/**
* Builder for [ProjectArgs].
*/
@PulumiTagMarker
public class ProjectArgsBuilder internal constructor() {
private var allowMergeOnSkippedPipeline: Output? = null
private var analyticsAccessLevel: Output? = null
private var approvalsBeforeMerge: Output? = null
private var archiveOnDestroy: Output? = null
private var archived: Output? = null
private var autoCancelPendingPipelines: Output? = null
private var autoDevopsDeployStrategy: Output? = null
private var autoDevopsEnabled: Output? = null
private var autocloseReferencedIssues: Output? = null
private var avatar: Output? = null
private var avatarHash: Output? = null
private var buildCoverageRegex: Output? = null
private var buildGitStrategy: Output? = null
private var buildTimeout: Output? = null
private var buildsAccessLevel: Output? = null
private var ciConfigPath: Output? = null
private var ciDefaultGitDepth: Output? = null
private var ciForwardDeploymentEnabled: Output? = null
private var ciRestrictPipelineCancellationRole: Output? = null
private var ciSeparatedCaches: Output? = null
private var containerExpirationPolicy: Output? = null
private var containerRegistryAccessLevel: Output? = null
private var containerRegistryEnabled: Output? = null
private var defaultBranch: Output? = null
private var description: Output? = null
private var emailsEnabled: Output? = null
private var environmentsAccessLevel: Output? = null
private var externalAuthorizationClassificationLabel: Output? = null
private var featureFlagsAccessLevel: Output? = null
private var forkedFromProjectId: Output? = null
private var forkingAccessLevel: Output? = null
private var groupRunnersEnabled: Output? = null
private var groupWithProjectTemplatesId: Output? = null
private var importUrl: Output? = null
private var importUrlPassword: Output? = null
private var importUrlUsername: Output? = null
private var infrastructureAccessLevel: Output? = null
private var initializeWithReadme: Output? = null
private var issuesAccessLevel: Output? = null
private var issuesEnabled: Output? = null
private var issuesTemplate: Output? = null
private var keepLatestArtifact: Output? = null
private var lfsEnabled: Output? = null
private var mergeCommitTemplate: Output? = null
private var mergeMethod: Output? = null
private var mergePipelinesEnabled: Output? = null
private var mergeRequestsAccessLevel: Output? = null
private var mergeRequestsEnabled: Output? = null
private var mergeRequestsTemplate: Output? = null
private var mergeTrainsEnabled: Output? = null
private var mirror: Output? = null
private var mirrorOverwritesDivergedBranches: Output? = null
private var mirrorTriggerBuilds: Output? = null
private var monitorAccessLevel: Output? = null
private var mrDefaultTargetSelf: Output? = null
private var name: Output? = null
private var namespaceId: Output? = null
private var onlyAllowMergeIfAllDiscussionsAreResolved: Output? = null
private var onlyAllowMergeIfPipelineSucceeds: Output? = null
private var onlyMirrorProtectedBranches: Output? = null
private var packagesEnabled: Output? = null
private var pagesAccessLevel: Output? = null
private var path: Output? = null
private var pipelinesEnabled: Output? = null
private var printingMergeRequestLinkEnabled: Output? = null
private var publicBuilds: Output? = null
private var publicJobs: Output? = null
private var pushRules: Output? = null
private var releasesAccessLevel: Output? = null
private var removeSourceBranchAfterMerge: Output? = null
private var repositoryAccessLevel: Output? = null
private var repositoryStorage: Output? = null
private var requestAccessEnabled: Output? = null
private var requirementsAccessLevel: Output? = null
private var resolveOutdatedDiffDiscussions: Output? = null
private var restrictUserDefinedVariables: Output? = null
private var securityAndComplianceAccessLevel: Output? = null
private var sharedRunnersEnabled: Output? = null
private var skipWaitForDefaultBranchProtection: Output? = null
private var snippetsAccessLevel: Output? = null
private var snippetsEnabled: Output? = null
private var squashCommitTemplate: Output? = null
private var squashOption: Output? = null
private var suggestionCommitMessage: Output? = null
private var tags: Output>? = null
private var templateName: Output? = null
private var templateProjectId: Output? = null
private var topics: Output>? = null
private var useCustomTemplate: Output? = null
private var visibilityLevel: Output? = null
private var wikiAccessLevel: Output? = null
private var wikiEnabled: Output? = null
/**
* @param value Set to true if you want to treat skipped pipelines as if they finished with success.
*/
@JvmName("rtnakxmyevopbsac")
public suspend fun allowMergeOnSkippedPipeline(`value`: Output) {
this.allowMergeOnSkippedPipeline = value
}
/**
* @param value Set the analytics access level. Valid values are `disabled`, `private`, `enabled`.
*/
@JvmName("xwwvcubibpvojryr")
public suspend fun analyticsAccessLevel(`value`: Output) {
this.analyticsAccessLevel = value
}
/**
* @param value Number of merge request approvals required for merging. Default is 0.
* This field **does not** work well in combination with the `gitlab.ProjectApprovalRule` resource
* and is most likely gonna be deprecated in a future GitLab version (see [this upstream epic](https://gitlab.com/groups/gitlab-org/-/epics/7572)).
* In the meantime we recommend against using this attribute and use `gitlab.ProjectApprovalRule` instead.
*/
@JvmName("kgycukoleapxmugh")
public suspend fun approvalsBeforeMerge(`value`: Output) {
this.approvalsBeforeMerge = value
}
/**
* @param value Set to `true` to archive the project instead of deleting on destroy. If set to `true` it will entire omit the `DELETE` operation.
*/
@JvmName("mmjohvrygxpsrori")
public suspend fun archiveOnDestroy(`value`: Output) {
this.archiveOnDestroy = value
}
/**
* @param value Whether the project is in read-only mode (archived). Repositories can be archived/unarchived by toggling this parameter.
*/
@JvmName("otblflruxtqxwrmp")
public suspend fun archived(`value`: Output) {
this.archived = value
}
/**
* @param value Auto-cancel pending pipelines. This isn’t a boolean, but enabled/disabled.
*/
@JvmName("wpivqmbklohtqqvo")
public suspend fun autoCancelPendingPipelines(`value`: Output) {
this.autoCancelPendingPipelines = value
}
/**
* @param value Auto Deploy strategy. Valid values are `continuous`, `manual`, `timed_incremental`.
*/
@JvmName("ktrusaqpfojbupif")
public suspend fun autoDevopsDeployStrategy(`value`: Output) {
this.autoDevopsDeployStrategy = value
}
/**
* @param value Enable Auto DevOps for this project.
*/
@JvmName("qwewjpmtfcalsxuo")
public suspend fun autoDevopsEnabled(`value`: Output) {
this.autoDevopsEnabled = value
}
/**
* @param value Set whether auto-closing referenced issues on default branch.
*/
@JvmName("lydihrirqtpmmkij")
public suspend fun autocloseReferencedIssues(`value`: Output) {
this.autocloseReferencedIssues = value
}
/**
* @param value A local path to the avatar image to upload. **Note**: not available for imported resources.
*/
@JvmName("rnypatksgcncsulg")
public suspend fun avatar(`value`: Output) {
this.avatar = value
}
/**
* @param value The hash of the avatar image. Use `filesha256("path/to/avatar.png")` whenever possible. **Note**: this is used to trigger an update of the avatar. If it's not given, but an avatar is given, the avatar will be updated each time.
*/
@JvmName("udeuqgitcltddxql")
public suspend fun avatarHash(`value`: Output) {
this.avatarHash = value
}
/**
* @param value Test coverage parsing for the project. This is deprecated feature in GitLab 15.0.
*/
@Deprecated(
message = """
build_coverage_regex is removed in GitLab 15.0.
""",
)
@JvmName("ncutvlxklklerdqq")
public suspend fun buildCoverageRegex(`value`: Output) {
this.buildCoverageRegex = value
}
/**
* @param value The Git strategy. Defaults to fetch. Valid values are `clone`, `fetch`.
*/
@JvmName("uatwiucnuuggjxpk")
public suspend fun buildGitStrategy(`value`: Output) {
this.buildGitStrategy = value
}
/**
* @param value The maximum amount of time, in seconds, that a job can run.
*/
@JvmName("rcsyxmisaamslktr")
public suspend fun buildTimeout(`value`: Output) {
this.buildTimeout = value
}
/**
* @param value Set the builds access level. Valid values are `disabled`, `private`, `enabled`.
*/
@JvmName("gswyctdssmgirdcj")
public suspend fun buildsAccessLevel(`value`: Output) {
this.buildsAccessLevel = value
}
/**
* @param value Custom Path to CI config file.
*/
@JvmName("ovjahvdpojiimspa")
public suspend fun ciConfigPath(`value`: Output) {
this.ciConfigPath = value
}
/**
* @param value Default number of revisions for shallow cloning.
*/
@JvmName("djjmihlormtsxwqp")
public suspend fun ciDefaultGitDepth(`value`: Output) {
this.ciDefaultGitDepth = value
}
/**
* @param value When a new deployment job starts, skip older deployment jobs that are still pending.
*/
@JvmName("urxibmcugroecbdp")
public suspend fun ciForwardDeploymentEnabled(`value`: Output) {
this.ciForwardDeploymentEnabled = value
}
/**
* @param value The role required to cancel a pipeline or job. Introduced in GitLab 16.8. Premium and Ultimate only. Valid values are `developer`, `maintainer`, `no one`
*/
@JvmName("eeuvrymvndkxefnb")
public suspend fun ciRestrictPipelineCancellationRole(`value`: Output) {
this.ciRestrictPipelineCancellationRole = value
}
/**
* @param value Use separate caches for protected branches.
*/
@JvmName("wqgukjbkrbvphsku")
public suspend fun ciSeparatedCaches(`value`: Output) {
this.ciSeparatedCaches = value
}
/**
* @param value Set the image cleanup policy for this project. **Note**: this field is sometimes named `container_expiration_policy_attributes` in the GitLab Upstream API.
*/
@JvmName("kowsoyftlupucdtk")
public suspend fun containerExpirationPolicy(`value`: Output) {
this.containerExpirationPolicy = value
}
/**
* @param value Set visibility of container registry, for this project. Valid values are `disabled`, `private`, `enabled`.
*/
@JvmName("bfhpefdhmatgopsv")
public suspend fun containerRegistryAccessLevel(`value`: Output) {
this.containerRegistryAccessLevel = value
}
/**
* @param value Enable container registry for the project.
*/
@Deprecated(
message = """
Use `container_registry_access_level` instead.
""",
)
@JvmName("goctdobcgwklussu")
public suspend fun containerRegistryEnabled(`value`: Output) {
this.containerRegistryEnabled = value
}
/**
* @param value The default branch for the project.
*/
@JvmName("peldphlcyjfotsrv")
public suspend fun defaultBranch(`value`: Output) {
this.defaultBranch = value
}
/**
* @param value A description of the project.
*/
@JvmName("xosbruieoutkiupj")
public suspend fun description(`value`: Output) {
this.description = value
}
/**
* @param value Enable email notifications.
*/
@JvmName("okdjkbxhoujlpgum")
public suspend fun emailsEnabled(`value`: Output) {
this.emailsEnabled = value
}
/**
* @param value Set the environments access level. Valid values are `disabled`, `private`, `enabled`.
*/
@JvmName("lnarpafilnxxhttb")
public suspend fun environmentsAccessLevel(`value`: Output) {
this.environmentsAccessLevel = value
}
/**
* @param value The classification label for the project.
*/
@JvmName("xgwfophmrxtqqdft")
public suspend fun externalAuthorizationClassificationLabel(`value`: Output) {
this.externalAuthorizationClassificationLabel = value
}
/**
* @param value Set the feature flags access level. Valid values are `disabled`, `private`, `enabled`.
*/
@JvmName("poyysjvyysrrsbve")
public suspend fun featureFlagsAccessLevel(`value`: Output) {
this.featureFlagsAccessLevel = value
}
/**
* @param value The id of the project to fork. During create the project is forked and during an update the fork relation is changed.
*/
@JvmName("hvjyetktodrhakhd")
public suspend fun forkedFromProjectId(`value`: Output) {
this.forkedFromProjectId = value
}
/**
* @param value Set the forking access level. Valid values are `disabled`, `private`, `enabled`.
*/
@JvmName("pflvihwaggupobdb")
public suspend fun forkingAccessLevel(`value`: Output) {
this.forkingAccessLevel = value
}
/**
* @param value Enable group runners for this project.
*/
@JvmName("ijnajpyipepxwasw")
public suspend fun groupRunnersEnabled(`value`: Output) {
this.groupRunnersEnabled = value
}
/**
* @param value For group-level custom templates, specifies ID of group from which all the custom project templates are sourced. Leave empty for instance-level templates. Requires use*custom*template to be true (enterprise edition).
*/
@JvmName("cxaeptcbiarddmqm")
public suspend fun groupWithProjectTemplatesId(`value`: Output) {
this.groupWithProjectTemplatesId = value
}
/**
* @param value Git URL to a repository to be imported. Together with `mirror = true` it will setup a Pull Mirror. This can also be used together with `forked_from_project_id` to setup a Pull Mirror for a fork. The fork takes precedence over the import. Make sure to provide the credentials in `import_url_username` and `import_url_password`. GitLab never returns the credentials, thus the provider cannot detect configuration drift in the credentials. They can also not be imported using `pulumi import`. See the examples section for how to properly use it.
*/
@JvmName("yjnmhresnywwdgpb")
public suspend fun importUrl(`value`: Output) {
this.importUrl = value
}
/**
* @param value The password for the `import_url`. The value of this field is used to construct a valid `import_url` and is only related to the provider. This field cannot be imported using `pulumi import`. See the examples section for how to properly use it.
*/
@JvmName("gasrysyvsqyybsca")
public suspend fun importUrlPassword(`value`: Output) {
this.importUrlPassword = value
}
/**
* @param value The username for the `import_url`. The value of this field is used to construct a valid `import_url` and is only related to the provider. This field cannot be imported using `pulumi import`. See the examples section for how to properly use it.
*/
@JvmName("nudgcwkvsomaectp")
public suspend fun importUrlUsername(`value`: Output) {
this.importUrlUsername = value
}
/**
* @param value Set the infrastructure access level. Valid values are `disabled`, `private`, `enabled`.
*/
@JvmName("eyrfmiujaocbymiv")
public suspend fun infrastructureAccessLevel(`value`: Output) {
this.infrastructureAccessLevel = value
}
/**
* @param value Create main branch with first commit containing a README.md file. Must be set to `true` if importing an uninitialized project with a different `default_branch`.
*/
@JvmName("dbgxmdmayaadolyc")
public suspend fun initializeWithReadme(`value`: Output) {
this.initializeWithReadme = value
}
/**
* @param value Set the issues access level. Valid values are `disabled`, `private`, `enabled`.
*/
@JvmName("smrkmyrkyyauedto")
public suspend fun issuesAccessLevel(`value`: Output) {
this.issuesAccessLevel = value
}
/**
* @param value Enable issue tracking for the project.
*/
@JvmName("qkpbvruqrevmknha")
public suspend fun issuesEnabled(`value`: Output) {
this.issuesEnabled = value
}
/**
* @param value Sets the template for new issues in the project.
*/
@JvmName("ewpxreacalybwhim")
public suspend fun issuesTemplate(`value`: Output) {
this.issuesTemplate = value
}
/**
* @param value Disable or enable the ability to keep the latest artifact for this project.
*/
@JvmName("vemwkkuxxablnfwh")
public suspend fun keepLatestArtifact(`value`: Output) {
this.keepLatestArtifact = value
}
/**
* @param value Enable LFS for the project.
*/
@JvmName("iurbglnamvqqvatm")
public suspend fun lfsEnabled(`value`: Output) {
this.lfsEnabled = value
}
/**
* @param value Template used to create merge commit message in merge requests. (Introduced in GitLab 14.5.)
*/
@JvmName("dmngfxuoekoftawb")
public suspend fun mergeCommitTemplate(`value`: Output) {
this.mergeCommitTemplate = value
}
/**
* @param value Set the merge method. Valid values are `merge`, `rebase_merge`, `ff`.
*/
@JvmName("vewngtlmxkemlkjv")
public suspend fun mergeMethod(`value`: Output) {
this.mergeMethod = value
}
/**
* @param value Enable or disable merge pipelines.
*/
@JvmName("gogxyuagfuamugko")
public suspend fun mergePipelinesEnabled(`value`: Output) {
this.mergePipelinesEnabled = value
}
/**
* @param value Set the merge requests access level. Valid values are `disabled`, `private`, `enabled`.
*/
@JvmName("fomirigaaljtfxxl")
public suspend fun mergeRequestsAccessLevel(`value`: Output) {
this.mergeRequestsAccessLevel = value
}
/**
* @param value Enable merge requests for the project.
*/
@JvmName("ktnjgyidtrulndfl")
public suspend fun mergeRequestsEnabled(`value`: Output) {
this.mergeRequestsEnabled = value
}
/**
* @param value Sets the template for new merge requests in the project.
*/
@JvmName("ybobtbylcuwobsrq")
public suspend fun mergeRequestsTemplate(`value`: Output) {
this.mergeRequestsTemplate = value
}
/**
* @param value Enable or disable merge trains. Requires `merge_pipelines_enabled` to be set to `true` to take effect.
*/
@JvmName("psetrihjvkougutl")
public suspend fun mergeTrainsEnabled(`value`: Output) {
this.mergeTrainsEnabled = value
}
/**
* @param value Enable project pull mirror.
*/
@JvmName("hhyhuoanggrfgypg")
public suspend fun mirror(`value`: Output) {
this.mirror = value
}
/**
* @param value Enable overwrite diverged branches for a mirrored project.
*/
@JvmName("xatvuabgwgfanyui")
public suspend fun mirrorOverwritesDivergedBranches(`value`: Output) {
this.mirrorOverwritesDivergedBranches = value
}
/**
* @param value Enable trigger builds on pushes for a mirrored project.
*/
@JvmName("jbboebrvpnojtbql")
public suspend fun mirrorTriggerBuilds(`value`: Output) {
this.mirrorTriggerBuilds = value
}
/**
* @param value Set the monitor access level. Valid values are `disabled`, `private`, `enabled`.
*/
@JvmName("eslhdxyttwlpsrlv")
public suspend fun monitorAccessLevel(`value`: Output) {
this.monitorAccessLevel = value
}
/**
* @param value For forked projects, target merge requests to this project. If false, the target will be the upstream project.
*/
@JvmName("acbivhtxgefvjmnc")
public suspend fun mrDefaultTargetSelf(`value`: Output) {
this.mrDefaultTargetSelf = value
}
/**
* @param value The name of the project.
*/
@JvmName("dhdxinmcefbqnuuk")
public suspend fun name(`value`: Output) {
this.name = value
}
/**
* @param value The namespace (group or user) of the project. Defaults to your user.
*/
@JvmName("ukorvfstbmucycwn")
public suspend fun namespaceId(`value`: Output) {
this.namespaceId = value
}
/**
* @param value Set to true if you want allow merges only if all discussions are resolved.
*/
@JvmName("swyqsvnpraodukdv")
public suspend fun onlyAllowMergeIfAllDiscussionsAreResolved(`value`: Output) {
this.onlyAllowMergeIfAllDiscussionsAreResolved = value
}
/**
* @param value Set to true if you want allow merges only if a pipeline succeeds.
*/
@JvmName("kvwnbbegbxoymdam")
public suspend fun onlyAllowMergeIfPipelineSucceeds(`value`: Output) {
this.onlyAllowMergeIfPipelineSucceeds = value
}
/**
* @param value Enable only mirror protected branches for a mirrored project.
*/
@JvmName("hgprnakxvesnwcjg")
public suspend fun onlyMirrorProtectedBranches(`value`: Output) {
this.onlyMirrorProtectedBranches = value
}
/**
* @param value Enable packages repository for the project.
*/
@JvmName("peffbrftxinpipqc")
public suspend fun packagesEnabled(`value`: Output) {
this.packagesEnabled = value
}
/**
* @param value Enable pages access control. Valid values are `public`, `private`, `enabled`, `disabled`.
*/
@JvmName("hpfeilgwlibysphw")
public suspend fun pagesAccessLevel(`value`: Output) {
this.pagesAccessLevel = value
}
/**
* @param value The path of the repository.
*/
@JvmName("whsmbnqkjgohexon")
public suspend fun path(`value`: Output) {
this.path = value
}
/**
* @param value Enable pipelines for the project. The `pipelines_enabled` field is being sent as `jobs_enabled` in the GitLab API calls.
*/
@Deprecated(
message = """
Deprecated in favor of `builds_access_level`
""",
)
@JvmName("pibnfsjyulrsqmgy")
public suspend fun pipelinesEnabled(`value`: Output) {
this.pipelinesEnabled = value
}
/**
* @param value Show link to create/view merge request when pushing from the command line
*/
@JvmName("oslahfrcgpvkgabg")
public suspend fun printingMergeRequestLinkEnabled(`value`: Output