Skip to content

Commit

Permalink
Merge pull request #62 from T-Systems-MMS/tests
Browse files Browse the repository at this point in the history
Add Tests and remove error ignores
  • Loading branch information
michaelamattes authored Jan 30, 2023
2 parents ae12176 + f4483b0 commit 72dbc5c
Show file tree
Hide file tree
Showing 12 changed files with 80 additions and 58 deletions.
23 changes: 19 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,24 +45,39 @@ jobs:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
if: github.ref == 'refs/heads/master'

- name: build Dockerfile ${{ matrix.example }}
- name: Render Dockerfile ${{ matrix.example }}
run: cp examples/${{ matrix.example }}_build.yaml ./build.yaml && sh render.sh .

- name: Build and push dmc:${{ matrix.example }}
- name: Build the container dmc:${{ matrix.example }}
uses: docker/[email protected]
with:
context: .
push: false
tags: dmc:${{ matrix.example }}

- name: Test $IMAGE_NAME:${{ matrix.example }}
- name: Test the container $IMAGE_NAME:${{ matrix.example }}
run: |
docker run --rm dmc:${{ matrix.example }}
if: matrix.example == 'min'

- name: Test the container $IMAGE_NAME:${{ matrix.example }}
run: |
docker run --rm dmc:${{ matrix.example }} ansible --version
docker run --rm dmc:${{ matrix.example }} kubectl version --client=true -o yaml
docker run --rm dmc:${{ matrix.example }} helm version
docker run --rm dmc:${{ matrix.example }} terraform version
docker run --rm dmc:${{ matrix.example }} nomad version
docker run --rm dmc:${{ matrix.example }} consul version
docker run --rm dmc:${{ matrix.example }} docker --version
docker run --rm dmc:${{ matrix.example }} az version
docker run --rm dmc:${{ matrix.example }} aws --version
if: matrix.example == 'full'

- name: Build and push dmc:${{ matrix.example }}
uses: docker/[email protected]
with:
context: .
push: true
tags: ${{ matrix.example }}
tags: ghcr.io/t-systems-mms/dmc/${{ matrix.example }}
labels: ${{ steps.meta.outputs.labels }}
if: github.ref == 'refs/heads/master'
2 changes: 1 addition & 1 deletion template.d/00_image
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ ARG DISTRIBUTION=ubuntu
ARG VERSION=latest

## build Image
FROM wakemeops/${DISTRIBUTION}:${VERSION}
FROM wakemeops/"${DISTRIBUTION}":"${VERSION}"
18 changes: 9 additions & 9 deletions template.d/10_tools
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,18 @@ ARG PACKAGES
ARG REPOSITORIES
ARG BINARIES

ARG REPOSITORIES_HASHICORP_GPG='https://apt.releases.hashicorp.com/gpg'
ARG REPOSITORIES_HASHICORP_ENTRY='https://apt.releases.hashicorp.com $(lsb_release -cs) main'
ARG REPOSITORIES_DOCKER_GPG='https://download.docker.com/linux/ubuntu/gpg'
ARG REPOSITORIES_DOCKER_ENTRY='https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable'
ARG REPOSITORIES_MICROSOFT_GPG='https://packages.microsoft.com/keys/microsoft.asc'
ARG REPOSITORIES_MICROSOFT_ENTRY='https://packages.microsoft.com/repos/azure-cli/ $(lsb_release -cs) main'
ARG REPOSITORIES_HASHICORP_GPG="https://apt.releases.hashicorp.com/gpg"
ARG REPOSITORIES_HASHICORP_ENTRY="https://apt.releases.hashicorp.com $(lsb_release -cs) main"
ARG REPOSITORIES_DOCKER_GPG="https://download.docker.com/linux/ubuntu/gpg"
ARG REPOSITORIES_DOCKER_ENTRY="https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
ARG REPOSITORIES_MICROSOFT_GPG="https://packages.microsoft.com/keys/microsoft.asc"
ARG REPOSITORIES_MICROSOFT_ENTRY="https://packages.microsoft.com/repos/azure-cli/ $(lsb_release -cs) main"

# ARG REPOSITORIES_N

ARG BINARIES_GITHUB_URI='https://api.github.com/repos'
ARG BINARIES_GOOGLE_URI='https://packages.cloud.google.com/apt/dists/cloud-sdk/main/binary-arm64/Packages'
ARG BINARIES_GITHUB_URI="https://api.github.com/repos"
ARG BINARIES_GOOGLE_URI="https://packages.cloud.google.com/apt/dists/cloud-sdk/main/binary-arm64/Packages"

