Skip to content

Commit

Permalink
Build out own images and use them in our examples
Browse files Browse the repository at this point in the history
Signed-off-by: David Gannon <19214156+dgannon991@users.noreply.github.com>
  • Loading branch information
dgannon991 committed Sep 6, 2024
1 parent ec47179 commit f54bfc3
Show file tree
Hide file tree
Showing 15 changed files with 378 additions and 11 deletions.
4 changes: 2 additions & 2 deletions airgap/charts/whalegap/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ msg: "Whale aren't you special?"
replicaCount: 1

image:
repository: "carolynvs/whalesayd"
digest: "sha256:8b92b7269f59e3ed824e811a1ff1ee64f0d44c0218efefada57a4bebc2d7ef6f"
repository: "ghcr.io/getporter/examples/images/whalesayd"
digest: "sha256:18c099989986f61c0678b8040cc8d2e80ba20ecd096da51f8da3a31c5d1138b8"
pullPolicy: IfNotPresent

imagePullSecrets: []
Expand Down
6 changes: 3 additions & 3 deletions airgap/porter.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
schemaVersion: 1.0.0-alpha.1
name: examples/whalegap
version: 0.2.0
version: 0.2.1
description: "An example bundle that demonstrates how to sneak a whale-sized bundle through an airgap"
registry: ghcr.io/getporter

Expand All @@ -22,8 +22,8 @@ images:
whalesayd:
description: "Whalesay as a service"
imageType: "docker"
repository: "carolynvs/whalesayd"
digest: "sha256:8b92b7269f59e3ed824e811a1ff1ee64f0d44c0218efefada57a4bebc2d7ef6f"
repository: "ghcr.io/getporter/examples/images/whalesayd"
digest: "sha256:18c099989986f61c0678b8040cc8d2e80ba20ecd096da51f8da3a31c5d1138b8"

mixins:
- helm3
Expand Down
12 changes: 6 additions & 6 deletions docker/porter.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
schemaVersion: 1.0.0-alpha.1
name: examples/whalesay
version: 0.2.0
version: 0.2.1
description: "An example bundle that uses docker through the magic of whalespeak"
registry: ghcr.io/getporter

Expand All @@ -21,16 +21,16 @@ mixins:
install:
- docker:
run:
image: "docker/whalesay:latest"
image: "ghcr.io/getporter/examples/images/whalesay:latest"
rm: true
arguments:
- cowsay
- Hello World

upgrade:
- docker:
run:
image: "docker/whalesay:latest"
image: "ghcr.io/getporter/examples/images/whalesay:latest"
rm: true
arguments:
- cowsay
Expand All @@ -39,7 +39,7 @@ upgrade:
say:
- docker:
run:
image: "docker/whalesay:latest"
image: "ghcr.io/getporter/examples/images/whalesay:latest"
rm: true
arguments:
- cowsay
Expand All @@ -48,7 +48,7 @@ say:
uninstall:
- docker:
run:
image: "docker/whalesay:latest"
image: "ghcr.io/getporter/examples/images/whalesay:latest"
rm: true
arguments:
- cowsay
Expand Down
3 changes: 3 additions & 0 deletions images/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Porter Example Images

A collection of images used within the porter examples, and published to the getporter/examples/images container registry
5 changes: 5 additions & 0 deletions images/whalesay/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
FROM alpine
RUN apk add --no-cache perl
COPY cowsay /usr/local/bin/cowsay
COPY docker.cow /usr/local/share/cows/default.cow
ENTRYPOINT ["/usr/local/bin/cowsay"]
36 changes: 36 additions & 0 deletions images/whalesay/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
==============
cowsay License
==============

cowsay is distributed under the same licensing terms as Perl: the
Artistic License or the GNU General Public License. If you don't
want to track down these licenses and read them for yourself, use
the parts that I'd prefer:

(0) I wrote it and you didn't.

(1) Give credit where credit is due if you borrow the code for some
other purpose.

(2) If you have any bugfixes or suggestions, please notify me so
that I may incorporate them.

(3) If you try to make money off of cowsay, you suck.

===============
cowsay Legalese
===============

(0) Copyright (c) 1999 Tony Monroe. All rights reserved. All
lefts may or may not be reversed at my discretion.

(1) This software package can be freely redistributed or modified
under the terms described above in the "cowsay License" section
of this file.

(2) cowsay is provided "as is," with no warranties whatsoever,
expressed or implied. If you want some implied warranty about
merchantability and/or fitness for a particular purpose, you will
not find it here, because there is no such thing here.

(3) I hate legalese.
8 changes: 8 additions & 0 deletions images/whalesay/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
REGISTRY?=ghcr.io/getporter/examples/images/whalesay
LATEST=$(REGISTRY):latest

build:
docker build -t $(LATEST) .

publish: build
docker push $(LATEST)
187 changes: 187 additions & 0 deletions images/whalesay/cowsay
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
#!/usr/bin/perl

##
## Cowsay 3.03
##
## This file is part of cowsay. (c) 1999-2000 Tony Monroe.
##

use Text::Tabs qw(expand);
use Text::Wrap qw(wrap fill $columns);
use File::Basename;
use Getopt::Std;
use Cwd;

$version = "3.03";
$progname = basename($0);
$eyes = "oo";
$tongue = " ";
$cowpath = $ENV{'COWPATH'} || '/usr/local/share/cows';
@message = ();
$thoughts = "";

## Yeah, this is rude, I know. But hopefully it gets around a nasty
## little version dependency.

$Text::Wrap::initial_tab = 8;
$Text::Wrap::subsequent_tab = 8;
$Text::Wrap::tabstop = 8;

## One of these days, we'll get it ported to Windows. Yeah, right.

