Branch Protection Args
data class BranchProtectionArgs(val allowsDeletions: Output<Boolean>? = null, val allowsForcePushes: Output<Boolean>? = null, val blocksCreations: Output<Boolean>? = null, val enforceAdmins: Output<Boolean>? = null, val forcePushBypassers: Output<List<String>>? = null, val lockBranch: Output<Boolean>? = null, val pattern: Output<String>? = null, val pushRestrictions: Output<List<String>>? = null, val repositoryId: Output<String>? = null, val requireConversationResolution: Output<Boolean>? = null, val requireSignedCommits: Output<Boolean>? = null, val requiredLinearHistory: Output<Boolean>? = null, val requiredPullRequestReviews: Output<List<BranchProtectionRequiredPullRequestReviewArgs>>? = null, val requiredStatusChecks: Output<List<BranchProtectionRequiredStatusCheckArgs>>? = null) : ConvertibleToJava<BranchProtectionArgs>
Protects a GitHub branch. This resource allows you to configure branch protection for repositories in your organization. When applied, the branch will be protected from forced pushes and deletion. Additional constraints, such as required status checks or restrictions on users, teams, and apps, can also be configured.
Example Usage
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.github.Repository;
import com.pulumi.github.GithubFunctions;
import com.pulumi.github.inputs.GetUserArgs;
import com.pulumi.github.Team;
import com.pulumi.github.BranchProtection;
import com.pulumi.github.BranchProtectionArgs;
import com.pulumi.github.inputs.BranchProtectionRequiredStatusCheckArgs;
import com.pulumi.github.inputs.BranchProtectionRequiredPullRequestReviewArgs;
import com.pulumi.github.TeamRepository;
import com.pulumi.github.TeamRepositoryArgs;
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) {
var exampleRepository = new Repository("exampleRepository");
final var exampleUser = GithubFunctions.getUser(GetUserArgs.builder()
.username("example")
.build());
var exampleTeam = new Team("exampleTeam");
var exampleBranchProtection = new BranchProtection("exampleBranchProtection", BranchProtectionArgs.builder()
.repositoryId(exampleRepository.nodeId())
.pattern("main")
.enforceAdmins(true)
.allowsDeletions(true)
.requiredStatusChecks(BranchProtectionRequiredStatusCheckArgs.builder()
.strict(false)
.contexts("ci/travis")
.build())
.requiredPullRequestReviews(BranchProtectionRequiredPullRequestReviewArgs.builder()
.dismissStaleReviews(true)
.restrictDismissals(true)
.dismissalRestrictions(
exampleUser.applyValue(getUserResult -> getUserResult.nodeId()),
exampleTeam.nodeId(),
"/exampleuser",
"exampleorganization/exampleteam")
.build())
.pushRestrictions(
exampleUser.applyValue(getUserResult -> getUserResult.nodeId()),
"/exampleuser",
"exampleorganization/exampleteam")
.forcePushBypassers(
exampleUser.applyValue(getUserResult -> getUserResult.nodeId()),
"/exampleuser",
"exampleorganization/exampleteam")
.build());
var exampleTeamRepository = new TeamRepository("exampleTeamRepository", TeamRepositoryArgs.builder()
.teamId(exampleTeam.id())
.repository(exampleRepository.name())
.permission("pull")
.build());
}
}
Content copied to clipboard
Import
GitHub Branch Protection can be imported using an ID made up of repository:pattern
, e.g.
$ pulumi import github:index/branchProtection:BranchProtection terraform terraform:main
Content copied to clipboard
Constructors
Link copied to clipboard
fun BranchProtectionArgs(allowsDeletions: Output<Boolean>? = null, allowsForcePushes: Output<Boolean>? = null, blocksCreations: Output<Boolean>? = null, enforceAdmins: Output<Boolean>? = null, forcePushBypassers: Output<List<String>>? = null, lockBranch: Output<Boolean>? = null, pattern: Output<String>? = null, pushRestrictions: Output<List<String>>? = null, repositoryId: Output<String>? = null, requireConversationResolution: Output<Boolean>? = null, requireSignedCommits: Output<Boolean>? = null, requiredLinearHistory: Output<Boolean>? = null, requiredPullRequestReviews: Output<List<BranchProtectionRequiredPullRequestReviewArgs>>? = null, requiredStatusChecks: Output<List<BranchProtectionRequiredStatusCheckArgs>>? = null)