# ARG BINARIES_N

WORKDIR ${WORKDIR}
WORKDIR "${WORKDIR}"
9 changes: 5 additions & 4 deletions template.d/11_repositories
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
## repositories
RUN test -n "${REPOSITORIES}" && \
IFS=';' && \
for REPOSITORY in ${REPOSITORIES[@]}; do declare -u REPO="${REPOSITORY}" && REPO_GPG=$(eval "echo \$REPOSITORIES_${REPO}_GPG") && REPO_ENTRY=$(eval "eval "echo \$REPOSITORIES_${REPO}_ENTRY"") && \
curl -fsSL "${REPO_GPG}" | gpg --dearmor | tee "/etc/apt/trusted.gpg.d/${REPOSITORY}.gpg" > /dev/null && apt-add-repository "deb [arch=amd64] ${REPO_ENTRY}"; done || :
RUN if [ -n "${REPOSITORIES}" ]; then \
IFS=';' && \
for REPOSITORY in ${REPOSITORIES[@]}; do declare -u REPO="${REPOSITORY}" && REPO_GPG=$(eval "echo \$REPOSITORIES_${REPO}_GPG") && REPO_ENTRY=$(eval "eval "echo \$REPOSITORIES_${REPO}_ENTRY"") && \
curl -fsSL "${REPO_GPG}" | gpg --dearmor | tee "/etc/apt/trusted.gpg.d/${REPOSITORY}.gpg" > /dev/null && apt-add-repository "deb [arch=amd64] ${REPO_ENTRY}"; done; \
fi
7 changes: 4 additions & 3 deletions template.d/12_packages
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
## packages
RUN test -n "${PACKAGES}" && \
IFS=';' && \
install_packages ${PACKAGES[@]} || :
RUN if [ -n "${PACKAGES}" ]; then \
IFS=';' && \
install_packages ${PACKAGES[@]}; \
fi
27 changes: 14 additions & 13 deletions template.d/13_binaries
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
## binaries
RUN test -n "${BINARIES}" && \
IFS=';' && \
for BINARY in ${BINARIES[@]}; do declare -u BINARY_REPO="${BINARY}" && BINARY_URI=$(eval "echo \$BINARIES_${BINARY_REPO}_URI") && BINARY_PACKAGES=$(eval "echo \$BINARIES_${BINARY_REPO}") && \
if [ "${BINARY_REPO}" = "GITHUB" ]; then for BINARY_PACKAGE in ${BINARY_PACKAGES}; do BINARY_PACKAGE_URI=$(echo "${BINARY_URI}/${BINARY_PACKAGE}" | awk -F '=' '{ if (!$3) {version="/latest"}; printf("%s/releases%s", $1, version)}') && \
BINARY_PACKAGE_VERSION=$(echo "${BINARY_PACKAGE}" | awk -F '=' '{print $3".*"$2".tar.gz"}') && \
BINARY_PACKAGE_URL=$(curl -fsSL "${BINARY_PACKAGE_URI}" | grep -Po '"browser_download_url": "\K.*?(?=\")' | grep -P "${BINARY_PACKAGE_VERSION}") && \
mkdir -p ./github && curl -SsL --retry 5 "${BINARY_PACKAGE_URL}" | tar xz -C ./github && \
chmod -R +x ./github/* && mv ./github/* /usr/local/bin/; done; fi && \
if [ "${BINARY_REPO}" = "GOOGLE" ]; then for BINARY_PACKAGE in ${BINARY_PACKAGES}; do BINARY_PACKAGE_VERSION=$(curl -fSsL "${BINARY_URI}" | grep -P "$(echo "${BINARY_PACKAGE}" | sed 's/=/.*/g')" | cut -d '_' -f2 | sort -n | grep "$(echo "${BINARY_PACKAGE}" | cut -d '=' -f2)" | tail -n1 | cut -d '-' -f1) && \
BINARY_PACKAGE_URI="https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/$(echo "${BINARY_PACKAGE}" | cut -d '=' -f1)-${BINARY_PACKAGE_VERSION}-linux-x86_64.tar.gz" && \
mkdir -p ./google && curl -SsL --retry 5 "${BINARY_PACKAGE_URI}" | tar xz -C ./google && \
chmod -R +x ./google/* && \
sh ./google/*/install.sh --quiet --command-completion true --bash-completion true --path-update true; done; fi; done || :
RUN if [ -n "${BINARIES}" ]; then \
IFS=';' && \
for BINARY in ${BINARIES[@]}; do declare -u BINARY_REPO="${BINARY}" && BINARY_URI=$(eval "echo \$BINARIES_${BINARY_REPO}_URI") && BINARY_PACKAGES=$(eval "echo \$BINARIES_${BINARY_REPO}") && \
if [ "${BINARY_REPO}" = "GITHUB" ]; then for BINARY_PACKAGE in ${BINARY_PACKAGES}; do BINARY_PACKAGE_URI=$(echo "${BINARY_URI}/${BINARY_PACKAGE}" | awk -F '=' '{ if (!$3) {version="/latest"}; printf("%s/releases%s", $1, version)}') && \
BINARY_PACKAGE_VERSION=$(echo "${BINARY_PACKAGE}" | awk -F '=' '{print $3".*"$2".tar.gz"}') && \
BINARY_PACKAGE_URL=$(curl -fsSL "${BINARY_PACKAGE_URI}" | grep -Po '"browser_download_url": "\K.*?(?=\")' | grep -P "${BINARY_PACKAGE_VERSION}") && \
mkdir -p ./github && curl -SsL --retry 5 "${BINARY_PACKAGE_URL}" | tar xz -C ./github && \
chmod -R +x ./github/* && mv ./github/* /usr/local/bin/; done; fi && \
if [ "${BINARY_REPO}" = "GOOGLE" ]; then for BINARY_PACKAGE in ${BINARY_PACKAGES}; do BINARY_PACKAGE_VERSION=$(curl -fSsL "${BINARY_URI}" | grep -P "${BINARY_PACKAGE//=/.*}" | cut -d '_' -f2 | sort -n | grep "$(echo "${BINARY_PACKAGE}" | cut -d '=' -f2)" | tail -n1 | cut -d '-' -f1) && \
BINARY_PACKAGE_URI="https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/$(echo "${BINARY_PACKAGE}" | cut -d '=' -f1)-${BINARY_PACKAGE_VERSION}-linux-x86_64.tar.gz" && \
mkdir -p ./google && curl -SsL --retry 5 "${BINARY_PACKAGE_URI}" | tar xz -C ./google && \
chmod -R +x ./google/* && \
sh ./google/*/install.sh --quiet --command-completion true --bash-completion true --path-update true; done; fi; done \
fi
2 changes: 1 addition & 1 deletion template.d/20_tools_config
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ ARG EXTENSIONS
# ARG REQUIREMENTS_N
# ARG EXTENSIONS_N

