Project Security Policy Attachment
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as gitlab from "@pulumi/gitlab";
// This resource can be used to attach a security policy to a pre-existing project
const foo = new gitlab.ProjectSecurityPolicyAttachment("foo", {
project: "1234",
policyProject: "4567",
});
// Or Terraform can create a new project, add a policy to that project,
// then attach that policy project to other projects.
const my_policy_project = new gitlab.Project("my-policy-project", {name: "security-policy-project"});
const policy_yml = new gitlab.RepositoryFile("policy-yml", {
project: my_policy_project.id,
filePath: ".gitlab/security-policies/my-policy.yml",
branch: "master",
encoding: "text",
content: `---
approval_policy:
- name: test
description: test
enabled: true
rules:
- type: any_merge_request
branch_type: protected
commits: any
approval_settings:
block_branch_modification: true
prevent_pushing_and_force_pushing: true
prevent_approval_by_author: true
prevent_approval_by_commit_author: true
remove_approvals_with_new_commit: true
require_password_to_approve: false
fallback_behavior:
fail: closed
actions:
- type: send_bot_message
enabled: true
`,
});
// Multiple policies can be attached to a single project by repeating this resource or using a `for_each`
const my_policy = new gitlab.ProjectSecurityPolicyAttachment("my-policy", {
project: "1234",
policyProject: my_policy_project.id,
});
Content copied to clipboard
import pulumi
import pulumi_gitlab as gitlab
# This resource can be used to attach a security policy to a pre-existing project
foo = gitlab.ProjectSecurityPolicyAttachment("foo",
project="1234",
policy_project="4567")
# Or Terraform can create a new project, add a policy to that project,
# then attach that policy project to other projects.
my_policy_project = gitlab.Project("my-policy-project", name="security-policy-project")
policy_yml = gitlab.RepositoryFile("policy-yml",
project=my_policy_project.id,
file_path=".gitlab/security-policies/my-policy.yml",
branch="master",
encoding="text",
content="""---
approval_policy:
- name: test
description: test
enabled: true
rules:
- type: any_merge_request
branch_type: protected
commits: any
approval_settings:
block_branch_modification: true
prevent_pushing_and_force_pushing: true
prevent_approval_by_author: true
prevent_approval_by_commit_author: true
remove_approvals_with_new_commit: true
require_password_to_approve: false
fallback_behavior:
fail: closed
actions:
- type: send_bot_message
enabled: true
""")
# Multiple policies can be attached to a single project by repeating this resource or using a `for_each`
my_policy = gitlab.ProjectSecurityPolicyAttachment("my-policy",
project="1234",
policy_project=my_policy_project.id)
Content copied to clipboard
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using GitLab = Pulumi.GitLab;
return await Deployment.RunAsync(() =>
{
// This resource can be used to attach a security policy to a pre-existing project
var foo = new GitLab.ProjectSecurityPolicyAttachment("foo", new()
{
Project = "1234",
PolicyProject = "4567",
});
// Or Terraform can create a new project, add a policy to that project,
// then attach that policy project to other projects.
var my_policy_project = new GitLab.Project("my-policy-project", new()
{
Name = "security-policy-project",
});
var policy_yml = new GitLab.RepositoryFile("policy-yml", new()
{
Project = my_policy_project.Id,
FilePath = ".gitlab/security-policies/my-policy.yml",
Branch = "master",
Encoding = "text",
Content = @"---
approval_policy:
- name: test
description: test
enabled: true
rules:
- type: any_merge_request
branch_type: protected
commits: any
approval_settings:
block_branch_modification: true
prevent_pushing_and_force_pushing: true
prevent_approval_by_author: true
prevent_approval_by_commit_author: true
remove_approvals_with_new_commit: true
require_password_to_approve: false
fallback_behavior:
fail: closed
actions:
- type: send_bot_message
enabled: true
",
});
// Multiple policies can be attached to a single project by repeating this resource or using a `for_each`
var my_policy = new GitLab.ProjectSecurityPolicyAttachment("my-policy", new()
{
Project = "1234",
PolicyProject = my_policy_project.Id,
});
});
Content copied to clipboard
package main
import (
"github.com/pulumi/pulumi-gitlab/sdk/v8/go/gitlab"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// This resource can be used to attach a security policy to a pre-existing project
_, err := gitlab.NewProjectSecurityPolicyAttachment(ctx, "foo", &gitlab.ProjectSecurityPolicyAttachmentArgs{
Project: pulumi.String("1234"),
PolicyProject: pulumi.String("4567"),
})
if err != nil {
return err
}
// Or Terraform can create a new project, add a policy to that project,
// then attach that policy project to other projects.
my_policy_project, err := gitlab.NewProject(ctx, "my-policy-project", &gitlab.ProjectArgs{
Name: pulumi.String("security-policy-project"),
})
if err != nil {
return err
}
_, err = gitlab.NewRepositoryFile(ctx, "policy-yml", &gitlab.RepositoryFileArgs{
Project: my_policy_project.ID(),
FilePath: pulumi.String(".gitlab/security-policies/my-policy.yml"),
Branch: pulumi.String("master"),
Encoding: pulumi.String("text"),
Content: pulumi.String(`---
approval_policy:
- name: test
description: test
enabled: true
rules:
- type: any_merge_request
branch_type: protected
commits: any
approval_settings:
block_branch_modification: true
prevent_pushing_and_force_pushing: true
prevent_approval_by_author: true
prevent_approval_by_commit_author: true
remove_approvals_with_new_commit: true
require_password_to_approve: false
fallback_behavior:
fail: closed
actions:
- type: send_bot_message
enabled: true
`),
})
if err != nil {
return err
}
// Multiple policies can be attached to a single project by repeating this resource or using a `for_each`
_, err = gitlab.NewProjectSecurityPolicyAttachment(ctx, "my-policy", &gitlab.ProjectSecurityPolicyAttachmentArgs{
Project: pulumi.String("1234"),
PolicyProject: my_policy_project.ID(),
})
if err != nil {
return err
}
return nil
})
}
Content copied to clipboard
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gitlab.ProjectSecurityPolicyAttachment;
import com.pulumi.gitlab.ProjectSecurityPolicyAttachmentArgs;
import com.pulumi.gitlab.Project;
import com.pulumi.gitlab.ProjectArgs;
import com.pulumi.gitlab.RepositoryFile;
import com.pulumi.gitlab.RepositoryFileArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// This resource can be used to attach a security policy to a pre-existing project
var foo = new ProjectSecurityPolicyAttachment("foo", ProjectSecurityPolicyAttachmentArgs.builder()
.project(1234)
.policyProject(4567)
.build());
// Or Terraform can create a new project, add a policy to that project,
// then attach that policy project to other projects.
var my_policy_project = new Project("my-policy-project", ProjectArgs.builder()
.name("security-policy-project")
.build());
var policy_yml = new RepositoryFile("policy-yml", RepositoryFileArgs.builder()
.project(my_policy_project.id())
.filePath(".gitlab/security-policies/my-policy.yml")
.branch("master")
.encoding("text")
.content("""
---
approval_policy:
- name: test
description: test
enabled: true
rules:
- type: any_merge_request
branch_type: protected
commits: any
approval_settings:
block_branch_modification: true
prevent_pushing_and_force_pushing: true
prevent_approval_by_author: true
prevent_approval_by_commit_author: true
remove_approvals_with_new_commit: true
require_password_to_approve: false
fallback_behavior:
fail: closed
actions:
- type: send_bot_message
enabled: true
""")
.build());
// Multiple policies can be attached to a single project by repeating this resource or using a `for_each`
var my_policy = new ProjectSecurityPolicyAttachment("my-policy", ProjectSecurityPolicyAttachmentArgs.builder()
.project(1234)
.policyProject(my_policy_project.id())
.build());
}
}
Content copied to clipboard
resources:
# This resource can be used to attach a security policy to a pre-existing project
foo:
type: gitlab:ProjectSecurityPolicyAttachment
properties:
project: 1234
policyProject: 4567
# Or Terraform can create a new project, add a policy to that project,
# then attach that policy project to other projects.
my-policy-project:
type: gitlab:Project
properties:
name: security-policy-project
policy-yml:
type: gitlab:RepositoryFile
properties:
project: ${["my-policy-project"].id}
filePath: .gitlab/security-policies/my-policy.yml
branch: master
encoding: text
content: |
---
approval_policy:
- name: test
description: test
enabled: true
rules:
- type: any_merge_request
branch_type: protected
commits: any
approval_settings:
block_branch_modification: true
prevent_pushing_and_force_pushing: true
prevent_approval_by_author: true
prevent_approval_by_commit_author: true
remove_approvals_with_new_commit: true
require_password_to_approve: false
fallback_behavior:
fail: closed
actions:
- type: send_bot_message
enabled: true
# Multiple policies can be attached to a single project by repeating this resource or using a `for_each`
my-policy:
type: gitlab:ProjectSecurityPolicyAttachment
properties:
project: 1234
policyProject: ${["my-policy-project"].id}
Content copied to clipboard
Import
Starting in Terraform v1.5.0 you can use an import block to import gitlab_project_security_policy_attachment
. For example: terraform import { to = gitlab_project_security_policy_attachment.example id = "see CLI command below for ID" } Import using the CLI is supported using the following syntax: GitLab project security policy attachments can be imported using an id made up of project:policy_project_id
where the policy project ID is the project ID of the policy project, e.g.
$ pulumi import gitlab:index/projectSecurityPolicyAttachment:ProjectSecurityPolicyAttachment foo 1:2
Content copied to clipboard
Properties
Link copied to clipboard
The ID or Full Path of the security policy project.
Link copied to clipboard
The GraphQL ID of the security policy project.
Link copied to clipboard
The GraphQL ID of the project to which the security policty project will be attached.
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard