A Gitlab Runner JSII construct lib for AWS CDK
Project description
Welcome to cdk-gitlab-runner
This repository template helps you create gitlab runner on your aws account via AWS CDK one line.
Note
Default will help you generate below services:
-
VPC
- Public Subnet (2)
-
EC2 (1 T3.micro)
Before start you need gitlab runner token in your gitlab project or gitlab group
In Group
Group > Settings > CI/CD
In Group
Project > Settings > CI/CD > Runners
Usage
Replace your gitlab runner token in $GITLABTOKEN
Instance Type
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
from cdk_gitlab_runner import GitlabContainerRunner
# If want change instance type to t3.large .
GitlabContainerRunner(self, "runner-instance", gitlabtoken="$GITLABTOKEN", ec2type="t3.large")
# OR
# Just create a gitlab runner , by default instance type is t3.micro .
from cdk_gitlab_runner import GitlabContainerRunner
GitlabContainerRunner(self, "runner-instance", gitlabtoken="$GITLABTOKEN")
Gitlab Server Customize Url .
If you want change what you want tag name .
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
# If you want change what your self Gitlab Server Url .
from cdk_gitlab_runner import GitlabContainerRunner
GitlabContainerRunner(self, "runner-instance-change-tag",
gitlabtoken="$GITLABTOKEN",
gitlaburl="https://gitlab.my.com/"
)
Tags
If you want change what you want tag name .
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
# If you want change what you want tag name .
from cdk_gitlab_runner import GitlabContainerRunner
GitlabContainerRunner(self, "runner-instance-change-tag",
gitlabtoken="$GITLABTOKEN",
tags=["aa", "bb", "cc"]
)
IAM Policy
If you want add runner other IAM Policy like s3-readonly-access.
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
# If you want add runner other IAM Policy like s3-readonly-access.
from cdk_gitlab_runner import GitlabContainerRunner
from aws_cdk.aws_iam import ManagedPolicy
runner = GitlabContainerRunner(self, "runner-instance-add-policy",
gitlabtoken="$GITLABTOKEN",
tags=["aa", "bb", "cc"]
)
runner.runner_role.add_managed_policy(
ManagedPolicy.from_aws_managed_policy_name("AmazonS3ReadOnlyAccess"))
Security Group
If you want add runner other SG Ingress .
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
# If you want add runner other SG Ingress .
from cdk_gitlab_runner import GitlabContainerRunner
from aws_cdk.aws_ec2 import Port, Peer
runner = GitlabContainerRunner(self, "runner-add-SG-ingress",
gitlabtoken="GITLABTOKEN",
tags=["aa", "bb", "cc"]
)
# you can add ingress in your runner SG .
runner.default_runner_sG.connections.allow_from(
Peer.ipv4("0.0.0.0/0"),
Port.tcp(80))
Use self VPC
2020/06/27 , you can use your self exist VPC or new VPC , but please check your
vpc public SubnetAuto-assign public IPv4 address must be Yes ,orvpc private Subnetroute table associatednat gateway.
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
from cdk_gitlab_runner import GitlabContainerRunner
from aws_cdk.aws_ec2 import Port, Peer, Vpc, SubnetType
from aws_cdk.aws_iam import ManagedPolicy
newvpc = Vpc(stack, "VPC",
cidr="10.1.0.0/16",
max_azs=2,
subnet_configuration=[SubnetConfiguration(
cidr_mask=26,
name="RunnerVPC",
subnet_type=SubnetType.PUBLIC
)
],
nat_gateways=0
)
runner = GitlabContainerRunner(self, "testing",
gitlabtoken="$GITLABTOKEN",
ec2type="t3.small",
selfvpc=newvpc
)
Use your self exist role
2020/06/27 , you can use your self exist role assign to runner
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
from cdk_gitlab_runner import GitlabContainerRunner
from aws_cdk.aws_ec2 import Port, Peer
from aws_cdk.aws_iam import ManagedPolicy, Role, ServicePrincipal
role = Role(self, "runner-role",
assumed_by=ServicePrincipal("ec2.amazonaws.com"),
description="For Gitlab EC2 Runner Test Role",
role_name="TestRole"
)
runner = GitlabContainerRunner(stack, "testing",
gitlabtoken="$GITLAB_TOKEN",
ec2iamrole=role
)
runner.runner_role.add_managed_policy(
ManagedPolicy.from_aws_managed_policy_name("AmazonS3ReadOnlyAccess"))
Custom Gitlab Runner EBS szie
2020/08/22 , you can change you want ebs size.
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
from cdk_gitlab_runner import GitlabContainerRunner
GitlabContainerRunner(stack, "testing",
gitlabtoken="$GITLAB_TOKEN",
ebs_size=50
)
Control the number of runners with AutoScalingGroup
2020/11/25 , you can set the number of runners.
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
from cdk_gitlab_runner import GitlabRunnerAutoscaling
GitlabRunnerAutoscaling(stack, "testing",
gitlab_token="$GITLAB_TOKEN",
min_capacity=2,
max_capacity=2
)
Support Spotfleet Gitlab Runner
2020/08/27 , you can use spotfleet instance be your gitlab runner, after create spotfleet instance will auto output instance id .thank @pahud again ~~~
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
from cdk_gitlab_runner import GitlabContainerRunner, BlockDuration
runner = GitlabContainerRunner(stack, "testing",
gitlabtoken="GITLAB_TOKEN",
ec2type="t3.large",
block_duration=BlockDuration.ONE_HOUR,
spot_fleet=True
)
# configure the expiration after 1 hours
runner.expire_after(Duration.hours(1))
2020/11/19, you setting job runtime bind host volumes. see more https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runnersdocker-section
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
from cdk_gitlab_runner import GitlabContainerRunner, BlockDuration
runner = GitlabContainerRunner(stack, "testing",
gitlabtoken="GITLAB_TOKEN",
ec2type="t3.large",
docker_volumes=[{
"host_path": "/tmp/cahce",
"container_path": "/tmp/cahce"
}
]
)
2020/11/19, support runner auto unregister runner when cdk app destroy.
Note
vs
About change instance type
This is before ( included
)
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
from aws_cdk.aws_ec2 import InstanceType, InstanceClass, InstanceSize
from cdk_gitlab_runner import GitlabContainerRunner
# If want change instance type to t3.large .
GitlabContainerRunner(self, "runner-instance",
gitlabtoken="$GITLABTOKEN",
ec2type=InstanceType.of(InstanceClass.T3, InstanceSize.LARGE)
)
This is
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
from cdk_gitlab_runner import GitlabContainerRunner
# If want change instance type to t3.large .
GitlabContainerRunner(self, "runner-instance",
gitlabtoken="$GITLABTOKEN",
ec2type="t3.large"
)
Wait about 6 mins , If success you will see your runner in that page .
you can use tag gitlab , runner , awscdk ,
Example gitlab-ci.yaml
dockerjob:
image: docker:18.09-dind
variables:
tags:
- runner
- awscdk
- gitlab
variables:
DOCKER_TLS_CERTDIR: ""
before_script:
- docker info
script:
- docker info;
- echo 'test 123';
- echo 'hello world 1228'
If your want to debug you can go to aws console
In your runner region !!!
AWS Systems Manager > Session Manager > Start a session
click your runner and click start session
in the brower console in put bash
# become to root
sudo -i
# list runner container .
root# docker ps -a
# modify gitlab-runner/config.toml
root# cd /home/ec2-user/.gitlab-runner/ && ls
config.toml
:clap: Supporters
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cdk-gitlab-runner-1.95.72.tar.gz.
File metadata
- Download URL: cdk-gitlab-runner-1.95.72.tar.gz
- Upload date:
- Size: 77.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.7.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d4a71c6c1949ea64c51cbe0b2463653b6ae918e9ea9d4b8579701c854c2493f
|
|
| MD5 |
c847d23d4b80569fc72e1835c97fca21
|
|
| BLAKE2b-256 |
bf283bdd989bfcc3abe1d10cfdfba386a85946018fdcfa9fa4e8588a165d0d7a
|
File details
Details for the file cdk_gitlab_runner-1.95.72-py3-none-any.whl.
File metadata
- Download URL: cdk_gitlab_runner-1.95.72-py3-none-any.whl
- Upload date:
- Size: 74.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.7.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
79ce593d0332a592bb1b5408797622619888df982985c2080d42baf1d01bb8fa
|
|
| MD5 |
69ee1a181ffa17c3d92a08232c4545a6
|
|
| BLAKE2b-256 |
24b89898fbf361b6a265046001184eb5e8d3f70eb6cfbf1d27f70d59a2842523
|