WORKDIR ${WORKDIR}
WORKDIR "${WORKDIR}"
15 changes: 8 additions & 7 deletions template.d/21_requirements
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
## requirements
RUN test -n "${REQUIREMENTS}" && \
IFS=';' && \
for REQUIREMENT in ${REQUIREMENTS[@]}; do IFS='' && declare -u REQ="${REQUIREMENT}" && REQUIREMENTS_REQ=$(eval "echo \$REQUIREMENTS_${REQ}") && \
IFS=';' && \
if [ "${REQ}" = "PIP" ]; then for REQUIREMENT_REQ in ${REQUIREMENTS_REQ[@]}; do pip3 install --no-cache-dir $(echo "${REQUIREMENT_REQ}" | sed 's/=/==/g');done; fi && \
if [ "${REQ}" = "ANSIBLE" ]; then for REQUIREMENT_REQ in ${REQUIREMENTS_ANSIBLE_ROLES[@]}; do ansible-galaxy install $(echo "${REQUIREMENT_REQ}" | sed 's/=/,/g'); done && \
for REQUIREMENT_REQ in ${REQUIREMENTS_ANSIBLE_COLLECTIONS[@]}; do ansible-galaxy collection install $(echo "${REQUIREMENT_REQ}" | sed 's/=/:/g'); done; fi; done || :
RUN if [ -n "${REQUIREMENTS}" ]; then \
IFS=';' && \
for REQUIREMENT in ${REQUIREMENTS[@]}; do IFS='' && declare -u REQ="${REQUIREMENT}" && REQUIREMENTS_REQ=$(eval "echo \$REQUIREMENTS_${REQ}") && \
IFS=';' && \
if [ "${REQ}" = "PIP" ]; then for REQUIREMENT_REQ in ${REQUIREMENTS_REQ[@]}; do pip3 install --no-cache-dir "${REQUIREMENT_REQ//=/==}";done; fi && \
if [ "${REQ}" = "ANSIBLE" ]; then for REQUIREMENT_REQ in ${REQUIREMENTS_ANSIBLE_ROLES[@]}; do ansible-galaxy install "${REQUIREMENT_REQ//=/,}"; done && \
for REQUIREMENT_REQ in ${REQUIREMENTS_ANSIBLE_COLLECTIONS[@]}; do ansible-galaxy collection install "${REQUIREMENT_REQ//=/:}"; done; fi; done \
fi
15 changes: 8 additions & 7 deletions template.d/22_extensions
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
## extensions
RUN test -n "${EXTENSIONS}" && \
IFS=';' && \
for EXTENSION in ${EXTENSIONS[@]}; do IFS='' && declare -u EXT="${EXTENSION}" && EXTENSIONS_EXT=$(eval "echo \$EXTENSIONS_${EXT}") && \
IFS=';' && \
if [ "${EXT}" = "AZ" ]; then for EXTENSION_EXT in ${EXTENSIONS_EXT[@]}; do az extension add -y --name $(echo "${EXTENSION_EXT}" | sed 's/=/ --version /g'); done; fi && \
if [ "${EXT}" = "GOOGLE" ]; then for EXTENSION_EXT in ${EXTENSIONS_EXT[@]}; do ./google/*/bin/gcloud components install "${EXTENSION_EXT}" && $(echo "${EXTENSION_EXT}" | sed 's/.*=/gcloud components update --version /g'); done; fi && \
if [ "${EXT}" = "HELM" ]; then for EXTENSION_EXT in ${EXTENSIONS_EXT[@]}; do helm plugin install $(echo "${EXTENSION_EXT}" | sed 's/=/ --version=/g'); done; fi; done || :
RUN if [ -n "${EXTENSIONS}" ]; then \
IFS=';' && \
for EXTENSION in ${EXTENSIONS[@]}; do IFS='' && declare -u EXT="${EXTENSION}" && EXTENSIONS_EXT=$(eval "echo \$EXTENSIONS_${EXT}") && \
IFS=';' && \
if [ "${EXT}" = "AZ" ]; then for EXTENSION_EXT in ${EXTENSIONS_EXT[@]}; do az extension add -y --name "${EXTENSION_EXT//=/ --version }"; done; fi && \
if [ "${EXT}" = "GOOGLE" ]; then for EXTENSION_EXT in ${EXTENSIONS_EXT[@]}; do ./google/*/bin/gcloud components install "${EXTENSION_EXT}" && "${EXTENSION_EXT//.*=/gcloud components update --version }"; done; fi && \
if [ "${EXT}" = "HELM" ]; then for EXTENSION_EXT in ${EXTENSIONS_EXT[@]}; do helm plugin install "${EXTENSION_EXT//=/ --version}"; done; fi; done \
fi
2 changes: 1 addition & 1 deletion template.d/30_post_build_config
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ ARG POST_BUILD_COMMANDS

