aboutsummaryrefslogtreecommitdiff
path: root/.scripts.d
diff options
context:
space:
mode:
authorChristian Segundo2024-04-07 10:45:05 +0200
committerChristian Segundo2024-04-07 18:19:48 +0200
commit8206fecdb86f05d353ef25c9596cebca5c1d28fb (patch)
tree169f50213c94e8a558bf1c235871c764045f4338 /.scripts.d
parent3891426ce8deba513c5bcf1594987bdcfc837304 (diff)
downloadjenkins-agent-docker-cli-8206fecdb86f05d353ef25c9596cebca5c1d28fb.tar.gz
install buildx
Diffstat (limited to '.scripts.d')
-rw-r--r--.scripts.d/10-check.sh39
-rw-r--r--.scripts.d/20-build.sh20
-rw-r--r--.scripts.d/30-test.sh26
-rw-r--r--.scripts.d/40-publish.sh41
4 files changed, 126 insertions, 0 deletions
diff --git a/.scripts.d/10-check.sh b/.scripts.d/10-check.sh
new file mode 100644
index 0000000..e8ddf59
--- /dev/null
+++ b/.scripts.d/10-check.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+# vim: ai:ts=8:sw=8:noet
+set -EeufCo pipefail
+export SHELLOPTS # propagate set to children by default
+IFS=$'\t\n'
+
+# check required commands are in place
+command -v shellcheck >/dev/null 2>&1 || {
+ echo 'please install shellcheck'
+ exit 1
+}
+command -v hadolint >/dev/null 2>&1 || {
+ echo 'please install hadolint'
+ exit 1
+}
+command -v yamllint >/dev/null 2>&1 || {
+ echo 'please install yamllint'
+ exit 1
+}
+
+# check all the Dockerfiles with hadolint
+find . \
+ -type f \
+ -name 'Dockerfile' \
+ -print0 |
+ xargs -0 -r hadolint
+
+# check all the yaml files with yamllint
+find . -type f \
+ -regex '.*\.ya?ml\(lint\)?' \
+ -print0 |
+ xargs -0 -r yamllint -s
+
+# check all sh files with shellcheck
+find . \
+ -type f \
+ -name '*.sh' \
+ -print0 |
+ xargs -0 -r shellcheck
diff --git a/.scripts.d/20-build.sh b/.scripts.d/20-build.sh
new file mode 100644
index 0000000..a8b28b5
--- /dev/null
+++ b/.scripts.d/20-build.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+# vim: ai:ts=8:sw=8:noet
+set -EeufCo pipefail
+export SHELLOPTS # propagate set to children by default
+IFS=$'\t\n'
+
+# check required commands are in place
+command -v docker >/dev/null 2>&1 || {
+ echo 'please install docker-client'
+ exit 1
+}
+
+docker buildx build \
+ --no-cache \
+ --pull \
+ --load \
+ --tag "chn2guevara/jenkins-agent-docker-cli:${BUILD_ID}" \
+ .
+
+
diff --git a/.scripts.d/30-test.sh b/.scripts.d/30-test.sh
new file mode 100644
index 0000000..aacc15d
--- /dev/null
+++ b/.scripts.d/30-test.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+# vim: ai:ts=8:sw=8:noet
+set -EeufCo pipefail
+export SHELLOPTS # propagate set to children by default
+IFS=$'\t\n'
+
+# check required commands are in place
+command -v docker >/dev/null 2>&1 || {
+ echo 'please install docker-client'
+ exit 1
+}
+
+# install goss
+curl -fsSL https://goss.rocks/install | sh
+
+export GOSS_SLEEP=${GOSS_SLEEP:-5}
+export GOSS_VARS=${GOSS_VARS:-}
+export GOSS_OPTS="--format junit --no-color"
+export CONTAINER_LOG_OUTPUT=${CONTAINER_LOG_OUTPUT:-}
+export GOSS_FILES_STRATEGY=cp
+
+goss --gossfile goss.yaml render >goss-full.yaml
+mv goss-full.yaml goss.yaml
+
+mkdir -p build/reports/
+dgoss run "chn2guevara/jenkins-agent-docker-cli:${BUILD_ID}" "/usr/bin/sleep" "infinity" >build/reports/goss.xml
diff --git a/.scripts.d/40-publish.sh b/.scripts.d/40-publish.sh
new file mode 100644
index 0000000..cec483a
--- /dev/null
+++ b/.scripts.d/40-publish.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+# vim: ai:ts=8:sw=8:noet
+set -EeufCo pipefail
+export SHELLOPTS # propagate set to children by default
+IFS=$'\t\n'
+
+# check required commands are in place
+command -v docker >/dev/null 2>&1 || {
+ echo 'please install docker-client'
+ exit 1
+}
+
+docker login --username "chn2guevara" \
+ --password-stdin <<<"$DOCKERHUB_TOKEN"
+
+docker run --privileged --rm tonistiigi/binfmt --install arm64
+docker buildx create --use --name multi-arch-builder
+
+DOCKER_TAG="latest"
+if [ "$GIT_BRANCH" != "master" ]; then
+ DOCKER_TAG="${GIT_BRANCH//\//-}"
+fi
+
+if [ "$(git tag --contains)" = "" ]; then
+ docker buildx build \
+ --platform linux/amd64,linux/arm64 \
+ --no-cache \
+ --pull \
+ --push \
+ --tag "chn2guevara/jenkins-agent-docker-cli:${DOCKER_TAG}" \
+ .
+else
+ docker buildx build \
+ --platform linux/amd64,linux/arm64 \
+ --no-cache \
+ --pull \
+ --push \
+ --tag "chn2guevara/jenkins-agent-docker-cli:${DOCKER_TAG}" \
+ --tag "chn2guevara/jenkins-agent-docker-cli:$(git tag --contains | head -1)" \
+ .
+fi