-
Notifications
You must be signed in to change notification settings - Fork 27
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #81 from lachmanfrantisek/dockerfile-support
Add support for dockerfiles
- Loading branch information
Showing
20 changed files
with
291 additions
and
142 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
import re | ||
|
||
|
||
def check_label(label, required, value_regex, labels): | ||
""" | ||
Check if the label is required and match the regex | ||
:param label: str | ||
:param required: bool (if the presence means pass or not) | ||
:param value_regex: str | ||
:param labels: [str] | ||
:return: bool (required==True: True if the label is present and match the regex if specified) | ||
(required==False: True if the label is not present) | ||
""" | ||
present = labels is not None and label in labels | ||
|
||
if present: | ||
if required and not value_regex: | ||
return True | ||
elif value_regex: | ||
pattern = re.compile(value_regex) | ||
return bool(pattern.match(labels[label])) | ||
else: | ||
return False | ||
|
||
else: | ||
return not required |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,25 @@ | ||
from colin.checks.abstract.dockerfile import InstructionCheck | ||
from colin.checks.abstract.dockerfile import DockerfileCheck | ||
from colin.checks.result import CheckResult | ||
from colin.core.target import ImageName | ||
|
||
|
||
class FromTagCheck(InstructionCheck): | ||
class FromTagCheck(DockerfileCheck): | ||
|
||
def __init__(self): | ||
super().__init__(name="is_tag_latest", | ||
message="", | ||
description="", | ||
reference_url="https://docs.docker.com/engine/reference/builder/#from", | ||
tags=["from", "dockerfile", "latest"], | ||
instruction="FROM", | ||
regex=".*/latest$", | ||
required=False) | ||
super().__init__(name="from_tag_not_latest", | ||
message="In FROM, tag has to be specified and not 'latest'.", | ||
description="Using the 'latest' tag may cause unpredictable builds." | ||
"It is recommended that a specific tag is used in the FROM.", | ||
reference_url="https://fedoraproject.org/wiki/Container:Guidelines#FROM", | ||
tags=["from", "dockerfile", "baseimage", "latest"]) | ||
|
||
def check(self, target): | ||
im = ImageName.parse(target.instance.baseimage) | ||
passed = im.tag and im.tag != "latest" | ||
return CheckResult(ok=passed, | ||
severity=self.severity, | ||
description=self.description, | ||
message=self.message, | ||
reference_url=self.reference_url, | ||
check_name=self.name, | ||
logs=[]) |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.