diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index da78951..101e210 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,3 +1,8 @@ +image: registry.opensuse.org/opensuse/infrastructure/containers/heroes-salt-testing:latest + +variables: + DOCKER_DRIVER: overlay2 + stages: - validate - test @@ -11,10 +16,10 @@ validate: tags: - docker -leap15.1_show_highstate: +leap15.2_show_highstate: stage: validate before_script: - - bin/prepare_test_env.sh -i opensuse -g -o Leap,15,1 + - bin/prepare_test_env.sh -i opensuse -g -o Leap,15,2 - bin/get_formulas.py -c -d /srv/formula -s --clone-from 'https://gitlab.infra.opensuse.org/saltstack-formulas' --clone-branch production script: bin/test_show_highstate.sh tags: @@ -33,9 +38,10 @@ upstream_formulas_show_highstate: - docker test_nginx: + image: registry.opensuse.org/opensuse/infrastructure/containers/heroes-salt-testing-nginx:latest stage: test before_script: - - bin/prepare_test_env.sh -i opensuse -g -p nginx + - bin/prepare_test_env.sh -i opensuse -g - bin/get_formulas.py -c -d /srv/formula -s --clone-from 'https://gitlab.infra.opensuse.org/saltstack-formulas' --clone-branch production -f nginx script: bin/test_nginx.sh tags: @@ -44,7 +50,7 @@ test_nginx: test_sudo: stage: test before_script: - - bin/prepare_test_env.sh -i opensuse -g -p sudo + - bin/prepare_test_env.sh -i opensuse -g - bin/get_formulas.py -c -d /srv/formula -s --clone-from 'https://gitlab.infra.opensuse.org/saltstack-formulas' --clone-branch production script: bin/test_sudo.sh tags: diff --git a/bin/prepare_test_env.sh b/bin/prepare_test_env.sh index 2471cf1..bdbe6be 100755 --- a/bin/prepare_test_env.sh +++ b/bin/prepare_test_env.sh @@ -3,6 +3,16 @@ # See the description at the help() set -e +set -x +if [ ! -r /etc/os-release ]; then + echo "Could not read /etc/os-release - exiting" >&2 + exit 1 +fi +source /etc/os-release +SECRETS="False" +REPO_URL=${PRETTY_NAME// /_} +PKG='' +INSTANCE='opensuse' if [[ $(whoami) != 'root' ]]; then if [[ -f /usr/bin/sudo ]]; then @@ -17,7 +27,6 @@ help() { echo "Prepares the CI runner or workstation environment to run highstate or show_highstate tests" echo echo "Arguments:" - echo echo "-p Comma-separated list of additional packages to be installed" echo "-i Choose gitlab instance. Choices: opensuse, suse" echo "-o OPTIONAL: Specify different OS. Examples: \"Leap,42,3\", \"SLES,12,3\"" @@ -28,12 +37,6 @@ help() { [[ $1 == '--help' ]] && help && exit -#source /etc/os-release -source /etc/os-release -SECRETS="False" -#REPO_URL=${PRETTY_NAME// /_} -REPO_URL=${PRETTY_NAME// /_} - while getopts p:i:o:gsh arg; do case ${arg} in p) PKG=(${OPTARG//,/ }) ;; @@ -46,33 +49,29 @@ while getopts p:i:o:gsh arg; do esac done -[[ -z $INSTANCE ]] && help && exit 1 -[[ -n $HIGHSTATE ]] && HIGHSTATE_PKGS=( git python3-PyYAML ) +[[ -z "$INSTANCE" ]] && help && exit 1 +[[ -n "$HIGHSTATE" ]] && HIGHSTATE_PKGS=( git-core python3-PyYAML ) -if [[ $INSTANCE == 'opensuse' ]]; then +if [[ "$INSTANCE" == 'opensuse' ]]; then DOMAIN='infra.opensuse.org' SALT_CLUSTER='opensuse' VIRT_CLUSTER='atreju' - #$SUDO zypper -q ar -p 100 -fG http://download.opensuse.org/repositories/openSUSE:/infrastructure/${REPO_URL}/ openSUSE:infrastructure > /dev/null 2>&1 - $SUDO zypper -q ar -p 100 -fG http://download.opensuse.org/repositories/openSUSE:/infrastructure/${REPO_URL}/ openSUSE:infrastructure > /dev/null 2>&1 - CERT_PKG='ca-certificates-freeipa-opensuse' -elif [[ $INSTANCE == 'suse' ]]; then - DOMAIN='suse.de' - SALT_CLUSTER='suse_internal' - VIRT_CLUSTER='morla' - #$SUDO zypper -q ar -p 100 -fG http://download.nue.suse.com/ibs/SUSE:/CA/${REPO_URL}/ SUSE:CA > /dev/null 2>&1 - CERT_PKG='ca-certificates-suse' fi -#$SUDO zypper -qn in --no-recommends salt python3-pygit2 $CERT_PKG ${HIGHSTATE_PKGS[@]} ${PKG[@]} -$SUDO zypper -qn in --no-recommends hostname salt python3-pygit2 $CERT_PKG ${HIGHSTATE_PKGS[@]} ${PKG[@]} -$SUDO rm -rf /srv/{salt,pillar} +if [ -n "${PKG[@]}" ]; then + $SUDO zypper --gpg-auto-import-keys ref + $SUDO zypper -qn install --no-recommends ${PKG[@]} +fi + +$SUDO rm -rf /srv/{salt,pillar} 2>/dev/null $SUDO ln -s $PWD/salt /srv/salt $SUDO ln -s $PWD/pillar /srv/pillar ID=$(hostname -f) + printf "grains:\n city: nuremberg\n country: de\n hostusage: test\n reboot_safe: no\n salt_cluster: $SALT_CLUSTER\n virt_cluster: $VIRT_CLUSTER\n" > pillar/id/${ID//./_}.sls -if [[ -n $HIGHSTATE ]]; then + +if [[ -n "$HIGHSTATE" ]]; then ROLES=$(bin/get_roles.py -o yaml) - [[ -n $OS ]] && OS_GRAINS="osfullname: ${OS[0]}\nosmajorrelease: ${OS[1]}\nosrelease_info: [${OS[1]}, ${OS[2]}]\n" + [[ -n "$OS" ]] && OS_GRAINS="osfullname: ${OS[0]}\nosmajorrelease: ${OS[1]}\nosrelease_info: [${OS[1]}, ${OS[2]}]\n" printf "city:\ncountry:\ndomain: $DOMAIN\ninclude_secrets: $SECRETS\n$OS_GRAINS$ROLES\nsalt_cluster: $SALT_CLUSTER\nvirt_cluster:\nvirtual:\n" > /etc/salt/grains fi