# ARG PROFILES_N

WORKDIR ${WORKDIR}
WORKDIR "${WORKDIR}"
CMD ["/bin/bash"]
11 changes: 6 additions & 5 deletions template.d/31_profiles
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
## profiles
RUN test -n "${PROFILES}" && \
IFS=';' && \
for PROFILE in ${PROFILES[@]}; do IFS='' && PR_PROFILE=$(echo "${PROFILE}" | tr '.' '_') && declare -u PR="${PR_PROFILE}" && PROFILES_PR=$(eval "echo \$PROFILES_${PR}") && \
IFS=';' && \
for PROFILE_PR in ${PROFILES_PR[@]}; do echo "${PROFILE_PR}" >> "${PROFILE}"; done; done || :
RUN if [ -n "${PROFILES}" ]; then \
IFS=';' && \
for PROFILE in ${PROFILES[@]}; do IFS='' && declare -u PR="${PROFILE//./_}" && PROFILES_PR=$(eval "echo \$PROFILES_${PR}") && \
IFS=';' && \
for PROFILE_PR in ${PROFILES_PR[@]}; do echo "${PROFILE_PR}" >> "${PROFILE}"; done; done \
fi
7 changes: 4 additions & 3 deletions template.d/32_post_build_commands
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
## post_build_commands
RUN test -n "${POST_BUILD_COMMANDS}" && \
IFS=';' && \
for POST_BUILD_COMMAND in ${POST_BUILD_COMMANDS[@]}; do bash -c "${POST_BUILD_COMMAND}"; done || :
RUN if [ -n "${POST_BUILD_COMMANDS}" ]; then \
IFS=';' && \
for POST_BUILD_COMMAND in "${POST_BUILD_COMMANDS[@]}"; do bash -c "${POST_BUILD_COMMAND}"; done \
fi

0 comments on commit 72dbc5c

Please sign in to comment.