Completed
Pull Request — master (#1)
by Jindun
04:17
created

CleanupKubernetesJob::newCleanup()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 31
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 23
dl 0
loc 31
rs 9.552
c 0
b 0
f 0
cc 1
nc 1
nop 4
1
<?php
2
3
4
namespace TheAentMachine\AentGitLabCI\GitLabCI\Job;
5
6
use TheAentMachine\AentGitLabCI\Exception\JobException;
7
8
final class CleanupKubernetesJob extends AbstractCleanupJob
9
{
10
    /**
11
     * @param string $identifier
12
     * @param string $projectGroup
13
     * @param string $projectName
14
     * @param bool $isManual
15
     * @return CleanupKubernetesJob
16
     * @throws JobException
17
     */
18
    public static function newCleanup(string $identifier, string $projectGroup, string $projectName, bool $isManual): self
19
    {
20
        $self = new self($identifier);
21
22
        $self->image = 'thecodingmachine/gitlab-registry-cleaner:latest';
23
        $self->variables = [
24
            'KUBECONFIG' => '/root/.kube/config',
25
            'GCLOUD_SERVICE_KEY_BASE64' => 'You should put this value in your secrets CI variables!',
26
            'GCLOUD_PROJECT' => 'You should put this value in your secrets CI variables!',
27
            '$ZONE' => 'You should put this value in your secrets CI variables!',
28
            'GKE_CLUSTER' => 'You should put this value in your secrets CI variables!',
29
            'PROJECT_GROUP' => $projectGroup,
30
            'PROJECT_NAME' => $projectName,
31
32
        ];
33
        $self->script = [
34
            'echo $GCLOUD_SERVICE_KEY_BASE64 | base64 -d > /secret.json',
35
            'gcloud auth activate-service-account --key-file /secret.json',
36
            'gcloud config set project $GCLOUD_PROJECT',
37
            'gcloud container clusters get-credentials $GKE_CLUSTER --zone $ZONE --project $GCLOUD_PROJECT',
38
            'chmod +x /kubectl',
39
            '/delete_image.sh ${REGISTRY_DOMAIN_NAME}/${PROJECT_GROUP}/${PROJECT_NAME}:${CI_COMMIT_REF_SLUG}',
40
            'kubectl -n ${CI_PROJECT_PATH_SLUG}-${CI_COMMIT_REF_SLUG} delete all --all',
41
            'kubectl delete namespace ${CI_PROJECT_PATH_SLUG}-${CI_COMMIT_REF_SLUG}',
42
        ];
43
44
        $self->addOnly('branches');
45
        $self->addExcept('master');
46
        $self->manual = $isManual;
47
48
        return $self;
49
    }
50
}
51