mirror of
https://github.com/0rangebananaspy/authelia.git
synced 2024-09-14 22:47:21 +07:00
74a7e96409
* ci: add integration containers for duo and haproxy This change utilises specific integration containers for the DuoPush and HAProxy suites. In the case of DuoPush suite specifically in dev mode the container will be built on suite startup. * ci: factorize pre-command hook and unset async on trigger steps
86 lines
5.2 KiB
Bash
Executable File
86 lines
5.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set +u
|
|
|
|
if [[ "${BUILDKITE_PULL_REQUEST}" != "false" ]]; then
|
|
if [[ "${BUILDKITE_LABEL}" == ":service_dog: Linting" ]]; then
|
|
echo "--- :go::service_dog: Provide in-line commentary for pull request"
|
|
reviewdog -reporter=github-pr-review
|
|
fi
|
|
fi
|
|
|
|
if [[ ! "${BUILDKITE_BRANCH}" =~ ^(v.*) ]] && [[ "${BUILDKITE_COMMAND_EXIT_STATUS}" == 0 ]]; then
|
|
if [[ "${BUILDKITE_LABEL}" == ":hammer_and_wrench: Unit Test" ]] || [[ "${BUILDKITE_LABEL}" =~ ":selenium:" ]]; then
|
|
echo "--- :codecov: Upload coverage reports"
|
|
NAME="UnitTest"
|
|
if [[ "${SUITE}" != "" ]]; then
|
|
NAME=${SUITE}
|
|
fi
|
|
if [[ "${BUILDKITE_AGENT_META_DATA_CODECOV}" == "verbose" ]]; then
|
|
BUILDKITE_AGENT_META_DATA_CODECOV="-v"
|
|
fi
|
|
codecov -Z -c -f 'coverage*.txt' -n ${NAME} -F backend "${BUILDKITE_AGENT_META_DATA_CODECOV}"
|
|
if [[ "${BUILDKITE_LABEL}" =~ ":selenium:" ]]; then
|
|
cd web && pnpm report
|
|
fi
|
|
codecov -Z -c -f '!Dockerfile*' -f '!*.go' -f '!*.zst' -n ${NAME} -F frontend "${BUILDKITE_AGENT_META_DATA_CODECOV}"
|
|
fi
|
|
fi
|
|
|
|
if [[ "${BUILDKITE_LABEL}" =~ ":selenium:" ]] || [[ "${BUILDKITE_LABEL}" =~ ":docker: Build Image" ]]; then
|
|
CONTAINERS=$(docker ps -a -q)
|
|
if [[ ${CONTAINERS} != "" ]]; then
|
|
echo "--- :docker: Remove lingering containers"
|
|
docker rm -f ${CONTAINERS}
|
|
fi
|
|
fi
|
|
|
|
if [[ "${BUILDKITE_LABEL}" == ":debian: Package Builds" ]]; then
|
|
cat .buildkite/annotations/artifacts | buildkite-agent annotate --style "success" --context "ctx-success"
|
|
fi
|
|
|
|
if [[ "${BUILDKITE_LABEL}" == ":docker: Build and Deploy Image" ]]; then
|
|
docker logout
|
|
fi
|
|
|
|
if [[ "${BUILDKITE_LABEL}" =~ ":docker: Deploy" ]]; then
|
|
docker logout
|
|
docker logout ghcr.io
|
|
fi
|
|
|
|
if [[ "${BUILDKITE_LABEL}" == ":docker: Deploy Manifest" ]] && [[ "${BUILDKITE_BRANCH}" == "master" ]] && [[ "${BUILDKITE_PULL_REQUEST}" == "false" ]]; then
|
|
echo "--- :docker: Removing tags for deleted branches"
|
|
anontoken=$(curl -fsL --retry 3 'https://auth.docker.io/token?service=registry.docker.io&scope=repository:authelia/authelia:pull' | jq -r .token)
|
|
authtoken=$(curl -fs --retry 3 -H "Content-Type: application/json" -X "POST" -d '{"username": "'${DOCKER_USERNAME}'", "password": "'${DOCKER_PASSWORD}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)
|
|
for BRANCH_TAG in $(dockerbranchtags=$(curl -fsL --retry 3 -H "Authorization: Bearer ${anontoken}" https://registry-1.docker.io/v2/authelia/authelia/tags/list | jq -r '.tags[] | select(startswith("PR") | not)' | \
|
|
sed -r '/^(latest|master|develop|v.*|([[:digit:]]+)\.?([[:digit:]]+)?\.?([[:digit:]]+)?)$/d' | sort) && \
|
|
githubbranches=$(curl -fs --retry 3 https://api.github.com/repos/authelia/authelia/branches | jq -r '.[].name' | sort) && \
|
|
comm -23 <(echo "${dockerbranchtags}") <(echo "${githubbranches}")); do
|
|
echo "Removing tag ${BRANCH_TAG} from docker.io"
|
|
curl -fsL --retry 3 -o /dev/null -X "DELETE" -H "Authorization: JWT ${authtoken}" https://hub.docker.com/v2/repositories/authelia/authelia/tags/${BRANCH_TAG}/
|
|
for i in {1..5}; do
|
|
for GHCR_VERSION in $(curl -fsL --retry 3 -H "Authorization: Bearer ${GHCR_PASSWORD}" -H "Accept: application/vnd.github.v3+json" "https://api.github.com/orgs/authelia/packages/container/authelia/versions?page=${i}&per_page=100" | jq -j --arg tag ${BRANCH_TAG} '.[] | select(.metadata.container.tags[] | contains($tag)) | .metadata.container.tags[], ",", .id, "\n"'); do
|
|
IFS=','
|
|
read -a TAGID <<< ${GHCR_VERSION}
|
|
echo "Removing tag ${TAGID[0]} with id ${TAGID[1]} from ghcr.io"
|
|
curl -fsL --retry 3 -o /dev/null -X "DELETE" -H "Authorization: Bearer ${GHCR_PASSWORD}" -H "Accept: application/vnd.github.v3+json" https://api.github.com/orgs/authelia/packages/container/authelia/versions/${TAGID[1]}
|
|
done
|
|
done
|
|
done
|
|
echo "--- :docker: Removing tags for merged or closed pull requests"
|
|
for PR_TAG in $(dockerprtags=$(curl -fsL --retry 3 -H "Authorization: Bearer ${anontoken}" https://registry-1.docker.io/v2/authelia/authelia/tags/list | jq -r '.tags[] | select(startswith("PR"))' | sort) && \
|
|
githubprs=$(curl -fs --retry 3 https://api.github.com/repos/authelia/authelia/pulls | jq -r '.[].number' | sed -e 's/^/PR/' | sort) && \
|
|
comm -23 <(echo "${dockerprtags}") <(echo "${githubprs}")); do
|
|
echo "Removing tag ${PR_TAG} from docker.io"
|
|
curl -fsL --retry 3 -o /dev/null -X "DELETE" -H "Authorization: JWT ${authtoken}" https://hub.docker.com/v2/repositories/authelia/authelia/tags/${PR_TAG}/
|
|
for i in {1..5}; do
|
|
for GHCR_VERSION in $(curl -fsL --retry 3 -H "Authorization: Bearer ${GHCR_PASSWORD}" -H "Accept: application/vnd.github.v3+json" "https://api.github.com/orgs/authelia/packages/container/authelia/versions?page=${i}&per_page=100" | jq -j --arg tag ${PR_TAG} '.[] | select(.metadata.container.tags[] | contains($tag)) | .metadata.container.tags[], ",", .id, "\n"'); do
|
|
IFS=','
|
|
read -a TAGID <<< ${GHCR_VERSION}
|
|
echo "Removing tag ${TAGID[0]} with id ${TAGID[1]} from ghcr.io"
|
|
curl -fsL --retry 3 -o /dev/null -X "DELETE" -H "Authorization: Bearer ${GHCR_PASSWORD}" -H "Accept: application/vnd.github.v3+json" https://api.github.com/orgs/authelia/packages/container/authelia/versions/${TAGID[1]}
|
|
done
|
|
done
|
|
done
|
|
fi
|