if (($^O eq "MSWin32") or ($^O eq "Windows_NT")) { ## Many perls, eek!
$pathsep = ';';
} else {
$pathsep = ':';
}

%opts = (
'e' => 'oo',
'f' => 'default.cow',
'n' => 0,
'T' => ' ',
'W' => 40,
);

getopts('bde:f:ghlLnNpstT:wW:y', \%opts);

&display_usage if $opts{'h'};
&list_cowfiles if $opts{'l'};

$borg = $opts{'b'};
$dead = $opts{'d'};
$greedy = $opts{'g'};
$paranoid = $opts{'p'};
$stoned = $opts{'s'};
$tired = $opts{'t'};
$wired = $opts{'w'};
$young = $opts{'y'};
$eyes = substr($opts{'e'}, 0, 2);
$tongue = substr($opts{'T'}, 0, 2);
$the_cow = "";

&slurp_input;
$Text::Wrap::columns = $opts{'W'};
@message = ($opts{'n'} ? expand(@message) :
split("\n", fill("", "", @message)));
&construct_balloon;
&construct_face;
&get_cow;
print @balloon_lines;
print $the_cow;

sub list_cowfiles {
my $basedir;
my @dirfiles;
chop($basedir = cwd);
for my $d (split(/$pathsep/, $cowpath)) {
print "Cow files in $d:\n";
opendir(COWDIR, $d) || die "$0: Cannot open $d\n";
for my $file (readdir COWDIR) {
if ($file =~ s/\.cow$//) {
push(@dirfiles, $file);
}
}
closedir(COWDIR);
print wrap("", "", sort @dirfiles), "\n";
@dirfiles = ();
chdir($basedir);
}
exit(0);
}

sub slurp_input {
unless ($ARGV[0]) {
chomp(@message = <STDIN>);
} else {
&display_usage if $opts{'n'};
@message = join(' ', @ARGV);
}
}

sub maxlength {
my ($l, $m);
$m = -1;
for my $i (@_) {
$l = length $i;
$m = $l if ($l > $m);
}
return $m;
}

sub construct_balloon {
my $max = &maxlength(@message);
my $max2 = $max + 2; ## border space fudge.
my $format = "%s %-${max}s %s\n";
my @border; ## up-left, up-right, down-left, down-right, left, right
if ($0 =~ /think/i) {
$thoughts = 'o';
@border = qw[ ( ) ( ) ( ) ];
} elsif (@message < 2) {
$thoughts = '\\';
@border = qw[ < > ];
} else {
$thoughts = '\\';
if ($V and $V gt v5.6.0) { # Thanks, perldelta.
@border = qw[ / \\ \\ / | | ];
} else {
@border = qw[ / \ \ / | | ];
}
}
push(@balloon_lines,
" " . ("_" x $max2) . " \n" ,
sprintf($format, $border[0], $message[0], $border[1]),
(@message < 2 ? "" :
map { sprintf($format, $border[4], $_, $border[5]) }
@message[1 .. $#message - 1]),
(@message < 2 ? "" :
sprintf($format, $border[2], $message[$#message], $border[3])),
" " . ("-" x $max2) . " \n"
);
}

sub construct_face {
if ($borg) { $eyes = "=="; }
if ($dead) { $eyes = "xx"; $tongue = "U "; }
if ($greedy) { $eyes = "\$\$"; }
if ($paranoid) { $eyes = "@@"; }
if ($stoned) { $eyes = "**"; $tongue = "U "; }
if ($tired) { $eyes = "--"; }
if ($wired) { $eyes = "OO"; }
if ($young) { $eyes = ".."; }
}

sub get_cow {
##
## Get a cow from the specified cowfile; otherwise use the default cow
## which was defined above in $the_cow.
##
my $f = $opts{'f'};
my $full = "";
if ($opts{'f'} =~ m,/,) {
$full = $opts{'f'};
} else {
for my $d (split(/:/, $cowpath)) {
if (-f "$d/$f") {
$full = "$d/$f";
last;
} elsif (-f "$d/$f.cow") {
$full = "$d/$f.cow";
last;
}
}
if ($full eq "") {
die "$progname: Could not find $f cowfile!\n";
}
}
do $full;
die "$progname: $@\n" if $@;
}

sub display_usage {
die <<EOF;
cow{say,think} version $version, (c) 1999 Tony Monroe
Usage: $progname [-bdgpstwy] [-h] [-e eyes] [-f cowfile]
[-l] [-n] [-T tongue] [-W wrapcolumn] [message]
EOF
}
19 changes: 19 additions & 0 deletions images/whalesay/docker.cow
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
##
## Docker Cow
##
$the_cow = <<EOC;
$thoughts
$thoughts
$thoughts
EOC
$the_cow .= <<'EOC';
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
{ / ===-
\______ O __/
\ \ __/
\____\_______/

EOC
1 change: 1 addition & 0 deletions images/whalesayd/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/whalesayd
7 changes: 7 additions & 0 deletions images/whalesayd/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM ghcr.io/getporter/examples/images/whalesay

COPY whalesayd /usr/local/bin/whalesayd
RUN ls /usr/local/bin/
EXPOSE 8080

ENTRYPOINT ["/usr/local/bin/whalesayd"]
13 changes: 13 additions & 0 deletions images/whalesayd/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
REGISTRY?=ghcr.io/getporter/examples/images/whalesayd
TAG?=v0.1.1
VERSION=$(REGISTRY):$(TAG)
LATEST=$(REGISTRY):latest

build:
GOOS=linux CGO_ENABLED=0 go build
docker build -t $(LATEST) .

publish: build
docker tag $(LATEST) $(VERSION)
docker push $(VERSION)
docker push $(LATEST)
Loading

0 comments on commit f54bfc3

Please sign in to comment.