From 5058fc2a6e5ebe42e29da8c89e96bdfdad285bba Mon Sep 17 00:00:00 2001 From: Alexander Robson <58195221+aj-robson@users.noreply.github.com> Date: Fri, 5 May 2023 15:05:39 +0100 Subject: [PATCH 01/40] chore: Update git ls-files cmd with missing arg (#832) --- variables.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/variables.mk b/variables.mk index 9c987952..b6a6a771 100644 --- a/variables.mk +++ b/variables.mk @@ -28,7 +28,7 @@ VERSION := $(shell cat VERSION.txt) GITCOMMIT := $(shell git rev-parse --short HEAD) GITBRANCH := $(shell git rev-parse --abbrev-ref HEAD) GITUNTRACKEDCHANGES := $(shell git status --porcelain --untracked-files=no) -GITIGNOREDBUTTRACKEDCHANGES := $(shell git ls-files -i --exclude-standard) +GITIGNOREDBUTTRACKEDCHANGES := $(shell git ls-files -i -c --exclude-standard) ifneq ($(GITUNTRACKEDCHANGES),) GITCOMMIT := $(GITCOMMIT)-dirty endif From 7bccdc21b1ec33210dea04d8bb293abf036224c2 Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Tue, 9 May 2023 00:12:54 +0200 Subject: [PATCH 02/40] chore: update to latest lts, update plugins, remove devbots, add devcontainer (#835) Update to the latest lts Update plugins Remove devbots Initial devcontainer config --- .devbots/needs-triage.yml | 4 --- .devcontainer/devcontainer.json | 43 ++++++++++++++++++++++++++++++ chart/jenkins-operator/README.md | 4 +-- chart/jenkins-operator/values.yaml | 8 +++--- config.base.env | 2 +- pkg/plugins/base_plugins.go | 6 ++--- test/e2e/configuration_test.go | 6 ++--- test/e2e/jenkins_test.go | 2 +- test/e2e/test_utility.go | 2 +- test/helm/helm_test.go | 2 +- 10 files changed, 59 insertions(+), 20 deletions(-) delete mode 100644 .devbots/needs-triage.yml create mode 100644 .devcontainer/devcontainer.json diff --git a/.devbots/needs-triage.yml b/.devbots/needs-triage.yml deleted file mode 100644 index d71c6782..00000000 --- a/.devbots/needs-triage.yml +++ /dev/null @@ -1,4 +0,0 @@ -# Configuration for devbots-needs-triage - https://devbots.xyz/documentation/needs-triage/ - -enabled: true -label: "needs triage" \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..c726b0b5 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,43 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/kubernetes-helm-minikube +{ + "name": "Kubernetes - Minikube-in-Docker", + // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile + "image": "mcr.microsoft.com/devcontainers/base:bullseye", + + "features": { + "ghcr.io/devcontainers/features/docker-in-docker:2": { + "enableNonRootDocker": "true", + "moby": "true" + }, + "ghcr.io/devcontainers/features/kubectl-helm-minikube:1": { + "version": "latest", + "helm": "latest", + "minikube": "latest" + }, + "ghcr.io/devcontainers/features/go:1": { + "version": "1.15", + "golangciLintVersion": "1.26.0" + }, + "ghcr.io/mpriscella/features/kind:1": { + "version": "latest" + }, + "ghcr.io/edouard-lopez/devcontainer-features/bats:0": { + "version": "latest" + } + } + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "kubectl version", + + // Use 'postStartCommand' to run commands after the container is created like starting minikube. + // "postStartCommand": "nohup bash -c 'minikube start &' > minikube.log 2>&1", + + // Configure tool-specific properties. + // "customizations": {}, + + // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. + // "remoteUser": "root" +} diff --git a/chart/jenkins-operator/README.md b/chart/jenkins-operator/README.md index b1878296..c692235d 100644 --- a/chart/jenkins-operator/README.md +++ b/chart/jenkins-operator/README.md @@ -1,6 +1,6 @@ # jenkins-operator -![Version: 0.6.2](https://img.shields.io/badge/Version-0.6.2-informational?style=flat-square) ![AppVersion: 0.7.1](https://img.shields.io/badge/AppVersion-0.7.1-informational?style=flat-square) +![Version: v0.8.0-beta](https://img.shields.io/badge/Version-v0.8.0--beta-informational?style=flat-square) ![AppVersion: v0.8.0-beta](https://img.shields.io/badge/AppVersion-v0.8.0--beta-informational?style=flat-square) Kubernetes native operator which fully manages Jenkins on Kubernetes @@ -52,7 +52,7 @@ Kubernetes native operator which fully manages Jenkins on Kubernetes | jenkins.enabled | bool | `true` | | | jenkins.env | list | `[]` | | | jenkins.hostAliases | object | `{}` | | -| jenkins.image | string | `"jenkins/jenkins:2.387.2-lts"` | | +| jenkins.image | string | `"jenkins/jenkins:2.387.3-lts"` | | | jenkins.imagePullPolicy | string | `"Always"` | | | jenkins.imagePullSecrets | list | `[]` | | | jenkins.labels | object | `{}` | | diff --git a/chart/jenkins-operator/values.yaml b/chart/jenkins-operator/values.yaml index 1ee2335a..bf6a6f6e 100644 --- a/chart/jenkins-operator/values.yaml +++ b/chart/jenkins-operator/values.yaml @@ -33,7 +33,7 @@ jenkins: # image is the name (and tag) of the Jenkins instance # Default: jenkins/jenkins:lts # It's recommended to use LTS (tag: "lts") version - image: jenkins/jenkins:2.387.2-lts + image: jenkins/jenkins:2.387.3-lts # env contains jenkins container environment variables env: [] @@ -87,13 +87,13 @@ jenkins: # # basePlugins: # - name: kubernetes - # version: 3909.v1f2c633e8590 + # version: 3923.v294a_d4250b_91 # - name: workflow-job - # version: 1289.vd1c337fd5354 + # version: 1292.v27d8cc3e2602 # - name: workflow-aggregator # version: 596.v8c21c963d92d # - name: git - # version: 5.0.0 + # version: 5.0.1 # - name: job-dsl # version: "1.83" # - name: configuration-as-code diff --git a/config.base.env b/config.base.env index 78c45675..2a74da58 100644 --- a/config.base.env +++ b/config.base.env @@ -13,5 +13,5 @@ GEN_CRD_API=gen-crd-api-reference-docs IMAGE_PULL_MODE=local HELM_VERSION=3.1.2 CLUSTER_DOMAIN=cluster.local -LATEST_LTS_VERSION=2.387.2 +LATEST_LTS_VERSION=2.387.3 KIND_CLUSTER_NAME=jenkins diff --git a/pkg/plugins/base_plugins.go b/pkg/plugins/base_plugins.go index 40f9948a..a8f23d30 100644 --- a/pkg/plugins/base_plugins.go +++ b/pkg/plugins/base_plugins.go @@ -2,12 +2,12 @@ package plugins const ( configurationAsCodePlugin = "configuration-as-code:1625.v27444588cc3d" - gitPlugin = "git:5.0.0" + gitPlugin = "git:5.0.1" jobDslPlugin = "job-dsl:1.83" - kubernetesPlugin = "kubernetes:3909.v1f2c633e8590" + kubernetesPlugin = "kubernetes:3923.v294a_d4250b_91" kubernetesCredentialsProviderPlugin = "kubernetes-credentials-provider:1.211.vc236a_f5a_2f3c" workflowAggregatorPlugin = "workflow-aggregator:596.v8c21c963d92d" - workflowJobPlugin = "workflow-job:1289.vd1c337fd5354" + workflowJobPlugin = "workflow-job:1292.v27d8cc3e2602" ) // basePluginsList contains plugins to install by operator. diff --git a/test/e2e/configuration_test.go b/test/e2e/configuration_test.go index 33d27e3d..65c742cd 100644 --- a/test/e2e/configuration_test.go +++ b/test/e2e/configuration_test.go @@ -25,12 +25,12 @@ const e2e = "e2e" var expectedBasePluginsList = []plugins.Plugin{ plugins.Must(plugins.New("configuration-as-code:1625.v27444588cc3d")), - plugins.Must(plugins.New("git:5.0.0")), - plugins.Must(plugins.New("kubernetes:3909.v1f2c633e8590")), + plugins.Must(plugins.New("git:5.0.1")), + plugins.Must(plugins.New("kubernetes:3923.v294a_d4250b_91")), plugins.Must(plugins.New("kubernetes-credentials-provider:1.211.vc236a_f5a_2f3c")), plugins.Must(plugins.New("job-dsl:1.83")), plugins.Must(plugins.New("workflow-aggregator:596.v8c21c963d92d")), - plugins.Must(plugins.New("workflow-job:1289.vd1c337fd5354")), + plugins.Must(plugins.New("workflow-job:1292.v27d8cc3e2602")), } func createUserConfigurationSecret(namespace string, stringData map[string]string) { diff --git a/test/e2e/jenkins_test.go b/test/e2e/jenkins_test.go index 003bd9fb..4c3a45d9 100644 --- a/test/e2e/jenkins_test.go +++ b/test/e2e/jenkins_test.go @@ -244,7 +244,7 @@ func restartJenkinsMasterPod(jenkins *v1alpha2.Jenkins) { Eventually(func() (bool, error) { jenkinsPod = getJenkinsMasterPod(jenkins) return jenkinsPod.DeletionTimestamp != nil, nil - }, 30*retryInterval, retryInterval).Should(BeTrue()) + }, 45*retryInterval, retryInterval).Should(BeTrue()) _, _ = fmt.Fprintf(GinkgoWriter, "Jenkins master pod has been restarted\n") } diff --git a/test/e2e/test_utility.go b/test/e2e/test_utility.go index 2db6fae8..81c80b9c 100644 --- a/test/e2e/test_utility.go +++ b/test/e2e/test_utility.go @@ -21,7 +21,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/envtest" ) -const JenkinsTestImage = "jenkins/jenkins:2.387.2-lts" +const JenkinsTestImage = "jenkins/jenkins:2.387.3-lts" var ( Cfg *rest.Config diff --git a/test/helm/helm_test.go b/test/helm/helm_test.go index 185d98b9..6430b8ba 100644 --- a/test/helm/helm_test.go +++ b/test/helm/helm_test.go @@ -47,7 +47,7 @@ var _ = Describe("Jenkins Controller", func() { cmd := exec.Command("../../bin/helm", "upgrade", "jenkins", "../../chart/jenkins-operator", "--namespace", namespace.Name, "--debug", "--set-string", fmt.Sprintf("jenkins.namespace=%s", namespace.Name), - "--set-string", fmt.Sprintf("jenkins.image=%s", "jenkins/jenkins:2.387.2-lts"), + "--set-string", fmt.Sprintf("jenkins.image=%s", "jenkins/jenkins:2.387.3-lts"), "--set-string", fmt.Sprintf("operator.image=%s", *imageName), "--install") output, err := cmd.CombinedOutput() Expect(err).NotTo(HaveOccurred(), string(output)) From 44a7d2460a97a74ae1dd21e286a342bec805c794 Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Tue, 9 May 2023 00:26:02 +0200 Subject: [PATCH 03/40] feat(repo): add stale bot (#836) --- .github/workflows/auto-stale-issue.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/auto-stale-issue.yaml diff --git a/.github/workflows/auto-stale-issue.yaml b/.github/workflows/auto-stale-issue.yaml new file mode 100644 index 00000000..fbed5626 --- /dev/null +++ b/.github/workflows/auto-stale-issue.yaml @@ -0,0 +1,22 @@ +name: "Stale issue automation" +on: + workflow_dispatch: + schedule: + - cron: "0 9 * * *" + +permissions: + issues: write + pull-requests: write + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v8 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + operations-per-run: 200 + days-before-issue-stale: 60 + days-before-issue-close: 10 + exempt-pr-labels: "not-stale" + exempt-issue-labels: "not-stale" From 3275be357a4972df55aac27ddfa1faf17f2d96a4 Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Fri, 26 May 2023 16:10:24 +0200 Subject: [PATCH 04/40] feat: use zstd instead of gz by default, fix the backup script (#841) --- backup/pvc/Dockerfile | 5 +++- backup/pvc/bin/backup.sh | 20 +++++++++---- backup/pvc/bin/get-latest.sh | 2 +- backup/pvc/bin/restore.sh | 16 +++++++++- backup/pvc/bin/run.sh | 2 +- backup/pvc/e2e/backup_and_restore/test.sh | 4 +-- backup/pvc/e2e/get-latest/test.sh | 24 +++++++-------- backup/pvc/e2e/limit_backup_count/test.sh | 30 +++++++++---------- .../test.sh | 4 +-- 9 files changed, 67 insertions(+), 40 deletions(-) diff --git a/backup/pvc/Dockerfile b/backup/pvc/Dockerfile index 834c8c92..3b283e16 100644 --- a/backup/pvc/Dockerfile +++ b/backup/pvc/Dockerfile @@ -13,7 +13,10 @@ ARG GID ENV USER=user -RUN addgroup --gid "$GID" "$USER" && \ +RUN apt update \ + && apt install -y procps zstd \ + && rm -rf /var/lib/apt/lists/* \ + && addgroup --gid "$GID" "$USER" && \ adduser \ --disabled-password \ --gecos "" \ diff --git a/backup/pvc/bin/backup.sh b/backup/pvc/bin/backup.sh index 74f32f88..fad869da 100644 --- a/backup/pvc/bin/backup.sh +++ b/backup/pvc/bin/backup.sh @@ -6,7 +6,7 @@ set -eo pipefail [[ -z "${BACKUP_DIR}" ]] && echo "Required 'BACKUP_DIR' env not set" && exit 1; [[ -z "${JENKINS_HOME}" ]] && echo "Required 'JENKINS_HOME' env not set" && exit 1; BACKUP_TMP_DIR=$(mktemp -d) -trap "test -d "${BACKUP_TMP_DIR}" && rm -fr "${BACKUP_TMP_DIR}"" EXIT ERR SIGINT SIGTERM +trap "test -d "${BACKUP_TMP_DIR}" && rm -fr "${BACKUP_TMP_DIR}"" EXIT SIGINT SIGTERM backup_number=$1 echo "Running backup" @@ -15,12 +15,22 @@ echo "Running backup" # config.xml in child directories is state that should. For example- # branches/myorg/branches/myrepo/branches/master/config.xml should be retained while # branches/myorg/config.xml should not -tar -C "${JENKINS_HOME}" -czf "${BACKUP_TMP_DIR}/${backup_number}.tar.gz" --exclude jobs/*/workspace* --no-wildcards-match-slash --anchored --exclude jobs/*/config.xml -c jobs && \ -mv "${BACKUP_TMP_DIR}/${backup_number}.tar.gz" "${BACKUP_DIR}/${backup_number}.tar.gz" +tar --zstd -C "${JENKINS_HOME}" -cf "${BACKUP_TMP_DIR}/${backup_number}.tar.zstd" \ + --exclude jobs/*/workspace* \ + --no-wildcards-match-slash --anchored \ + --ignore-failed-read \ + --exclude jobs/*/config.xml -c jobs || ret=$? + +if [[ "$ret" -eq 0 ]]; then + echo "Backup was completed without warnings" + mv "${BACKUP_TMP_DIR}/${backup_number}.tar.zstd" "${BACKUP_DIR}/${backup_number}.tar.zstd" +elif [[ "$ret" -eq 1 ]]; then + echo "Backup was completed with some warnings" + mv "${BACKUP_TMP_DIR}/${backup_number}.tar.zstd" "${BACKUP_DIR}/${backup_number}.tar.zstd" +fi rm -rf "${BACKUP_TMP_DIR}" - -[[ ! -s ${BACKUP_DIR}/${backup_number}.tar.gz ]] && echo "backup file '${BACKUP_DIR}/${backup_number}.tar.gz' is empty" && exit 1; +[[ ! -s ${BACKUP_DIR}/${backup_number}.tar.zstd ]] && echo "backup file '${BACKUP_DIR}/${backup_number}.tar.zstd' is empty" && exit 1; echo Done exit 0 diff --git a/backup/pvc/bin/get-latest.sh b/backup/pvc/bin/get-latest.sh index 2f418a5f..5deba063 100644 --- a/backup/pvc/bin/get-latest.sh +++ b/backup/pvc/bin/get-latest.sh @@ -4,7 +4,7 @@ set -eo pipefail [[ -z "${BACKUP_DIR}" ]] && echo "Required 'BACKUP_DIR' env not set" && exit 1 -latest=$(find ${BACKUP_DIR} -name '*.tar.gz' -exec basename {} \; | sort -g | tail -n 1) +latest=$(find ${BACKUP_DIR} -name '*.tar.zstd' -exec basename {} \; | sort -g | tail -n 1) if [[ "${latest}" == "" ]]; then echo "-1" diff --git a/backup/pvc/bin/restore.sh b/backup/pvc/bin/restore.sh index 5b6f504b..994208d3 100644 --- a/backup/pvc/bin/restore.sh +++ b/backup/pvc/bin/restore.sh @@ -7,9 +7,23 @@ set -eo pipefail [[ -z "${JENKINS_HOME}" ]] && echo "Required 'JENKINS_HOME' env not set" && exit 1; backup_number=$1 +backup_file="${BACKUP_DIR}/${backup_number}" echo "Running restore backup with backup number #${backup_number}" -tar -C ${JENKINS_HOME} -zxf "${BACKUP_DIR}/${backup_number}.tar.gz" +if [[ -f "$backup_file.tar.gz" ]]; then + echo "Old format tar.gz found, restoring it" + OPTS="" + EXT="tar.gz" +elif [[ -f "$backup_file.tar.zstd" ]]; then + echo "Backup file found, proceeding" + OPTS="--zstd" + EXT="tar.zstd" +else + echo "ERR: Backup file not found: $backup_file" + exit 1 +fi + +tar $OPTS -C "${JENKINS_HOME}" -xf "${BACKUP_DIR}/${backup_number}.${EXT}" echo Done exit 0 diff --git a/backup/pvc/bin/run.sh b/backup/pvc/bin/run.sh index d764c696..56c2d687 100644 --- a/backup/pvc/bin/run.sh +++ b/backup/pvc/bin/run.sh @@ -11,6 +11,6 @@ do if [[ ! -z "${BACKUP_COUNT}" ]]; then echo "Trimming to only ${BACKUP_COUNT} recent backups in preparation for new backup" #TODO: add the list of exceeding backup before delete - find ${BACKUP_DIR} -maxdepth 1 -name '*.tar.gz' -exec basename {} \; | sort -gr | tail -n +$((BACKUP_COUNT +1)) | xargs -I '{}' rm ${BACKUP_DIR}/'{}' + find ${BACKUP_DIR} -maxdepth 1 -name '*.tar.*' -exec basename {} \; | sort -gr | tail -n +$((BACKUP_COUNT +1)) | xargs -I '{}' rm ${BACKUP_DIR}/'{}' fi done diff --git a/backup/pvc/e2e/backup_and_restore/test.sh b/backup/pvc/e2e/backup_and_restore/test.sh index df5d1519..e69901c5 100755 --- a/backup/pvc/e2e/backup_and_restore/test.sh +++ b/backup/pvc/e2e/backup_and_restore/test.sh @@ -30,7 +30,7 @@ trap "docker rm -vf $cid > /dev/null;rm -rf ${BACKUP_DIR};rm -rf ${RESTORE_FOLDE backup_number=1 docker exec ${cid} /home/user/bin/backup.sh ${backup_number} -backup_file="${BACKUP_DIR}/${backup_number}.tar.gz" +backup_file="${BACKUP_DIR}/${backup_number}.tar.zstd" [[ ! -f ${backup_file} ]] && echo "Backup file ${backup_file} not found" && exit 1; docker exec ${cid} /bin/bash -c "JENKINS_HOME=${RESTORE_FOLDER};/home/user/bin/restore.sh ${backup_number}" @@ -38,4 +38,4 @@ docker exec ${cid} /bin/bash -c "JENKINS_HOME=${RESTORE_FOLDER};/home/user/bin/r echo "Compare directories" diff --brief --recursive "${RESTORE_FOLDER}" "${JENKINS_HOME_AFTER_RESTORE}" echo "Directories are the same" -echo PASS \ No newline at end of file +echo PASS diff --git a/backup/pvc/e2e/get-latest/test.sh b/backup/pvc/e2e/get-latest/test.sh index b9b228d4..a0aabe9a 100755 --- a/backup/pvc/e2e/get-latest/test.sh +++ b/backup/pvc/e2e/get-latest/test.sh @@ -19,17 +19,17 @@ mkdir -p ${BACKUP_DIR} mkdir -p ${JENKINS_HOME} mkdir -p ${BACKUP_DIR}/lost+found -touch ${BACKUP_DIR}/1.tar.gz -touch ${BACKUP_DIR}/2.tar.gz -touch ${BACKUP_DIR}/3.tar.gz -touch ${BACKUP_DIR}/4.tar.gz -touch ${BACKUP_DIR}/5.tar.gz -touch ${BACKUP_DIR}/6.tar.gz -touch ${BACKUP_DIR}/7.tar.gz -touch ${BACKUP_DIR}/8.tar.gz -touch ${BACKUP_DIR}/9.tar.gz -touch ${BACKUP_DIR}/10.tar.gz -touch ${BACKUP_DIR}/11.tar.gz +touch ${BACKUP_DIR}/1.tar.zstd +touch ${BACKUP_DIR}/2.tar.zstd +touch ${BACKUP_DIR}/3.tar.zstd +touch ${BACKUP_DIR}/4.tar.zstd +touch ${BACKUP_DIR}/5.tar.zstd +touch ${BACKUP_DIR}/6.tar.zstd +touch ${BACKUP_DIR}/7.tar.zstd +touch ${BACKUP_DIR}/8.tar.zstd +touch ${BACKUP_DIR}/9.tar.zstd +touch ${BACKUP_DIR}/10.tar.zstd +touch ${BACKUP_DIR}/11.tar.zstd # Create an instance of the container under testing cid="$(docker run -e JENKINS_HOME=${JENKINS_HOME} -v ${JENKINS_HOME}:${JENKINS_HOME}:ro -e BACKUP_DIR=${BACKUP_DIR} -v ${BACKUP_DIR}:${BACKUP_DIR}:rw -d ${docker_image})" @@ -39,7 +39,7 @@ echo "Docker container ID '${cid}'" trap "docker rm -vf $cid > /dev/null;rm -rf ${BACKUP_DIR};rm -rf ${JENKINS_HOME}" EXIT latest=$(docker exec ${cid} /bin/bash -c "JENKINS_HOME=${RESTORE_FOLDER};/home/user/bin/get-latest.sh") -rm ${BACKUP_DIR}/*.tar.gz +rm ${BACKUP_DIR}/*.tar.zstd empty_latest=$(docker exec ${cid} /bin/bash -c "JENKINS_HOME=${RESTORE_FOLDER};/home/user/bin/get-latest.sh") if [[ "${DEBUG}" ]]; then diff --git a/backup/pvc/e2e/limit_backup_count/test.sh b/backup/pvc/e2e/limit_backup_count/test.sh index 7c4c66ee..469b3e44 100755 --- a/backup/pvc/e2e/limit_backup_count/test.sh +++ b/backup/pvc/e2e/limit_backup_count/test.sh @@ -19,17 +19,17 @@ mkdir -p ${BACKUP_DIR} mkdir -p ${JENKINS_HOME} mkdir -p ${BACKUP_DIR}/lost+found -touch ${BACKUP_DIR}/1.tar.gz -touch ${BACKUP_DIR}/2.tar.gz -touch ${BACKUP_DIR}/3.tar.gz -touch ${BACKUP_DIR}/4.tar.gz -touch ${BACKUP_DIR}/5.tar.gz -touch ${BACKUP_DIR}/6.tar.gz -touch ${BACKUP_DIR}/7.tar.gz -touch ${BACKUP_DIR}/8.tar.gz -touch ${BACKUP_DIR}/9.tar.gz -touch ${BACKUP_DIR}/10.tar.gz -touch ${BACKUP_DIR}/11.tar.gz +touch ${BACKUP_DIR}/1.tar.zstd +touch ${BACKUP_DIR}/2.tar.zstd +touch ${BACKUP_DIR}/3.tar.zstd +touch ${BACKUP_DIR}/4.tar.zstd +touch ${BACKUP_DIR}/5.tar.zstd +touch ${BACKUP_DIR}/6.tar.zstd +touch ${BACKUP_DIR}/7.tar.zstd +touch ${BACKUP_DIR}/8.tar.zstd +touch ${BACKUP_DIR}/9.tar.zstd +touch ${BACKUP_DIR}/10.tar.zstd +touch ${BACKUP_DIR}/11.tar.zstd # Create an instance of the container under testing cid="$(docker run -e BACKUP_COUNT=2 -e JENKINS_HOME=${JENKINS_HOME} -v ${JENKINS_HOME}:${JENKINS_HOME}:ro -e BACKUP_DIR=${BACKUP_DIR} -v ${BACKUP_DIR}:${BACKUP_DIR}:rw -d ${docker_image})" @@ -39,7 +39,7 @@ echo "Docker container ID '${cid}'" trap "docker rm -vf $cid > /dev/null;rm -rf ${BACKUP_DIR};rm -rf ${JENKINS_HOME}" EXIT sleep 11 -touch ${BACKUP_DIR}/12.tar.gz +touch ${BACKUP_DIR}/12.tar.zstd sleep 11 if [[ "${DEBUG}" ]]; then @@ -48,7 +48,7 @@ if [[ "${DEBUG}" ]]; then fi # only two latest backup should exists -[[ $(ls -1 ${BACKUP_DIR} | grep 'tar.gz' | wc -l) -eq 2 ]] || exit 1 -[[ -f ${BACKUP_DIR}/11.tar.gz ]] || exit 2 -[[ -f ${BACKUP_DIR}/12.tar.gz ]] || exit 3 +[[ $(ls -1 ${BACKUP_DIR} | grep 'tar.zstd' | wc -l) -eq 2 ]] || exit 1 +[[ -f ${BACKUP_DIR}/11.tar.zstd ]] || exit 2 +[[ -f ${BACKUP_DIR}/12.tar.zstd ]] || exit 3 echo PASS diff --git a/backup/pvc/e2e/tmp_dir_clean_after_backup_creation/test.sh b/backup/pvc/e2e/tmp_dir_clean_after_backup_creation/test.sh index 7b963357..662809c8 100755 --- a/backup/pvc/e2e/tmp_dir_clean_after_backup_creation/test.sh +++ b/backup/pvc/e2e/tmp_dir_clean_after_backup_creation/test.sh @@ -29,8 +29,8 @@ docker exec ${cid} /home/user/bin/backup.sh ${backup_number} [ "$(docker exec ${cid} ls /tmp | grep 'tmp')" ] && echo "tmp directory not empty" && exit 1; -backup_file="${BACKUP_DIR}/${backup_number}.tar.gz" +backup_file="${BACKUP_DIR}/${backup_number}.tar.zstd" [[ ! -f ${backup_file} ]] && echo "Backup file ${backup_file} not found" && exit 1; echo "tmp directory empty, backup in backup directory present" -echo PASS \ No newline at end of file +echo PASS From 00bb04745b8e895df2af84f91f5381c339d7a820 Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Tue, 30 May 2023 09:36:55 +0200 Subject: [PATCH 05/40] Fix: add tollerations again (#842) Signed-off-by: tombokombo Co-authored-by: Tomas Hulata --- chart/jenkins-operator/README.md | 1 + chart/jenkins-operator/templates/jenkins.yaml | 3 +++ chart/jenkins-operator/values.yaml | 9 ++++++--- pkg/plugins/base_plugins.go | 6 +++--- test/e2e/configuration_test.go | 6 +++--- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/chart/jenkins-operator/README.md b/chart/jenkins-operator/README.md index c692235d..857b8b52 100644 --- a/chart/jenkins-operator/README.md +++ b/chart/jenkins-operator/README.md @@ -88,6 +88,7 @@ Kubernetes native operator which fully manages Jenkins on Kubernetes | jenkins.seedJobAgentImage | string | `""` | | | jenkins.seedJobs | list | `[]` | | | jenkins.serviceAccount.annotations | object | `{}` | | +| jenkins.tolerations | list | `[]` | | | jenkins.validateSecurityWarnings | bool | `false` | | | jenkins.volumeMounts | list | `[]` | | | jenkins.volumes[0].name | string | `"backup"` | | diff --git a/chart/jenkins-operator/templates/jenkins.yaml b/chart/jenkins-operator/templates/jenkins.yaml index 1ce3b0cc..c4d39b76 100644 --- a/chart/jenkins-operator/templates/jenkins.yaml +++ b/chart/jenkins-operator/templates/jenkins.yaml @@ -95,6 +95,9 @@ spec: {{- with .Values.jenkins.nodeSelector }} nodeSelector: {{ toYaml . | nindent 6 }} {{- end }} + {{- with .Values.jenkins.tolerations }} + tolerations: {{ toYaml . | nindent 6 }} + {{- end }} {{- with .Values.jenkins.annotations }} annotations: {{ toYaml . | nindent 6 }} {{- end }} diff --git a/chart/jenkins-operator/values.yaml b/chart/jenkins-operator/values.yaml index bf6a6f6e..7df657a0 100644 --- a/chart/jenkins-operator/values.yaml +++ b/chart/jenkins-operator/values.yaml @@ -27,6 +27,9 @@ jenkins: # nodeSelector are injected into metadata nodeSelector field nodeSelector: {} + # tolerations are injected into metadata tolerations field + tolerations: [] + # annotations are injected into metadata annotations field annotations: {} @@ -87,13 +90,13 @@ jenkins: # # basePlugins: # - name: kubernetes - # version: 3923.v294a_d4250b_91 + # version: 3937.vd7b_82db_e347b_ # - name: workflow-job - # version: 1292.v27d8cc3e2602 + # version: 1301.v054d9cea_9593 # - name: workflow-aggregator # version: 596.v8c21c963d92d # - name: git - # version: 5.0.1 + # version: 5.0.2 # - name: job-dsl # version: "1.83" # - name: configuration-as-code diff --git a/pkg/plugins/base_plugins.go b/pkg/plugins/base_plugins.go index a8f23d30..39ca3264 100644 --- a/pkg/plugins/base_plugins.go +++ b/pkg/plugins/base_plugins.go @@ -2,12 +2,12 @@ package plugins const ( configurationAsCodePlugin = "configuration-as-code:1625.v27444588cc3d" - gitPlugin = "git:5.0.1" + gitPlugin = "git:5.0.2" jobDslPlugin = "job-dsl:1.83" - kubernetesPlugin = "kubernetes:3923.v294a_d4250b_91" + kubernetesPlugin = "kubernetes:3937.vd7b_82db_e347b_" kubernetesCredentialsProviderPlugin = "kubernetes-credentials-provider:1.211.vc236a_f5a_2f3c" workflowAggregatorPlugin = "workflow-aggregator:596.v8c21c963d92d" - workflowJobPlugin = "workflow-job:1292.v27d8cc3e2602" + workflowJobPlugin = "workflow-job:1301.v054d9cea_9593" ) // basePluginsList contains plugins to install by operator. diff --git a/test/e2e/configuration_test.go b/test/e2e/configuration_test.go index 65c742cd..ff8c8662 100644 --- a/test/e2e/configuration_test.go +++ b/test/e2e/configuration_test.go @@ -25,12 +25,12 @@ const e2e = "e2e" var expectedBasePluginsList = []plugins.Plugin{ plugins.Must(plugins.New("configuration-as-code:1625.v27444588cc3d")), - plugins.Must(plugins.New("git:5.0.1")), - plugins.Must(plugins.New("kubernetes:3923.v294a_d4250b_91")), + plugins.Must(plugins.New("git:5.0.2")), + plugins.Must(plugins.New("kubernetes:3937.vd7b_82db_e347b_")), plugins.Must(plugins.New("kubernetes-credentials-provider:1.211.vc236a_f5a_2f3c")), plugins.Must(plugins.New("job-dsl:1.83")), plugins.Must(plugins.New("workflow-aggregator:596.v8c21c963d92d")), - plugins.Must(plugins.New("workflow-job:1292.v27d8cc3e2602")), + plugins.Must(plugins.New("workflow-job:1301.v054d9cea_9593")), } func createUserConfigurationSecret(namespace string, stringData map[string]string) { From d9ea2ee83b9a0d56551e9340b97db9e280c8bee2 Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Sun, 4 Jun 2023 13:35:14 +0200 Subject: [PATCH 06/40] feat: attempt to move restore before seed job creation (#844) --- pkg/configuration/user/reconcile.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/configuration/user/reconcile.go b/pkg/configuration/user/reconcile.go index d5671e2a..303a54cf 100644 --- a/pkg/configuration/user/reconcile.go +++ b/pkg/configuration/user/reconcile.go @@ -56,6 +56,10 @@ func (r *reconcileUserConfiguration) ReconcileCasc() (reconcile.Result, error) { func (r *reconcileUserConfiguration) ReconcileOthers() (reconcile.Result, error) { backupAndRestore := backuprestore.New(r.Configuration, r.logger) + if err := backupAndRestore.Restore(r.jenkinsClient); err != nil { + return reconcile.Result{}, err + } + result, err := r.ensureSeedJobs() if err != nil { return reconcile.Result{}, err @@ -64,10 +68,6 @@ func (r *reconcileUserConfiguration) ReconcileOthers() (reconcile.Result, error) return result, nil } - if err := backupAndRestore.Restore(r.jenkinsClient); err != nil { - return reconcile.Result{}, err - } - if err := backupAndRestore.Backup(false); err != nil { return reconcile.Result{}, err } From 4e5f9d562f287f7b3a2b24bb580412597c98cad8 Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Mon, 5 Jun 2023 22:54:54 +0200 Subject: [PATCH 07/40] chore: add v0.8.0 doc (#845) --- .../content/en/docs/Getting Started/_index.md | 2 +- .../en/docs/Getting Started/latest/_index.md | 10 +- .../latest/configuring-backup-and-restore.md | 8 +- .../latest/deploying-jenkins.md | 4 +- .../latest/installing-the-operator.md | 2 +- .../docs/Getting Started/latest/openshift.md | 4 +- .../latest/separate-namespaces.md | 4 +- .../en/docs/Getting Started/v0.7.x/_index.md | 19 + .../en/docs/Getting Started/v0.7.x/aks.md | 24 + .../v0.7.x/configuring-backup-and-restore.md | 111 + .../configuring-seed-jobs-and-pipelines.md | 336 +++ .../v0.7.x/custom-backup-and-restore.md | 184 ++ .../v0.7.x/customizing-jenkins.md | 203 ++ .../v0.7.x/deploying-jenkins.md | 114 + .../v0.7.x/installing-the-operator.md | 988 ++++++ .../en/docs/Getting Started/v0.7.x/ldap.md | 127 + .../docs/Getting Started/v0.7.x/openshift.md | 10 + .../en/docs/Getting Started/v0.7.x/schema.md | 2679 +++++++++++++++++ .../v0.7.x/separate-namespaces.md | 583 ++++ 19 files changed, 5396 insertions(+), 16 deletions(-) create mode 100644 website/content/en/docs/Getting Started/v0.7.x/_index.md create mode 100644 website/content/en/docs/Getting Started/v0.7.x/aks.md create mode 100644 website/content/en/docs/Getting Started/v0.7.x/configuring-backup-and-restore.md create mode 100644 website/content/en/docs/Getting Started/v0.7.x/configuring-seed-jobs-and-pipelines.md create mode 100644 website/content/en/docs/Getting Started/v0.7.x/custom-backup-and-restore.md create mode 100644 website/content/en/docs/Getting Started/v0.7.x/customizing-jenkins.md create mode 100644 website/content/en/docs/Getting Started/v0.7.x/deploying-jenkins.md create mode 100644 website/content/en/docs/Getting Started/v0.7.x/installing-the-operator.md create mode 100644 website/content/en/docs/Getting Started/v0.7.x/ldap.md create mode 100644 website/content/en/docs/Getting Started/v0.7.x/openshift.md create mode 100644 website/content/en/docs/Getting Started/v0.7.x/schema.md create mode 100644 website/content/en/docs/Getting Started/v0.7.x/separate-namespaces.md diff --git a/website/content/en/docs/Getting Started/_index.md b/website/content/en/docs/Getting Started/_index.md index 7ef77c3a..b6e5a290 100644 --- a/website/content/en/docs/Getting Started/_index.md +++ b/website/content/en/docs/Getting Started/_index.md @@ -2,7 +2,7 @@ title: "Getting Started" linkTitle: "Getting Started" weight: 2 -date: 2021-08-19 +date: 2023-06-04 description: > How to work with Jenkins Operator --- diff --git a/website/content/en/docs/Getting Started/latest/_index.md b/website/content/en/docs/Getting Started/latest/_index.md index 736eb379..156dcaee 100644 --- a/website/content/en/docs/Getting Started/latest/_index.md +++ b/website/content/en/docs/Getting Started/latest/_index.md @@ -1,19 +1,19 @@ --- -title: "Latest (v0.7.x)" -linkTitle: "Latest (v0.7.x)" +title: "Latest (v0.8.x)" +linkTitle: "Latest (v0.8.x)" weight: 1 -date: 2021-12-08 +date: 2023-31-05 description: > How to work with the latest, currently supported Jenkins Operator version. --- {{% pageinfo %}} -This document describes a getting started guide for **Jenkins Operator** `v0.7.x` and also additional configuration. +This document describes a getting started guide for **Jenkins Operator** `v0.8.x` and also additional configuration. {{% /pageinfo %}} ## First Steps Prepare your Kubernetes cluster and set up your `kubectl` access. -Once you have a running Kubernetes cluster you can focus on installing **Jenkins Operator** according to the +Once you have a running Kubernetes cluster you can focus on installing **Jenkins Operator** according to the [Installation](/kubernetes-operator/docs/getting-started/latest/installing-the-operator/) guide. diff --git a/website/content/en/docs/Getting Started/latest/configuring-backup-and-restore.md b/website/content/en/docs/Getting Started/latest/configuring-backup-and-restore.md index 188cb83c..4809ed17 100644 --- a/website/content/en/docs/Getting Started/latest/configuring-backup-and-restore.md +++ b/website/content/en/docs/Getting Started/latest/configuring-backup-and-restore.md @@ -7,8 +7,8 @@ description: > Prevent loss of job history --- -> Because of Jenkins Operator's architecture, the configuration of Jenkins should be done using ConfigurationAsCode -> or GroovyScripts and jobs should be defined as SeedJobs. It means that there is no point in backing up any job configuration +> Because of Jenkins Operator's architecture, the configuration of Jenkins should be done using ConfigurationAsCode +> or GroovyScripts and jobs should be defined as SeedJobs. It means that there is no point in backing up any job configuration > up. Therefore, the backup script makes a copy of jobs history only. Backup and restore is done by a container sidecar. @@ -54,7 +54,7 @@ spec: disableCSRFProtection: false containers: - name: jenkins-master - image: jenkins/jenkins:2.277.4-lts-alpine + image: jenkins/jenkins:2.401.1-lts imagePullPolicy: IfNotPresent resources: limits: @@ -71,7 +71,7 @@ spec: value: /jenkins-home - name: BACKUP_COUNT value: "3" # keep only the 2 most recent backups - image: virtuslab/jenkins-operator-backup-pvc:v0.1.1 # look at backup/pvc directory + image: quay.io/jenkins-kubernetes-operator/backup-pvc:v0.2.3 # look at backup/pvc directory imagePullPolicy: IfNotPresent volumeMounts: - mountPath: /jenkins-home # Jenkins home volume diff --git a/website/content/en/docs/Getting Started/latest/deploying-jenkins.md b/website/content/en/docs/Getting Started/latest/deploying-jenkins.md index d00f68c0..0f732824 100644 --- a/website/content/en/docs/Getting Started/latest/deploying-jenkins.md +++ b/website/content/en/docs/Getting Started/latest/deploying-jenkins.md @@ -14,7 +14,7 @@ This document describes the procedure for deploying Jenkins. ## Prerequisites The Operator needs to have been deployed beforehand. The procedure for deploying Jenkins described here doesn't apply to -installation of Operator via Helm chart unless `jenkins.enabled` was set to false. +installation of Operator via Helm chart unless `jenkins.enabled` was set to false. That’s because by default, installation via Helm chart also covers deploying Jenkins. @@ -43,7 +43,7 @@ spec: disableCSRFProtection: false containers: - name: jenkins-master - image: jenkins/jenkins:2.319.1-lts-alpine + image: jenkins/jenkins:2.401.1-lts imagePullPolicy: Always livenessProbe: failureThreshold: 12 diff --git a/website/content/en/docs/Getting Started/latest/installing-the-operator.md b/website/content/en/docs/Getting Started/latest/installing-the-operator.md index 81cc0170..9289c6e6 100644 --- a/website/content/en/docs/Getting Started/latest/installing-the-operator.md +++ b/website/content/en/docs/Getting Started/latest/installing-the-operator.md @@ -941,7 +941,7 @@ spec: args: - --leader-elect - --validate-security-warnings - image: virtuslab/jenkins-operator:v0.7.0 + image: quay.io/jenkins-kubernetes-operator/operator:v0.8.0 name: jenkins-operator imagePullPolicy: IfNotPresent securityContext: diff --git a/website/content/en/docs/Getting Started/latest/openshift.md b/website/content/en/docs/Getting Started/latest/openshift.md index 610ce015..7048affd 100644 --- a/website/content/en/docs/Getting Started/latest/openshift.md +++ b/website/content/en/docs/Getting Started/latest/openshift.md @@ -7,4 +7,6 @@ description: > Additional configuration for OpenShift --- -## Release 0.7.0 is not compatible with OpenShift. \ No newline at end of file +## Release 0.8.0 is not compatible with jenkins image shipped by redhat in OpenShift. + +But probably it will run correctly with the jenkins lts version. If you find any issue please report it here: https://github.com/jenkinsci/kubernetes-operator/issues/826. diff --git a/website/content/en/docs/Getting Started/latest/separate-namespaces.md b/website/content/en/docs/Getting Started/latest/separate-namespaces.md index 472df44d..9e2d0fed 100644 --- a/website/content/en/docs/Getting Started/latest/separate-namespaces.md +++ b/website/content/en/docs/Getting Started/latest/separate-namespaces.md @@ -281,7 +281,7 @@ spec: - /manager args: - --leader-elect - image: virtuslab/jenkins-operator:v0.7.0 + image: image: quay.io/jenkins-kubernetes-operator/operator:v0.8.0 name: jenkins-operator imagePullPolicy: IfNotPresent securityContext: @@ -536,7 +536,7 @@ spec: disableCSRFProtection: false containers: - name: jenkins-master - image: jenkins/jenkins:2.319.1-lts-alpine + image: jenkins/jenkins:2.401.1-lts imagePullPolicy: Always livenessProbe: failureThreshold: 12 diff --git a/website/content/en/docs/Getting Started/v0.7.x/_index.md b/website/content/en/docs/Getting Started/v0.7.x/_index.md new file mode 100644 index 00000000..266b4f21 --- /dev/null +++ b/website/content/en/docs/Getting Started/v0.7.x/_index.md @@ -0,0 +1,19 @@ +--- +title: "Latest (v0.8.x)" +linkTitle: "Latest (v0.8.x)" +weight: 1 +date: 2021-12-08 +description: > + How to work with the latest, currently supported Jenkins Operator version. +--- + +{{% pageinfo %}} +This document describes a getting started guide for **Jenkins Operator** `v0.8.x` and also additional configuration. +{{% /pageinfo %}} + +## First Steps + +Prepare your Kubernetes cluster and set up your `kubectl` access. + +Once you have a running Kubernetes cluster you can focus on installing **Jenkins Operator** according to the +[Installation](/kubernetes-operator/docs/getting-started/latest/installing-the-operator/) guide. diff --git a/website/content/en/docs/Getting Started/v0.7.x/aks.md b/website/content/en/docs/Getting Started/v0.7.x/aks.md new file mode 100644 index 00000000..5422a1c4 --- /dev/null +++ b/website/content/en/docs/Getting Started/v0.7.x/aks.md @@ -0,0 +1,24 @@ +--- +title: "AKS" +linkTitle: "AKS" +weight: 8 +date: 2021-12-08 +description: > + Additional configuration for Azure Kubernetes Service +--- + +Azure AKS managed Kubernetes service adds to every pod the following environment variables: + +```yaml +- name: KUBERNETES_PORT_443_TCP_ADDR + value: +- name: KUBERNETES_PORT + value: tcp:// +- name: KUBERNETES_PORT_443_TCP + value: tcp:// +- name: KUBERNETES_SERVICE_HOST + value: +``` + +The operator is aware of it and omits these environment variables when checking if a Jenkins pod environment has been changed. It prevents the +restart of a Jenkins pod over and over again. diff --git a/website/content/en/docs/Getting Started/v0.7.x/configuring-backup-and-restore.md b/website/content/en/docs/Getting Started/v0.7.x/configuring-backup-and-restore.md new file mode 100644 index 00000000..0ca8e54c --- /dev/null +++ b/website/content/en/docs/Getting Started/v0.7.x/configuring-backup-and-restore.md @@ -0,0 +1,111 @@ +--- +title: "Configuring backup and restore" +linkTitle: "Configuring backup and restore" +weight: 5 +date: 2023-01-08 +description: > + Prevent loss of job history +--- + +> Because of Jenkins Operator's architecture, the configuration of Jenkins should be done using ConfigurationAsCode +> or GroovyScripts and jobs should be defined as SeedJobs. It means that there is no point in backing up any job configuration +> up. Therefore, the backup script makes a copy of jobs history only. + +Backup and restore is done by a container sidecar. + +### PVC + +#### Create PVC + +Save to the file named pvc.yaml: +```yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: + namespace: +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 500Gi +``` + +Run the following command: +```bash +$ kubectl -n create -f pvc.yaml +``` + +#### Configure Jenkins CR + +```yaml +apiVersion: jenkins.io/v1alpha2 +kind: Jenkins +metadata: + name: jenkins-cr +spec: + jenkinsAPISettings: + authorizationStrategy: createUser + master: + securityContext: + runAsUser: 1000 + fsGroup: 1000 + disableCSRFProtection: false + containers: + - name: jenkins-master + image: jenkins/jenkins:2.277.4-lts-alpine + imagePullPolicy: IfNotPresent + resources: + limits: + cpu: 1500m + memory: 3Gi + requests: + cpu: "1" + memory: 500Mi + - name: backup # container responsible for the backup and restore + env: + - name: BACKUP_DIR + value: /backup + - name: JENKINS_HOME + value: /jenkins-home + - name: BACKUP_COUNT + value: "3" # keep only the 2 most recent backups + image: virtuslab/jenkins-operator-backup-pvc:v0.1.1 # look at backup/pvc directory + imagePullPolicy: IfNotPresent + volumeMounts: + - mountPath: /jenkins-home # Jenkins home volume + name: jenkins-home + - mountPath: /backup # backup volume + name: backup + resources: + limits: + cpu: 1000m + memory: 3Gi + requests: + cpu: "1" + memory: 500Mi + volumes: + - name: backup # PVC volume where backups will be stored + persistentVolumeClaim: + claimName: + backup: + containerName: backup # container name is responsible for backup + action: + exec: + command: + - /home/user/bin/backup.sh # this command is invoked on "backup" container to make backup, for example /home/user/bin/backup.sh , is passed by operator + interval: 30 # how often make backup in seconds + makeBackupBeforePodDeletion: true # make a backup before pod deletion + restore: + containerName: backup # container name is responsible for restore backup + action: + exec: + command: + - /home/user/bin/restore.sh # this command is invoked on "backup" container to make restore backup, for example /home/user/bin/restore.sh , is passed by operator + #recoveryOnce: # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored + getLatestAction: + exec: + command: + - /home/user/bin/get-latest.sh # this command is invoked on "backup" container to get last backup number before pod deletion; not having it in the CR may cause loss of data +``` diff --git a/website/content/en/docs/Getting Started/v0.7.x/configuring-seed-jobs-and-pipelines.md b/website/content/en/docs/Getting Started/v0.7.x/configuring-seed-jobs-and-pipelines.md new file mode 100644 index 00000000..69af62b1 --- /dev/null +++ b/website/content/en/docs/Getting Started/v0.7.x/configuring-seed-jobs-and-pipelines.md @@ -0,0 +1,336 @@ +--- +title: "Configuring Seed Jobs and Pipelines" +linkTitle: "Configuring Seed Jobs and Pipelines" +weight: 4 +date: 2021-12-08 +description: > + How to configure Jenkins with Operator +--- + +## Configure Seed Jobs and Pipelines + +Jenkins operator uses [job-dsl][job-dsl] and [kubernetes-credentials-provider][kubernetes-credentials-provider] plugins for configuring jobs +and deploy keys. + +## Prepare job definitions and pipelines + +First you have to prepare pipelines and job definition in your GitHub repository using the following structure: + +``` +cicd/ +├── jobs +│   └── k8s.jenkins +└── pipelines + └── k8s.jenkins +``` + +**`cicd/jobs/k8s.jenkins`** is a job definition: + +``` +#!/usr/bin/env groovy + +pipelineJob('k8s-e2e') { + displayName('Kubernetes Plugin E2E Test') + + logRotator { + numToKeep(10) + daysToKeep(30) + } + + configure { project -> + project / 'properties' / 'org.jenkinsci.plugins.workflow.job.properties.DurabilityHintJobProperty' { + hint('PERFORMANCE_OPTIMIZED') + } + } + + definition { + cpsScm { + scm { + git { + remote { + url('https://github.com/jenkinsci/kubernetes-operator.git') + credentials('jenkins-operator') + } + branches('*/master') + } + } + scriptPath('cicd/pipelines/k8s.jenkins') + } + } +} +``` + +**`cicd/pipelines/k8s.jenkins`** is an actual Jenkins pipeline: + +``` +#!/usr/bin/env groovy + +def label = "k8s-${UUID.randomUUID().toString()}" +def home = "/home/jenkins" +def workspace = "${home}/workspace/build-jenkins-operator" +def workdir = "${workspace}/src/github.com/jenkinsci/kubernetes-operator/" + +podTemplate(label: label, + containers: [ + containerTemplate(name: 'alpine', image: 'alpine:3.11', ttyEnabled: true, command: 'cat'), + ], + ) { + node(label) { + stage('Run shell') { + container('alpine') { + sh 'echo "hello world"' + } + } + } +} +``` + +## Configure Seed Jobs + +Jenkins Seed Jobs are configured using `Jenkins.spec.seedJobs` section from your custom resource manifest: + +``` +apiVersion: jenkins.io/v1alpha2 +kind: Jenkins +metadata: + name: example +spec: + seedJobs: + - id: jenkins-operator + targets: "cicd/jobs/*.jenkins" + description: "Jenkins Operator repository" + repositoryBranch: master + repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git +``` + +**Jenkins Operator** will automatically discover and configure all the seed jobs. + +You can verify if deploy keys were successfully configured in the Jenkins **Credentials** tab. + +![jenkins](/kubernetes-operator/img/jenkins-credentials.png) + +You can verify if your pipelines were successfully configured in the Jenkins Seed Job console output. + +![jenkins](/kubernetes-operator/img/jenkins-seed.png) + +If your GitHub repository is **private** you have to configure SSH or username/password authentication. + +### SSH authentication + +#### Generate SSH Keys + +There are two methods of SSH private key generation: + +```bash +$ openssl genrsa -out 2048 +``` + +or + +```bash +$ ssh-keygen -t rsa -b 2048 +$ ssh-keygen -p -f -m pem +``` + +Then copy content from generated file. + +#### Public key + +If you want to upload your public key to your Git server you need to extract it. + +If key was generated by `openssl` then you need to type this to extract public key: + +```bash +$ openssl rsa -in -pubout > .pub +``` + +If key was generated by `ssh-keygen` the public key content is located in .pub and there is no need to extract public key + +#### Configure SSH authentication + +Configure a seed job like this: + +``` +apiVersion: jenkins.io/v1alpha2 +kind: Jenkins +metadata: + name: example +spec: + seedJobs: + - id: jenkins-operator-ssh + credentialType: basicSSHUserPrivateKey + credentialID: k8s-ssh + targets: "cicd/jobs/*.jenkins" + description: "Jenkins Operator repository" + repositoryBranch: master + repositoryUrl: git@github.com:jenkinsci/kubernetes-operator.git +``` + +and create a Kubernetes Secret (name of secret should be the same from `credentialID` field): + +``` +apiVersion: v1 +kind: Secret +metadata: + name: k8s-ssh + labels: + "jenkins.io/credentials-type": "basicSSHUserPrivateKey" + annotations: + "jenkins.io/credentials-description" : "ssh github.com:jenkinsci/kubernetes-operator" +stringData: + privateKey: | + -----BEGIN RSA PRIVATE KEY----- + MIIJKAIBAAKCAgEAxxDpleJjMCN5nusfW/AtBAZhx8UVVlhhhIKXvQ+dFODQIdzO + oDXybs1zVHWOj31zqbbJnsfsVZ9Uf3p9k6xpJ3WFY9b85WasqTDN1xmSd6swD4N8 + ... + username: github_user_name +``` + +### Username & password authentication + +Configure the seed job like: + +``` +apiVersion: jenkins.io/v1alpha2 +kind: Jenkins +metadata: + name: example +spec: + seedJobs: + - id: jenkins-operator-user-pass + credentialType: usernamePassword + credentialID: k8s-user-pass + targets: "cicd/jobs/*.jenkins" + description: "Jenkins Operator repository" + repositoryBranch: master + repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git +``` + +and create a Kubernetes Secret (name of secret should be the same from `credentialID` field): + +``` +apiVersion: v1 +kind: Secret +metadata: + name: k8s-user-pass +stringData: + username: github_user_name + password: password_or_token +``` + +### External authentication +You can use `external` credential type if you want to configure authentication using Configuration As Code or Groovy Script. + +Example: +```yaml +apiVersion: jenkins.io/v1alpha2 +kind: Jenkins +metadata: + name: example +spec: + seedJobs: + - id: jenkins-operator-external + credentialType: external + credentialID: k8s-external + targets: "cicd/jobs/*.jenkins" + description: "Jenkins Operator repository" + repositoryBranch: master + repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git +``` + +Remember that `credentialID` must match the id of the credentials configured in Jenkins. Consult the +[Jenkins docs for using credentials][jenkins-using-credentials] for details. + +## HTTP Proxy for downloading plugins + +To use forwarding proxy with an operator to download plugins you need to add the following environment variable to Jenkins Custom Resource (CR), e.g.: + +```yaml +spec: + master: + containers: + - name: jenkins-master + env: + - name: CURL_OPTIONS + value: -L -x +``` + +In `CURL_OPTIONS` var you can set additional arguments to `curl` command. + +## Pulling Docker images from private repositories + +To pull a Docker Image from private repository you can use `imagePullSecrets`. + +Please follow the instructions on [creating a secret with a docker config](https://kubernetes.io/docs/concepts/containers/images/?origin_team=T42NTAGHM#creating-a-secret-with-a-docker-config). + +### Docker Hub Configuration +To use Docker Hub additional steps are required. + +Edit the previously created secret: +```bash +kubectl -n edit secret +``` + +The `.dockerconfigjson` key's value needs to be replaced with a modified version. + +After modifications, it needs to be encoded as a Base64 value before setting the `.dockerconfigjson` key. + +Example config file to modify and use: +``` +{ + "auths":{ + "https://index.docker.io/v1/":{ + "username":"user", + "password":"password", + "email":"yourdockeremail@gmail.com", + "auth":"base64 of string user:password" + }, + "auth.docker.io":{ + "username":"user", + "password":"password", + "email":"yourdockeremail@gmail.com", + "auth":"base64 of string user:password" + }, + "registry.docker.io":{ + "username":"user", + "password":"password", + "email":"yourdockeremail@gmail.com", + "auth":"base64 of string user:password" + }, + "docker.io":{ + "username":"user", + "password":"password", + "email":"yourdockeremail@gmail.com", + "auth":"base64 of string user:password" + }, + "https://registry-1.docker.io/v2/": { + "username":"user", + "password":"password", + "email":"yourdockeremail@gmail.com", + "auth":"base64 of string user:password" + }, + "registry-1.docker.io/v2/": { + "username":"user", + "password":"password", + "email":"yourdockeremail@gmail.com", + "auth":"base64 of string user:password" + }, + "registry-1.docker.io": { + "username":"user", + "password":"password", + "email":"yourdockeremail@gmail.com", + "auth":"base64 of string user:password" + }, + "https://registry-1.docker.io": { + "username":"user", + "password":"password", + "email":"yourdockeremail@gmail.com", + "auth":"base64 of string user:password" + } + } +} +``` + +[job-dsl]:https://github.com/jenkinsci/job-dsl-plugin +[kubernetes-credentials-provider]:https://jenkinsci.github.io/kubernetes-credentials-provider-plugin/ +[jenkins-using-credentials]:https://www.jenkins.io/doc/book/using/using-credentials/ diff --git a/website/content/en/docs/Getting Started/v0.7.x/custom-backup-and-restore.md b/website/content/en/docs/Getting Started/v0.7.x/custom-backup-and-restore.md new file mode 100644 index 00000000..d336a366 --- /dev/null +++ b/website/content/en/docs/Getting Started/v0.7.x/custom-backup-and-restore.md @@ -0,0 +1,184 @@ +--- +title: "Custom backup and restore providers" +linkTitle: "Custom backup and restore providers" +weight: 7 +date: 2021-12-08 +description: > + Custom backup and restore provider +--- + +With enough effort one can create a custom backup and restore provider +for the Jenkins Operator. + +## Requirements + +Two commands (e.g. scripts) are required: + +- a backup command, e.g. `backup.sh` that takes one argument, a **backup number** +- a restore command, e.g. `backup.sh` that takes one argument, a **backup number** + +Both scripts need to return an exit code of `0` on success and `1` or greater for failure. + +One of those scripts (or the entry point of the container) needs to be responsible +for backup cleanup or rotation if required, or an external system. + +## How it works + +The mechanism relies on basic Kubernetes and UNIX functionalities. + +The backup (and restore) container runs as a sidecar in the same +Kubernetes pod as the Jenkins master. + +Name of the backup and restore containers can be set as necessary using +`spec.backup.containerName` and `spec.restore.containerName`. +In most cases it will be the same container, but we allow for less common use cases. + +The operator will call a backup or restore commands inside a sidecar container when necessary: + +- backup command (defined in `spec.backup.action.exec.command`) + will be called every `N` seconds configurable in: `spec.backup.interval` + and on pod shutdown (if enabled in `spec.backup.makeBackupBeforePodDeletion`) + with an integer representing the current backup number as first and only argument +- restore command (defined in `spec.restore.action.exec.command`) + will be called at Jenkins startup + with an integer representing the backup number to restore as first and only argument + (can be overridden using `spec.restore.recoveryOnce`) + +## Example AWS S3 backup using the CLI + +This example shows abbreviated version of a simple AWS S3 backup implementation +using: `aws-cli`, `bash` and `kube2iam`. + +In addition to your normal `Jenkins` `CustomResource` some additional settings +for backup and restore are required, e.g.: + +```yaml +kind: Jenkins +apiVersion: jenkins.io/v1alpha1 +metadata: + name: example + namespace: jenkins +spec: + master: + masterAnnotations: + iam.amazonaws.com/role: "my-example-backup-role" # tell kube2iam where the AWS IAM role is + containers: + - name: jenkins-master + ... + - name: backup # container responsible for backup and restore + image: quay.io/virtuslab/aws-cli:1.16.263-2 + workingDir: /home/user/bin/ + command: # our container entry point + - sleep + - infinity + env: + - name: BACKUP_BUCKET + value: my-example-bucket # the S3 bucket name to use + - name: BACKUP_PATH + value: my-backup-path # the S3 bucket path prefix to use + - name: JENKINS_HOME + value: /jenkins-home # the path to mount jenkins home dir in the backup container + volumeMounts: + - mountPath: /jenkins-home # Jenkins home volume + name: jenkins-home + - mountPath: /home/user/bin/backup.sh + name: backup-scripts + subPath: backup.sh + readOnly: true + - mountPath: /home/user/bin/restore.sh + name: backup-scripts + subPath: restore.sh + readOnly: true + volumes: + - name: backup-scripts + configMap: + defaultMode: 0754 + name: jenkins-operator-backup-s3 + securityContext: # make sure both containers use the same UID and GUID + runAsUser: 1000 + fsGroup: 1000 + ... + backup: + containerName: backup # container name responsible for backup + interval: 3600 # how often make a backup in seconds + makeBackupBeforePodDeletion: true # trigger backup just before deleting the pod + action: + exec: + command: + # this command is invoked on "backup" container to create a backup, + # is passed by operator, + # for example /home/user/bin/backup.sh + - /home/user/bin/backup.sh + restore: + containerName: backup # container name is responsible for restore backup + action: + exec: + command: + # this command is invoked on "backup" container to restore a backup, + # is passed by operator + # for example /home/user/bin/restore.sh + - /home/user/bin/restore.sh +# recoveryOnce: # if want to restore specific backup configure this field and then Jenkins will be restarted and desired backup will be restored +``` + +The actual backup and restore scripts will be provided in a `ConfigMap`: + +```yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: jenkins-operator-backup-s3 + namespace: jenkins + labels: + app: jenkins-operator +data: + backup.sh: |- + #!/bin/bash -xeu + [[ ! $# -eq 1 ]] && echo "Usage: $0 backup_number" && exit 1; + [[ -z "${BACKUP_BUCKET}" ]] && echo "Required 'BACKUP_BUCKET' env not set" && exit 1; + [[ -z "${BACKUP_PATH}" ]] && echo "Required 'BACKUP_PATH' env not set" && exit 1; + [[ -z "${JENKINS_HOME}" ]] && echo "Required 'JENKINS_HOME' env not set" && exit 1; + + backup_number=$1 + echo "Running backup #${backup_number}" + + BACKUP_TMP_DIR=$(mktemp -d) + tar -C ${JENKINS_HOME} -czf "${BACKUP_TMP_DIR}/${backup_number}.tar.gz" --exclude jobs/*/workspace* -c jobs && \ + + aws s3 cp ${BACKUP_TMP_DIR}/${backup_number}.tar.gz s3://${BACKUP_BUCKET}/${BACKUP_PATH}/${backup_number}.tar.gz + echo Done + + restore.sh: |- + #!/bin/bash -xeu + [[ ! $# -eq 1 ]] && echo "Usage: $0 backup_number" && exit 1 + [[ -z "${BACKUP_BUCKET}" ]] && echo "Required 'BACKUP_BUCKET' env not set" && exit 1; + [[ -z "${BACKUP_PATH}" ]] && echo "Required 'BACKUP_PATH' env not set" && exit 1; + [[ -z "${JENKINS_HOME}" ]] && echo "Required 'JENKINS_HOME' env not set" && exit 1; + + backup_number=$1 + echo "Running restore #${backup_number}" + + BACKUP_TMP_DIR=$(mktemp -d) + aws s3 cp s3://${BACKUP_BUCKET}/${BACKUP_PATH}/${backup_number}.tar.gz ${BACKUP_TMP_DIR}/${backup_number}.tar.gz + + tar -C ${JENKINS_HOME} -zxf "${BACKUP_TMP_DIR}/${backup_number}.tar.gz" + echo Done +``` + +In our example we will use S3 bucket lifecycle policy to keep +the number of backups under control, e.g. Cloud Formation fragment: +```yaml + Type: AWS::S3::Bucket + Properties: + BucketName: my-example-bucket + ... + LifecycleConfiguration: + Rules: + - Id: BackupCleanup + Status: Enabled + Prefix: my-backup-path + ExpirationInDays: 7 + NoncurrentVersionExpirationInDays: 14 + AbortIncompleteMultipartUpload: + DaysAfterInitiation: 3 +``` diff --git a/website/content/en/docs/Getting Started/v0.7.x/customizing-jenkins.md b/website/content/en/docs/Getting Started/v0.7.x/customizing-jenkins.md new file mode 100644 index 00000000..77073eaf --- /dev/null +++ b/website/content/en/docs/Getting Started/v0.7.x/customizing-jenkins.md @@ -0,0 +1,203 @@ +--- +title: "Customizing Jenkins" +linkTitle: "Customizing Jenkins" +weight: 3 +date: 2021-12-08 +description: > + How to customize Jenkins +--- + +## How to customize Jenkins +Jenkins can be customized with plugins. +Plugin's configuration is applied as groovy scripts or the [configuration as code plugin](https://github.com/jenkinsci/configuration-as-code-plugin). +Any plugin working for Jenkins can be installed by the Jenkins Operator. + +Pre-installed plugins: + +* configuration-as-code v1.55 +* git v4.10.0 +* job-dsl v1.78.1 +* kubernetes-credentials-provider v0.20 +* kubernetes v1.30.11 +* workflow-aggregator v2.6 +* workflow-job v2.42 + +Rest of the plugins can be found in [plugins repository](https://plugins.jenkins.io/). + + +#### Install plugins + +Edit Custom Resource under `spec.master.plugins`: + +```yaml +apiVersion: jenkins.io/v1alpha2 +kind: Jenkins +metadata: + name: example +spec: + master: + plugins: + - name: simple-theme-plugin + version: "0.7" +``` + +Under `spec.master.basePlugins` you can find plugins for a valid **Jenkins Operator**: + +```yaml +apiVersion: jenkins.io/v1alpha2 +kind: Jenkins +metadata: + name: example +spec: + master: + basePlugins: + - name: kubernetes + version: "1.30.11" + - name: workflow-job + version: "2.42" + - name: workflow-aggregator + version: "2.6" + - name: git + version: "4.10.0" + - name: job-dsl + version: "1.78.1" + - name: configuration-as-code + version: "1.55" + - name: kubernetes-credentials-provider + version: "0.20" +``` + +You can change their versions. + +The **Jenkins Operator** will then automatically install plugins after the Jenkins master pod restart. + +#### Apply plugin's config + +By using a [ConfigMap](https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/) you can create your own **Jenkins** customized configuration. +Then you must reference the **`ConfigMap`** in the **Jenkins** pod customization file in `spec.groovyScripts` or `spec.configurationAsCode` + +Create a **`ConfigMap`** with specific name (eg. `jenkins-operator-user-configuration`). Then, modify the **Jenkins** manifest: + +```yaml +apiVersion: jenkins.io/v1alpha2 +kind: Jenkins +metadata: + name: example +spec: + configurationAsCode: + configurations: + - name: jenkins-operator-user-configuration + groovyScripts: + configurations: + - name: jenkins-operator-user-configuration +``` + +Here is an example of `jenkins-operator-user-configuration`: +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: jenkins-operator-user-configuration +data: + 1-configure-theme.groovy: | + import jenkins.* + import jenkins.model.* + import hudson.* + import hudson.model.* + import org.jenkinsci.plugins.simpletheme.ThemeElement + import org.jenkinsci.plugins.simpletheme.CssTextThemeElement + import org.jenkinsci.plugins.simpletheme.CssUrlThemeElement + + Jenkins jenkins = Jenkins.getInstance() + + def decorator = Jenkins.instance.getDescriptorByType(org.codefirst.SimpleThemeDecorator.class) + + List configElements = new ArrayList<>(); + configElements.add(new CssTextThemeElement("DEFAULT")); + configElements.add(new CssUrlThemeElement("https://cdn.rawgit.com/afonsof/jenkins-material-theme/gh-pages/dist/material-light-green.css")); + decorator.setElements(configElements); + decorator.save(); + + jenkins.save() + 1-system-message.yaml: | + jenkins: + systemMessage: "Configuration as Code integration works!!!" +``` + +* `*.groovy` is Groovy script configuration +* `*.yaml is` configuration as code + +If you want to correct your configuration you can edit it while the **Jenkins Operator** is running. +Jenkins will reconcile and apply the new configuration. + +## How to use secrets from a Groovy scripts + +If you configured `spec.groovyScripts.secret.name`, then this secret is available to use from map Groovy scripts. +The secrets are loaded to `secrets` map. + +Create a [secret](https://kubernetes.io/docs/concepts/configuration/secret/) with for example the name `jenkins-conf-secrets`. + +```yaml +kind: Secret +apiVersion: v1 +type: Opaque +metadata: + name: jenkins-conf-secrets + namespace: default +data: + SYSTEM_MESSAGE: SGVsbG8gd29ybGQ= +``` + +Then modify the **Jenkins** pod manifest by changing `spec.groovyScripts.secret.name` to `jenkins-conf-secrets`. + +```yaml +apiVersion: jenkins.io/v1alpha2 +kind: Jenkins +metadata: + name: example +spec: + configurationAsCode: + configurations: + - name: jenkins-operator-user-configuration + secret: + name: jenkins-conf-secrets + groovyScripts: + configurations: + - name: jenkins-operator-user-configuration + secret: + name: jenkins-conf-secrets +``` + +Now you can test that the secret is mounted by applying this `ConfigMap` for Groovy script: + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: jenkins-operator-user-configuration +data: + 1-system-message.groovy: | + import jenkins.* + import jenkins.model.* + import hudson.* + import hudson.model.* + Jenkins jenkins = Jenkins.getInstance() + + jenkins.setSystemMessage(secrets["SYSTEM_MESSAGE"]) + jenkins.save() +``` + +Or by applying this configuration as code: +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: jenkins-operator-user-configuration +data: + 1-system-message.yaml: | + jenkins: + systemMessage: ${SYSTEM_MESSAGE} +``` + + +After this, you should see the `Hello world` system message from the **Jenkins** homepage. diff --git a/website/content/en/docs/Getting Started/v0.7.x/deploying-jenkins.md b/website/content/en/docs/Getting Started/v0.7.x/deploying-jenkins.md new file mode 100644 index 00000000..4f046ee0 --- /dev/null +++ b/website/content/en/docs/Getting Started/v0.7.x/deploying-jenkins.md @@ -0,0 +1,114 @@ +--- +title: "Deploying Jenkins" +linkTitle: "Deploying Jenkins" +weight: 2 +date: 2021-12-08 +description: > + Deploy production ready Jenkins manifest +--- + +{{% pageinfo %}} +This document describes the procedure for deploying Jenkins. +{{% /pageinfo %}} + + +## Prerequisites +The Operator needs to have been deployed beforehand. The procedure for deploying Jenkins described here doesn't apply to +installation of Operator via Helm chart unless `jenkins.enabled` was set to false. +That’s because by default, installation via Helm chart also covers deploying Jenkins. + + +## Deploying Jenkins instance +Once Jenkins Operator is up and running let's deploy actual Jenkins instance. +Create manifest e.g. **`jenkins_instance.yaml`** with following data and save it on drive. + +```yaml +apiVersion: jenkins.io/v1alpha2 +kind: Jenkins +metadata: + name: example + namespace: default +spec: + configurationAsCode: + configurations: [] + secret: + name: "" + groovyScripts: + configurations: [] + secret: + name: "" + jenkinsAPISettings: + authorizationStrategy: createUser + master: + disableCSRFProtection: false + containers: + - name: jenkins-master + image: jenkins/jenkins:2.319.1-lts-alpine + imagePullPolicy: Always + livenessProbe: + failureThreshold: 12 + httpGet: + path: /login + port: http + scheme: HTTP + initialDelaySeconds: 100 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + readinessProbe: + failureThreshold: 10 + httpGet: + path: /login + port: http + scheme: HTTP + initialDelaySeconds: 80 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + resources: + limits: + cpu: 1500m + memory: 3Gi + requests: + cpu: "1" + memory: 500Mi + seedJobs: + - id: jenkins-operator + targets: "cicd/jobs/*.jenkins" + description: "Jenkins Operator repository" + repositoryBranch: master + repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git +``` + +Deploy a Jenkins to Kubernetes: + +```bash +kubectl create -f jenkins_instance.yaml +``` +Watch the Jenkins instance being created: + +```bash +kubectl get pods -w +``` + +Get the Jenkins credentials: + +```bash +kubectl get secret jenkins-operator-credentials- -o 'jsonpath={.data.user}' | base64 -d +kubectl get secret jenkins-operator-credentials- -o 'jsonpath={.data.password}' | base64 -d +``` + +Connect to the Jenkins instance (minikube): + +```bash +minikube service jenkins-operator-http- --url +``` + +Connect to the Jenkins instance (actual Kubernetes cluster): + +```bash +kubectl port-forward jenkins- 8080:8080 +``` +Then open browser with address `http://localhost:8080`. + +![jenkins](/kubernetes-operator/img/jenkins.png) diff --git a/website/content/en/docs/Getting Started/v0.7.x/installing-the-operator.md b/website/content/en/docs/Getting Started/v0.7.x/installing-the-operator.md new file mode 100644 index 00000000..81cc0170 --- /dev/null +++ b/website/content/en/docs/Getting Started/v0.7.x/installing-the-operator.md @@ -0,0 +1,988 @@ +--- +title: "Installing the Operator" +linkTitle: "Installing the Operator" +weight: 1 +date: 2023-01-08 +description: > + How to install Jenkins Operator +--- + +{{% pageinfo %}} +This document describes installation procedure for **Jenkins Operator**. +All container images can be found at [virtuslab/jenkins-operator](https://hub.docker.com/r/virtuslab/jenkins-operator) Docker Hub repository. +{{% /pageinfo %}} + +## Requirements + +To run **Jenkins Operator**, you will need: + +- access to a Kubernetes cluster version `1.17+` +- `kubectl` version `1.17+` + + +Listed below are the two ways to deploy Jenkins Operator. + +## Deploy Jenkins Operator using YAML's + +First, install Jenkins Custom Resource Definition: + +```bash +kubectl apply -f https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/config/crd/bases/jenkins.io_jenkins.yaml +``` + +Then, install the Operator and other required resources: + +```bash +kubectl apply -f https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/deploy/all-in-one-v1alpha2.yaml +``` + +Watch **Jenkins Operator** instance being created: + +```bash +kubectl get pods -w +``` + +Now **Jenkins Operator** should be up and running in the `default` namespace. +For deploying Jenkins, refer to [Deploy Jenkins section](/kubernetes-operator/docs/getting-started/latest/deploying-jenkins/). + +## Deploy Jenkins Operator using Helm Chart + +Alternatively, you can also use Helm to install the Operator (and optionally, by default, Jenkins). It requires the Helm 3+ for deployment. + +Create a namespace for the operator: + +```bash +$ kubectl create namespace +``` + +To install, you need only to type these commands: + +```bash +$ helm repo add jenkins https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/chart +$ helm install jenkins/jenkins-operator -n +``` + +To add custom labels and annotations, you can use `values.yaml` file or pass them into `helm install` command, e.g.: + +```bash +$ helm install jenkins/jenkins-operator -n --set jenkins.labels.LabelKey=LabelValue,jenkins.annotations.AnnotationKey=AnnotationValue +``` +You can further customize Jenkins using `values.yaml`: +

Jenkins instance configuration +

+ + + + + + + + + + + + + + + + + +
FieldDefault valueDescription
+jenkins + +

operator is section for configuring operator deployment

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+enabled + +true + +Enabled can enable or disable the Jenkins instance. +Set to false if you have configured CR already and/or you want to deploy an operator only. +
+apiVersion +jenkins.io/v1alpha2 +Version of the CR manifest. The recommended and default value is jenkins.io/v1alpha2. +More info +
+name + +jenkins + +Name of resource. The pod name will be jenkins-<name> (name will be set as suffix). +
+namespace + +default + +Namespace the resources will be deployed to. It's not recommended to use default namespace. +Create new namespace for jenkins (e.g. kubectl create -n jenkins) +
+labels + +{} + +Labels are injected into metadata labels field. +
+annotations + +{} + +Annotations are injected into metadata annotations field. +
+image + +jenkins/jenkins:lts + +Image is the name (and tag) of the Jenkins instance. +It's recommended to use LTS (tag: "lts") version. +
+env + +[] + +Env contains jenkins container environment variables. +
+imagePullPolicy + +Always + +Defines policy for pulling images +
+priorityClassName + +"" + +PriorityClassName indicates the importance of a Pod relative to other Pods. +More info +
+disableCSRFProtection + +false + +disableCSRFProtection can enable or disable operator built-in CSRF protection. +Set it to true if you are using OpenShift Jenkins Plugin. +More info +
+imagePullSecrets + +[] + +Used if you want to pull images from private repository +More info +
+notifications + +[] + +Notifications is feature that notify user about Jenkins reconciliation status +More info +
+basePlugins + +
+- name: kubernetes
+  version: "1.25.2"
+- name: workflow-job
+  version: "2.39"
+- name: workflow-aggregator
+  version: "2.6"
+- name: git
+  version: "4.2.2"
+- name: job-dsl
+  version: "1.77"
+- name: configuration-as-code
+  version: "1.38"
+- name: kubernetes-credentials
+        -provider
+  version: "0.13"
+
+
+Plugins installed and required by the operator +shouldn't contain plugins defined by user +You can change their versions here +More info +
+plugins + +[] + +Plugins required by the user. You can define plugins here. +More info +Example: +
+plugins:
+ - name: simple-theme-plugin
+   version: 0.5.1
+
+
+seedJobs + +[] + +Placeholder for jenkins seed jobs +For seed job creation tutorial, check:
Prepare seed jobs +
Configure seed jobs +
Example: + +
+seedJobs:
+- id: jenkins-operator
+  targets: "cicd/jobs/*.jenkins"
+  description: "Jenkins Operator repository"
+  repositoryBranch: master
+  repositoryUrl:
+  - https://github.com/jenkinsci/kubernetes-operator.git
+
+
+
+resources + +
+limits:
+  cpu: 1500m
+  memory: 3Gi
+requests:
+  cpu: 1
+  memory: 500M
+
+
+Resource limit/request for Jenkins +More info +
+volumes + +
+- name: backup
+  persistentVolumeClaim:
+    claimName: jenkins-backup
+
+
+Volumes used by Jenkins +By default, we are only using PVC volume for storing backups. +
+volumeMounts + +[] + +volumeMounts are mounts for Jenkins pod. +
+securityContext + +runAsUser: 1000 +fsGroup: 1000 + +SecurityContext for pod. +
servicenot implementedHttp Jenkins service. See https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/schema/#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service for details.
slaveServicenot implementedSlave Jenkins service. See https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/schema/#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.Service for details.
+livenessProbe + +
+livenessProbe:
+  failureThreshold: 12
+  httpGet:
+    path: /login
+    port: http
+    scheme: HTTP
+  initialDelaySeconds: 80
+  periodSeconds: 10
+  successThreshold: 1
+  timeoutSeconds: 5
+
+
+livenessProbe for Pod +
+readinessProbe + +
+readinessProbe:
+  failureThreshold: 3
+  httpGet:
+    path: /login
+    port: http
+    scheme: HTTP
+  initialDelaySeconds: 30
+  periodSeconds: 10
+  successThreshold: 1
+  timeoutSeconds: 1
+
+
+readinessProbe for Pod +
+ +backup + +

+ + +Backup + + +

+
+ +Backup is section for configuring operator's backup feature +By default backup feature is enabled and pre-configured +This section simplifies the configuration described here: Configuring backup and restore +For customization tips see Custom backup and restore +
+configuration +

+ + +Configuration + + +

+
+Section where we can configure Jenkins instance. +See Customizing Jenkins for details +
+
+ +### Configuring operator deployment + + + + + + + + + + + + + + + + + +
FieldDefault valueDescription
+ operator + +

operator is section for configuring operator deployment

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ replicaCount
+
+ 1 + + Number of Replicas. +
+ image + + virtuslab/jenkins-operator:v0.4.0 + + Name (and tag) of the Jenkins Operator image. +
+ imagePullPolicy + + IfNotPresent + + Defines policy for pulling images. +
+ imagePullSecrets + + [] + + Used if you want to pull images from private repository. +
+ nameOverride + + "" + + nameOverride overrides the app name. +
+ fullnameOverride + + "" + + fullnameOverride overrides the deployment name +
+ resources + + {} + +
+ nodeSelector + + {} + +
+ tolerations + + {} + +
+ affinity + + {} + +
+
+ + + +

Backup +

+

+(Appears on: +JenkinsConfiguration) +

+

+Backup defines configuration of Jenkins backup. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDefault valueDescription
+ enabled + + true + + Enabled is enable/disable switch for backup feature. +
+ image + + virtuslab/jenkins-operator-backup-pvc:v0.1.1 + + Image used by backup feature. +
+ containerName + + backup + + Backup container name. +
+ interval + + 30 + + Defines how often make backup in seconds. +
+ makeBackupBeforePodDeletion + + true + + When enabled will make backup before pod deletion. +
+ backupCommand + + /home/user/bin/backup.sh + + Backup container command. +
+ restoreCommand + + /home/user/bin/restore.sh + + Backup restore command. +
+ pvc + +

Persistent Volume Claim Kubernetes resource

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ enabled + + true + + Enable/disable switch for PVC +
+ enabled + + true + + Enable/disable switch for PVC +
+ size + + 5Gi + + Size of PVC +
+ className + + "" + + StorageClassName for PVC + More info +
+
+ env + +
+- name: BACKUP_DIR
+  value: /backup
+- name: JENKINS_HOME
+  value: /jenkins-home
+- name: BACKUP_COUNT
+  value: "3"
+
+
+ Contains container environment variables. + PVC backup provider handles these variables:
+ BACKUP_DIR - path for storing backup files (default: "/backup")
+ JENKINS_HOME - path to jenkins home (default: "/jenkins-home")
+ BACKUP_COUNT - define how much recent backups will be kept
+
+ volumeMounts + +
+- name: jenkins-home
+  mountPath: /jenkins-home
+- mountPath: /backup
+  name: backup
+
+
+ Holds the mount points for volumes. +
+ +

Configuration +

+

+ (Appears on: + Jenkins instance configuration) +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDefault valueDescription
+ configurationAsCode + + {} + + ConfigurationAsCode defines configuration of Jenkins customization via Configuration as Code Jenkins plugin. +Example:
+
+- configMapName: jenkins-casc
+  content: {}
+
+
+ groovyScripts + + {} + + GroovyScripts defines configuration of Jenkins customization via groovy scripts. + Example:
+
+- configMapName: jenkins-gs
+  content: {}
+
+
+ secretRefName + + "" + + secretRefName of existing secret (previously created). +
+ secretData + + {} + + If secretRefName is empty, secretData creates new secret and fills with data provided in secretData. +
+ +## Note on Operator's nightly built images +If you wish to use the newest, not yet released version of the Operator, you can use one of nightly built snapshot images, however the maintainers of this project cannot guarantee their stability. + +You can find nightly built images by heading to [virtuslab/jenkins-operator](https://hub.docker.com/r/virtuslab/jenkins-operator) Docker Hub repository and looking for images with tag in the form of `{git-hash}`, {git-hash} being the hash of master branch commit that you want to use snapshot of. + +## Note on restricted Jenkins controller pod volumeMounts +Current design of the Operator puts an emphasis on creating a full GitOps flow of work for Jenkins users. +One of the key points of this design is maintaining an immutable state of Jenkins. + +One of the prerequisites of this is an ephemeral Jenkins home directory. To achieve that, Operator mounts emptyDir Volume +(jenkins-home) as Jenkins home directory. +It is not possible to overwrite volumeMount and specify any other Volume for Jenkins home directory, +as attempting to do so will result in Operator error. + +jenkins-home is not the only Jenkins controller pod volumeMount that is non-configurable and managed by Operator, +below is the full list of those volumeMounts: + +* jenkins-home +* scripts +* init-configuration +* operator-credentials + +## Validating Webhook +Validating webhook can be used in order to increase the Operator's capabilities to monitor security issues. It will look for security vulnerabilities in the base and requested plugins. It can be easily installed via Helm charts by setting webhook.enabled in values.yaml. + + +**Note**: The webhook takes some time to get up and running. It's recommended to first deploy the Operator and later Jenkins Custom Resource by using toggles in `values.yaml`. +For the installation with yaml manifests (without using Helm chart), first, install cert-manager: + +```bash +kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.1/cert-manager.yaml +``` + +It takes some time to get cert-manager up and running. +Then, install the webhook and other required resources: + +```bash +kubectl apply -f https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/deploy/all-in-one-webhook.yaml +``` + +Now, download the manifests for the operator and other resources from [here](https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/deploy/all-in-one-v1alpha2.yaml) and provide these additional fields in the Operator manifest: + +
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: jenkins-operator
+  labels:
+    control-plane: controller-manager
+spec:
+  selector:
+    matchLabels:
+      control-plane: controller-manager
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        control-plane: controller-manager
+    spec:
+      serviceAccountName: jenkins-operator
+      securityContext:
+        runAsUser: 65532
+      containers:
+      - command:
+        - /manager
+        args:
+        - --leader-elect
+        - --validate-security-warnings
+        image: virtuslab/jenkins-operator:v0.7.0
+        name: jenkins-operator
+        imagePullPolicy: IfNotPresent
+        securityContext:
+          allowPrivilegeEscalation: false
+        livenessProbe:
+          httpGet:
+            path: /healthz
+            port: 8081
+          initialDelaySeconds: 15
+          periodSeconds: 20
+        readinessProbe:
+          httpGet:
+            path: /readyz
+            port: 8081
+          initialDelaySeconds: 5
+          periodSeconds: 10
+        resources:
+          limits:
+            cpu: 200m
+            memory: 100Mi
+          requests:
+            cpu: 100m
+            memory: 20Mi
+        env:
+          - name: WATCH_NAMESPACE
+            valueFrom:
+              fieldRef:
+                fieldPath: metadata.namespace
+        volumeMounts:
+          - mountPath: /tmp/k8s-webhook-server/serving-certs
+            name: webhook-certs
+            readOnly: true
+      volumes:
+      - name: webhook-certs
+        secret:
+          defaultMode: 420
+          secretName: jenkins-webhook-certificate
+      terminationGracePeriodSeconds: 10
+
+
+ +To enable security validation in the Jenkins Custom Resource, set + +>jenkins.ValidateSecurityWarnings=true diff --git a/website/content/en/docs/Getting Started/v0.7.x/ldap.md b/website/content/en/docs/Getting Started/v0.7.x/ldap.md new file mode 100644 index 00000000..ca2b1179 --- /dev/null +++ b/website/content/en/docs/Getting Started/v0.7.x/ldap.md @@ -0,0 +1,127 @@ +--- +title: "LDAP" +linkTitle: "LDAP" +weight: 9 +date: 2021-12-08 +description: > + Additional configuration for LDAP +--- + +Configuring LDAP is not supported out of the box, but can be achieved through +plugins and some well tuned configurations. + +The plugin we will use is: + +> Note: This is an example of how LDAP authentication can be achieved. The LDAP +> plugin is from a third-party, and there may be other alternatives that suits +> your use case better. Use this guide with a grain of salt. + +## Requirements + +- LDAP server accessible from the Kubernetes cluster where your Jenkins + instance will live. + +- Credentials to a manager account in your AD. Jenkins Operator will use + this account to authenticate with Jenkins for health checks, seed jobs, etc. + +## Steps + +In your Jenkins configuration, add the following plugin: + +```yaml +plugins: + # Check https://plugins.jenkins.io/ldap/ to find the latest version. + - name: ldap + version: "2.7" +``` + +Easiest step is to then start up Jenkins then navigate to your instance's +"Configure Global Security" page and configure it accordingly. + +`http://jenkins.example.com/configureSecurity/` + +Once it's set up and tested, you can navigate to your JCasC page and export +the LDAP settings. + +`https://jenkins.example.com/configuration-as-code/` + +Feed the relevant new settings into your Kubernetes ConfigMap for your JCasC +settings. + +Here's a snippet of the LDAP-related configurations: + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: jenkins-casc +data: + ldap.yaml: | + jenkins: + securityRealm: + ldap: + configurations: + - displayNameAttributeName: "name" + groupSearchBase: "OU=Groups,OU=MyCompany" + groupSearchFilter: "(& (cn={0}) (objectclass=group) )" + inhibitInferRootDN: false + managerDN: "CN=Jenkins Admin,OU=UsersSystem,OU=UsersOther,OU=MyCompany,DC=mycompany,DC=local" + managerPasswordSecret: "${LDAP_MANAGER_PASSWORD}" + rootDN: "DC=mycompany,DC=local" + server: "MyCompany.local" + userSearch: "SamAccountName={0}" + userSearchBase: "OU=MyCompany" + disableMailAddressResolver: false + disableRolePrefixing: true + groupIdStrategy: "caseInsensitive" + userIdStrategy: "caseInsensitive" +``` + +> Note the use of `${LDAP_MANAGER_PASSWORD}` above. You can reference +> Kubernetes secrets in your JCasC ConfigMaps by adding the following to your +> Jenkins object: +> +> ```yaml +> kind: Jenkins +> spec: +> configurationAsCode: +> configurations: +> - name: jenkins-casc +> secret: +> # This here +> name: jenkins-casc-secrets +> ``` +> +> ```yaml +> apiVersion: v1 +> kind: Secret +> metadata: +> name: jenkins-cred-conf-secrets +> stringData: +> LDAP_MANAGER_PASSWORD: +> ``` +> +> Schema reference: [v1alpha2.ConfigurationAsCode](./schema/#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.ConfigurationAsCode) + +Finally you must configure the Jenkins operator to use the manager's +credentials from the AD. + +This is because this procedure will disable Jenkins' own user database, and the +Jenkins operator still needs to be able to talk to Jenkins in an authorized +manner. + +Create the following Kubernetes secret: + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: jenkins-operator-credentials- + namespace: +stringData: + user: + password: +``` + +> Note: Values in stringData do not need to be base64 encoded. They are +> encoded by Kubernetes when the manifest is applied. diff --git a/website/content/en/docs/Getting Started/v0.7.x/openshift.md b/website/content/en/docs/Getting Started/v0.7.x/openshift.md new file mode 100644 index 00000000..9c0c349b --- /dev/null +++ b/website/content/en/docs/Getting Started/v0.7.x/openshift.md @@ -0,0 +1,10 @@ +--- +title: "OpenShift" +linkTitle: "OpenShift" +weight: 10 +date: 2021-12-08 +description: > + Additional configuration for OpenShift +--- + +## Release 0.7.0 is not compatible with OpenShift. diff --git a/website/content/en/docs/Getting Started/v0.7.x/schema.md b/website/content/en/docs/Getting Started/v0.7.x/schema.md new file mode 100644 index 00000000..03ce4739 --- /dev/null +++ b/website/content/en/docs/Getting Started/v0.7.x/schema.md @@ -0,0 +1,2679 @@ +--- +title: "Schema" +linkTitle: "Schema" +weight: 11 +date: 2023-01-08 +description: > + API Schema definitions for Jenkins CRD +--- + +{{% pageinfo %}} +This document contains API scheme for `jenkins-operator` Custom Resource Definition manifest +{{% /pageinfo %}} + +

Packages:

+ +

jenkins.io

+

+

Package v1alpha2 contains API Schema definitions for the jenkins.io v1alpha2 API group

+

+Resource Types: + +

Jenkins +

+

+

Jenkins is the Schema for the jenkins API

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+apiVersion
+string
+ +jenkins.io/v1alpha2 + +
+kind
+string +
Jenkins
+metadata
+ + +Kubernetes meta/v1.ObjectMeta + + +
+Refer to the Kubernetes API documentation for the fields of the +metadata field. +
+spec
+ + +JenkinsSpec + + +
+

Spec defines the desired state of the Jenkins

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+master
+ + +JenkinsMaster + + +
+

Master represents Jenkins master pod properties and Jenkins plugins. +Every single change here requires a pod restart.

+
+seedJobs
+ + +[][]github.com/jenkinsci/kubernetes-operator/api/v1alpha2.SeedJob + + +
+(Optional) +

SeedJobs defines list of Jenkins Seed Job configurations +More info: + https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuring-seed-jobs-and-pipelines/

+
+validateSecurityWarnings
+ +bool + +
+(Optional) +

ValidateSecurityWarnings enables or disables validating potential security warnings in Jenkins plugins via admission webhooks.

+
+notifications
+ + +[][]github.com/jenkinsci/kubernetes-operator/api/v1alpha2.Notification + + +
+(Optional) +

Notifications defines list of a services which are used to inform about Jenkins status +Can be used to integrate chat services like Slack, Microsoft Teams or Mailgun

+
+service
+ + +Service + + +
+(Optional) +

Service is Kubernetes service of Jenkins master HTTP pod +Defaults to : +port: 8080 +type: ClusterIP

+
+slaveService
+ + +Service + + +
+(Optional) +

Service is Kubernetes service of Jenkins slave pods +Defaults to : +port: 50000 +type: ClusterIP

+
+backup
+ + +Backup + + +
+(Optional) +

Backup defines configuration of Jenkins backup +More info: https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/

+
+restore
+ + +Restore + + +
+(Optional) +

Backup defines configuration of Jenkins backup restore +More info: https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/

+
+groovyScripts
+ + +GroovyScripts + + +
+(Optional) +

GroovyScripts defines configuration of Jenkins customization via groovy scripts

+
+configurationAsCode
+ + +ConfigurationAsCode + + +
+(Optional) +

ConfigurationAsCode defines configuration of Jenkins customization via Configuration as Code Jenkins plugin

+
+roles
+ + +[]Kubernetes rbac/v1.RoleRef + + +
+(Optional) +

Roles defines list of extra RBAC roles for the Jenkins Master pod service account

+
+serviceAccount
+ + +ServiceAccount + + +
+(Optional) +

ServiceAccount defines Jenkins master service account attributes

+
+jenkinsAPISettings
+ + +JenkinsAPISettings + + +
+

JenkinsAPISettings defines configuration used by the operator to gain admin access to the Jenkins API

+
+
+status
+ + +JenkinsStatus + + +
+

Status defines the observed state of Jenkins

+
+

AppliedGroovyScript +

+

+(Appears on: +JenkinsStatus) +

+

+

AppliedGroovyScript is the applied groovy script in Jenkins by the operator.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+configurationType
+ +string + +
+

ConfigurationType is the name of the configuration type(base-groovy, user-groovy, user-casc)

+
+source
+ +string + +
+

Source is the name of source where is located groovy script

+
+name
+ +string + +
+

Name is the name of the groovy script

+
+hash
+ +string + +
+

Hash is the hash of the groovy script and secrets which it uses

+
+

AuthorizationStrategy +(string alias)

+

+(Appears on: +JenkinsAPISettings) +

+

+

AuthorizationStrategy defines authorization strategy of the operator for the Jenkins API

+

+

Backup +

+

+(Appears on: +JenkinsSpec) +

+

+

Backup defines configuration of Jenkins backup.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+containerName
+ +string + +
+

ContainerName is the container name responsible for backup operation

+
+action
+ + +Handler + + +
+

Action defines action which performs backup in backup container sidecar

+
+interval
+ +uint64 + +
+

Interval tells how often make backup in seconds +Defaults to 30.

+
+makeBackupBeforePodDeletion
+ +bool + +
+

MakeBackupBeforePodDeletion tells operator to make backup before Jenkins master pod deletion

+
+

ConfigMapRef +

+

+(Appears on: +Customization) +

+

+

ConfigMapRef is reference to Kubernetes ConfigMap.

+

+ + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+
+

ConfigurationAsCode +

+

+(Appears on: +JenkinsSpec) +

+

+

ConfigurationAsCode defines configuration of Jenkins customization via Configuration as Code Jenkins plugin.

+

+ + + + + + + + + + + + + +
FieldDescription
+Customization
+ + +Customization + + +
+

+(Members of Customization are embedded into this type.) +

+
+

Container +

+

+(Appears on: +JenkinsMaster) +

+

+

Container defines Kubernetes container attributes.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+

Name of the container specified as a DNS_LABEL. +Each container in a pod must have a unique name (DNS_LABEL).

+
+image
+ +string + +
+

Docker image name. +More info: https://kubernetes.io/docs/concepts/containers/images

+
+imagePullPolicy
+ + +Kubernetes core/v1.PullPolicy + + +
+

Image pull policy. +One of Always, Never, IfNotPresent. +Defaults to Always.

+
+resources
+ + +Kubernetes core/v1.ResourceRequirements + + +
+

Compute Resources required by this container. +More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/

+
+command
+ +[]string + +
+(Optional) +

Entrypoint array. Not executed within a shell. +The docker image’s ENTRYPOINT is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container’s environment. If a variable +cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax +can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, +regardless of whether the variable exists or not. +More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

+
+args
+ +[]string + +
+(Optional) +

Arguments to the entrypoint. +The docker image’s CMD is used if this is not provided. +Variable references $(VAR_NAME) are expanded using the container’s environment. If a variable +cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax +can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, +regardless of whether the variable exists or not. +More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

+
+workingDir
+ +string + +
+(Optional) +

Container’s working directory. +If not specified, the container runtime’s default will be used, which +might be configured in the container image.

+
+ports
+ + +[]Kubernetes core/v1.ContainerPort + + +
+(Optional) +

List of ports to expose from the container. Exposing a port here gives +the system additional information about the network connections a +container uses, but is primarily informational. Not specifying a port here +DOES NOT prevent that port from being exposed. Any port which is +listening on the default “0.0.0.0” address inside a container will be +accessible from the network.

+
+envFrom
+ + +[]Kubernetes core/v1.EnvFromSource + + +
+(Optional) +

List of sources to populate environment variables in the container. +The keys defined within a source must be a C_IDENTIFIER. All invalid keys +will be reported as an event when the container is starting. When a key exists in multiple +sources, the value associated with the last source will take precedence. +Values defined by an Env with a duplicate key will take precedence.

+
+env
+ + +[]Kubernetes core/v1.EnvVar + + +
+(Optional) +

List of environment variables to set in the container.

+
+volumeMounts
+ + +[]Kubernetes core/v1.VolumeMount + + +
+(Optional) +

Pod volumes to mount into the container’s filesystem.

+
+livenessProbe
+ + +Kubernetes core/v1.Probe + + +
+(Optional) +

Periodic probe of container liveness. +Container will be restarted if the probe fails.

+
+readinessProbe
+ + +Kubernetes core/v1.Probe + + +
+(Optional) +

Periodic probe of container service readiness. +Container will be removed from service endpoints if the probe fails.

+
+lifecycle
+ + +Kubernetes core/v1.Lifecycle + + +
+(Optional) +

Actions that the management system should take in response to container lifecycle events.

+
+securityContext
+ + +Kubernetes core/v1.SecurityContext + + +
+(Optional) +

Security options the pod should run with. +More info: https://kubernetes.io/docs/concepts/policy/security-context/ +More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/

+
+

Customization +

+

+(Appears on: +ConfigurationAsCode, +GroovyScripts) +

+

+

Customization defines configuration of Jenkins customization.

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+secret
+ + +SecretRef + + +
+
+configurations
+ + +[][]github.com/jenkinsci/kubernetes-operator/api/v1alpha2.ConfigMapRef + + +
+
+

GroovyScripts +

+

+(Appears on: +JenkinsSpec) +

+

+

GroovyScripts defines configuration of Jenkins customization via groovy scripts.

+

+ + + + + + + + + + + + + +
FieldDescription
+Customization
+ + +Customization + + +
+

+(Members of Customization are embedded into this type.) +

+
+

Handler +

+

+(Appears on: +Backup, +Restore) +

+

+

Handler defines a specific action that should be taken.

+

+ + + + + + + + + + + + + +
FieldDescription
+exec
+ + +Kubernetes core/v1.ExecAction + + +
+

Exec specifies the action to take.

+
+

JenkinsAPISettings +

+

+(Appears on: +JenkinsSpec) +

+

+

JenkinsAPISettings defines configuration used by the operator to gain admin access to the Jenkins API

+

+ + + + + + + + + + + + + +
FieldDescription
+authorizationStrategy
+ + +AuthorizationStrategy + + +
+
+

JenkinsCredentialType +(string alias)

+

+(Appears on: +SeedJob) +

+

+

JenkinsCredentialType defines type of Jenkins credential used to seed job mechanism.

+

+

JenkinsMaster +

+

+(Appears on: +JenkinsSpec) +

+

+

JenkinsMaster defines the Jenkins master pod attributes and plugins, +every single change requires a Jenkins master pod restart.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+annotations
+ +map[string]string + +
+(Optional) +

Annotations is an unstructured key value map stored with a resource that may be +set by external tools to store and retrieve arbitrary metadata. They are not +queryable and should be preserved when modifying objects. +More info: http://kubernetes.io/docs/user-guide/annotations

+
+labels
+ +map[string]string + +
+(Optional) +

Map of string keys and values that can be used to organize and categorize +(scope and select) objects. May match selectors of replication controllers +and services. +More info: http://kubernetes.io/docs/user-guide/labels

+
+nodeSelector
+ +map[string]string + +
+(Optional) +

NodeSelector is a selector which must be true for the pod to fit on a node. +Selector which must match a node’s labels for the pod to be scheduled on that node. +More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/

+
+securityContext
+ + +Kubernetes core/v1.PodSecurityContext + + +
+(Optional) +

SecurityContext that applies to all the containers of the Jenkins +Master. As per kubernetes specification, it can be overridden +for each container individually. +Defaults to: +runAsUser: 1000 +fsGroup: 1000

+
+containers
+ + +[][]github.com/jenkinsci/kubernetes-operator/api/v1alpha2.Container + + +
+(Optional) +

List of containers belonging to the pod. +Containers cannot currently be added or removed. +There must be at least one container in a Pod. +Defaults to: +- image: jenkins/jenkins:lts +imagePullPolicy: Always +livenessProbe: +failureThreshold: 12 +httpGet: +path: /login +port: http +scheme: HTTP +initialDelaySeconds: 80 +periodSeconds: 10 +successThreshold: 1 +timeoutSeconds: 5 +name: jenkins-master +readinessProbe: +failureThreshold: 3 +httpGet: +path: /login +port: http +scheme: HTTP +initialDelaySeconds: 30 +periodSeconds: 10 +successThreshold: 1 +timeoutSeconds: 1 +resources: +limits: +cpu: 1500m +memory: 3Gi +requests: +cpu: “1” +memory: 600Mi

+
+imagePullSecrets
+ + +[]Kubernetes core/v1.LocalObjectReference + + +
+(Optional) +

ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. +If specified, these secrets will be passed to individual puller implementations for them to use. For example, +in the case of docker, only DockerConfig type secrets are honored. +More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod

+
+volumes
+ + +[]Kubernetes core/v1.Volume + + +
+(Optional) +

List of volumes that can be mounted by containers belonging to the pod. +More info: https://kubernetes.io/docs/concepts/storage/volumes

+
+tolerations
+ + +[]Kubernetes core/v1.Toleration + + +
+(Optional) +

If specified, the pod’s tolerations.

+
+basePlugins
+ + +[][]github.com/jenkinsci/kubernetes-operator/api/v1alpha2.Plugin + + +
+(Optional) +

BasePlugins contains plugins required by operator +Defaults to : +- name: kubernetes +version: “1.30.11” +- name: workflow-job +version: “2.42” +- name: workflow-aggregator +version: “2.6” +- name: git +version: “4.10.0” +- name: job-dsl +version: “1.78.1” +- name: configuration-as-code +version: “1.55” +- name: kubernetes-credentials-provider +version: “0.20”

+
+plugins
+ + +[][]github.com/jenkinsci/kubernetes-operator/api/v1alpha2.Plugin + + +
+(Optional) +

Plugins contains plugins required by user

+
+disableCSRFProtection
+ +bool + +
+

DisableCSRFProtection allows you to toggle CSRF Protection on Jenkins

+
+priorityClassName
+ +string + +
+(Optional) +

PriorityClassName for Jenkins master pod

+
+hostAliases
+ + +[]Kubernetes core/v1.HostAlias + + +
+(Optional) +

HostAliases for Jenkins master pod and SeedJob agent

+
+

JenkinsSpec +

+

+(Appears on: +Jenkins) +

+

+

JenkinsSpec defines the desired state of Jenkins

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+master
+ + +JenkinsMaster + + +
+

Master represents Jenkins master pod properties and Jenkins plugins. +Every single change here requires a pod restart.

+
+seedJobs
+ + +[][]github.com/jenkinsci/kubernetes-operator/api/v1alpha2.SeedJob + + +
+(Optional) +

SeedJobs defines list of Jenkins Seed Job configurations +More info: https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration#configure-seed-jobs-and-pipelines

+
+validateSecurityWarnings
+ +bool + +
+(Optional) +

ValidateSecurityWarnings enables or disables validating potential security warnings in Jenkins plugins via admission webhooks.

+
+notifications
+ + +[][]github.com/jenkinsci/kubernetes-operator/api/v1alpha2.Notification + + +
+(Optional) +

Notifications defines list of a services which are used to inform about Jenkins status +Can be used to integrate chat services like Slack, Microsoft Teams or Mailgun

+
+service
+ + +Service + + +
+(Optional) +

Service is Kubernetes service of Jenkins master HTTP pod +Defaults to : +port: 8080 +type: ClusterIP

+
+slaveService
+ + +Service + + +
+(Optional) +

Service is Kubernetes service of Jenkins slave pods +Defaults to : +port: 50000 +type: ClusterIP

+
+backup
+ + +Backup + + +
+(Optional) +

Backup defines configuration of Jenkins backup +More info: https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/

+
+restore
+ + +Restore + + +
+(Optional) +

Backup defines configuration of Jenkins backup restore +More info: https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/

+
+groovyScripts
+ + +GroovyScripts + + +
+(Optional) +

GroovyScripts defines configuration of Jenkins customization via groovy scripts

+
+configurationAsCode
+ + +ConfigurationAsCode + + +
+(Optional) +

ConfigurationAsCode defines configuration of Jenkins customization via Configuration as Code Jenkins plugin

+
+roles
+ + +[]Kubernetes rbac/v1.RoleRef + + +
+(Optional) +

Roles defines list of extra RBAC roles for the Jenkins Master pod service account

+
+serviceAccount
+ + +ServiceAccount + + +
+(Optional) +

ServiceAccount defines Jenkins master service account attributes

+
+jenkinsAPISettings
+ + +JenkinsAPISettings + + +
+

JenkinsAPISettings defines configuration used by the operator to gain admin access to the Jenkins API

+
+

JenkinsStatus +

+

+(Appears on: +Jenkins) +

+

+

JenkinsStatus defines the observed state of Jenkins

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+operatorVersion
+ +string + +
+(Optional) +

OperatorVersion is the operator version which manages this CR

+
+provisionStartTime
+ + +Kubernetes meta/v1.Time + + +
+(Optional) +

ProvisionStartTime is a time when Jenkins master pod has been created

+
+baseConfigurationCompletedTime
+ + +Kubernetes meta/v1.Time + + +
+(Optional) +

BaseConfigurationCompletedTime is a time when Jenkins base configuration phase has been completed

+
+userConfigurationCompletedTime
+ + +Kubernetes meta/v1.Time + + +
+(Optional) +

UserConfigurationCompletedTime is a time when Jenkins user configuration phase has been completed

+
+restoredBackup
+ +uint64 + +
+(Optional) +

RestoredBackup is the restored backup number after Jenkins master pod restart

+
+lastBackup
+ +uint64 + +
+(Optional) +

LastBackup is the latest backup number

+
+pendingBackup
+ +uint64 + +
+(Optional) +

PendingBackup is the pending backup number

+
+backupDoneBeforePodDeletion
+ +bool + +
+(Optional) +

BackupDoneBeforePodDeletion tells if backup before pod deletion has been made

+
+userAndPasswordHash
+ +string + +
+(Optional) +

UserAndPasswordHash is a SHA256 hash made from user and password

+
+createdSeedJobs
+ +[]string + +
+(Optional) +

CreatedSeedJobs contains list of seed job id already created in Jenkins

+
+appliedGroovyScripts
+ + +[][]github.com/jenkinsci/kubernetes-operator/api/v1alpha2.AppliedGroovyScript + + +
+(Optional) +

AppliedGroovyScripts is a list with all applied groovy scripts in Jenkins by the operator

+
+

Mailgun +

+

+(Appears on: +Notification) +

+

+

Mailgun is handler for Mailgun email service notification channel.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+domain
+ +string + +
+
+apiKeySecretKeySelector
+ + +SecretKeySelector + + +
+
+recipient
+ +string + +
+
+from
+ +string + +
+
+

MicrosoftTeams +

+

+(Appears on: +Notification) +

+

+

MicrosoftTeams is handler for Microsoft MicrosoftTeams notification channel.

+

+ + + + + + + + + + + + + +
FieldDescription
+webHookURLSecretKeySelector
+ + +SecretKeySelector + + +
+

The web hook URL to MicrosoftTeams App

+
+

Notification +

+

+(Appears on: +JenkinsSpec) +

+

+

Notification is a service configuration used to send notifications about Jenkins status.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+level
+ + +NotificationLevel + + +
+
+verbose
+ +bool + +
+
+name
+ +string + +
+
+slack
+ + +github.com/jenkinsci/kubernetes-operator/api/v1alpha2.Slack + + +
+
+teams
+ + +github.com/jenkinsci/kubernetes-operator/api/v1alpha2.MicrosoftTeams + + +
+
+mailgun
+ + +github.com/jenkinsci/kubernetes-operator/api/v1alpha2.Mailgun + + +
+
+smtp
+ + +github.com/jenkinsci/kubernetes-operator/api/v1alpha2.SMTP + + +
+
+

NotificationLevel +(string alias)

+

+(Appears on: +Notification) +

+

+

NotificationLevel defines the level of a Notification.

+

+

Plugin +

+

+(Appears on: +JenkinsMaster) +

+

+

Plugin defines Jenkins plugin.

+

+ + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+

Name is the name of Jenkins plugin

+
+version
+ +string + +
+

Version is the version of Jenkins plugin

+
+downloadURL
+ +string + +
+

DownloadURL is the custom url from where plugin has to be downloaded.

+
+

PluginData +

+

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+Version
+ +string + +
+
+Kind
+ +string + +
+
+

PluginInfo +

+

+(Appears on: +PluginsInfo) +

+

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+
+securityWarnings
+ + +[][]github.com/jenkinsci/kubernetes-operator/api/v1alpha2.Warning + + +
+
+

PluginsInfo +

+

+(Appears on: +SecurityValidator) +

+

+

+ + + + + + + + + + + + + +
FieldDescription
+plugins
+ + +[][]github.com/jenkinsci/kubernetes-operator/api/v1alpha2.PluginInfo + + +
+
+

Restore +

+

+(Appears on: +JenkinsSpec) +

+

+

Restore defines configuration of Jenkins backup restore operation.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+containerName
+ +string + +
+

ContainerName is the container name responsible for restore backup operation

+
+action
+ + +Handler + + +
+

Action defines action which performs restore backup in restore container sidecar

+
+getLatestAction
+ + +Handler + + +
+(Optional) +

GetLatestAction defines action which returns the latest backup number. If there is no backup “-1” should be +returned.

+
+recoveryOnce
+ +uint64 + +
+(Optional) +

RecoveryOnce if want to restore specific backup set this field and then Jenkins will be restarted and desired backup will be restored

+
+

SMTP +

+

+(Appears on: +Notification) +

+

+

SMTP is handler for sending emails via this protocol.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+usernameSecretKeySelector
+ + +SecretKeySelector + + +
+
+passwordSecretKeySelector
+ + +SecretKeySelector + + +
+
+port
+ +int + +
+
+server
+ +string + +
+
+tlsInsecureSkipVerify
+ +bool + +
+
+from
+ +string + +
+
+to
+ +string + +
+
+

SecretKeySelector +

+

+(Appears on: +Mailgun, +MicrosoftTeams, +SMTP, +Slack) +

+

+

SecretKeySelector selects a key of a Secret.

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+secret
+ + +Kubernetes core/v1.LocalObjectReference + + +
+

The name of the secret in the pod’s namespace to select from.

+
+key
+ +string + +
+

The key of the secret to select from. Must be a valid secret key.

+
+

SecretRef +

+

+(Appears on: +Customization) +

+

+

SecretRef is reference to Kubernetes secret.

+

+ + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+
+

SecurityValidator +

+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+PluginDataCache
+ + +PluginsInfo + + +
+
+isCached
+ +bool + +
+
+Attempts
+ +int + +
+
+checkingPeriod
+ +time.Duration + +
+
+

SeedJob +

+

+(Appears on: +JenkinsSpec) +

+

+

SeedJob defines configuration for seed job +More info: https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration/#configure-seed-jobs-and-pipelines.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+id
+ +string + +
+

ID is the unique seed job name

+
+credentialID
+ +string + +
+

CredentialID is the Kubernetes secret name which stores repository access credentials

+
+description
+ +string + +
+(Optional) +

Description is the description of the seed job

+
+targets
+ +string + +
+

Targets is the repository path where are seed job definitions

+
+repositoryBranch
+ +string + +
+

RepositoryBranch is the repository branch where are seed job definitions

+
+repositoryUrl
+ +string + +
+

RepositoryURL is the repository access URL. Can be SSH or HTTPS.

+
+credentialType
+ + +JenkinsCredentialType + + +
+(Optional) +

JenkinsCredentialType is the https://jenkinsci.github.io/kubernetes-credentials-provider-plugin/ credential type

+
+bitbucketPushTrigger
+ +bool + +
+(Optional) +

BitbucketPushTrigger is used for Bitbucket web hooks

+
+githubPushTrigger
+ +bool + +
+(Optional) +

GitHubPushTrigger is used for GitHub web hooks

+
+buildPeriodically
+ +string + +
+(Optional) +

BuildPeriodically is setting for scheduled trigger

+
+pollSCM
+ +string + +
+(Optional) +

PollSCM is setting for polling changes in SCM

+
+ignoreMissingFiles
+ +bool + +
+(Optional) +

IgnoreMissingFiles is setting for Job DSL API plugin to ignore files that miss

+
+additionalClasspath
+ +string + +
+(Optional) +

AdditionalClasspath is setting for Job DSL API plugin to set Additional Classpath

+
+failOnMissingPlugin
+ +bool + +
+(Optional) +

FailOnMissingPlugin is setting for Job DSL API plugin that fails job if required plugin is missing

+
+unstableOnDeprecation
+ +bool + +
+(Optional) +

UnstableOnDeprecation is setting for Job DSL API plugin that sets build status as unstable if build using deprecated features

+
+

Service +

+

+(Appears on: +JenkinsSpec) +

+

+

Service defines Kubernetes service attributes

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+annotations
+ +map[string]string + +
+(Optional) +

Annotations is an unstructured key value map stored with a resource that may be +set by external tools to store and retrieve arbitrary metadata. They are not +queryable and should be preserved when modifying objects. +More info: http://kubernetes.io/docs/user-guide/annotations

+
+labels
+ +map[string]string + +
+(Optional) +

Route service traffic to pods with label keys and values matching this +selector. If empty or not present, the service is assumed to have an +external process managing its endpoints, which Kubernetes will not +modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. +Ignored if type is ExternalName. +More info: https://kubernetes.io/docs/concepts/services-networking/service/

+
+type
+ + +Kubernetes core/v1.ServiceType + + +
+(Optional) +

Type determines how the Service is exposed. Defaults to ClusterIP. Valid +options are ExternalName, ClusterIP, NodePort, and LoadBalancer. +“ExternalName” maps to the specified externalName. +“ClusterIP” allocates a cluster-internal IP address for load-balancing to +endpoints. Endpoints are determined by the selector or if that is not +specified, by manual construction of an Endpoints object. If clusterIP is +“None”, no virtual IP is allocated and the endpoints are published as a +set of endpoints rather than a stable IP. +“NodePort” builds on ClusterIP and allocates a port on every node which +routes to the clusterIP. +“LoadBalancer” builds on NodePort and creates an +external load-balancer (if supported in the current cloud) which routes +to the clusterIP. +More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services—service-types

+
+port
+ +int32 + +
+

The port that are exposed by this service. +More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies

+
+nodePort
+ +int32 + +
+(Optional) +

The port on each node on which this service is exposed when type=NodePort or LoadBalancer. +Usually assigned by the system. If specified, it will be allocated to the service +if unused or else creation of the service will fail. +Default is to auto-allocate a port if the ServiceType of this Service requires one. +More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport

+
+loadBalancerSourceRanges
+ +[]string + +
+(Optional) +

If specified and supported by the platform, this will restrict traffic through the cloud-provider +load-balancer will be restricted to the specified client IPs. This field will be ignored if the +cloud-provider does not support the feature.” +More info: https://kubernetes.io/docs/tasks/administer-cluster/securing-a-cluster/#restricting-cloud-metadata-api-access

+
+loadBalancerIP
+ +string + +
+(Optional) +

Only applies to Service Type: LoadBalancer +LoadBalancer will get created with the IP specified in this field. +This feature depends on whether the underlying cloud-provider supports specifying +the loadBalancerIP when a load balancer is created. +This field will be ignored if the cloud-provider does not support the feature.

+
+

ServiceAccount +

+

+(Appears on: +JenkinsSpec) +

+

+

ServiceAccount defines Kubernetes service account attributes

+

+ + + + + + + + + + + + + +
FieldDescription
+annotations
+ +map[string]string + +
+(Optional) +

Annotations is an unstructured key value map stored with a resource that may be +set by external tools to store and retrieve arbitrary metadata. They are not +queryable and should be preserved when modifying objects. +More info: http://kubernetes.io/docs/user-guide/annotations

+
+

Slack +

+

+(Appears on: +Notification) +

+

+

Slack is handler for Slack notification channel.

+

+ + + + + + + + + + + + + +
FieldDescription
+webHookURLSecretKeySelector
+ + +SecretKeySelector + + +
+

The web hook URL to Slack App

+
+

Version +

+

+(Appears on: +Warning) +

+

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+firstVersion
+ +string + +
+
+lastVersion
+ +string + +
+
+

Warning +

+

+(Appears on: +PluginInfo) +

+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+versions
+ + +[][]github.com/jenkinsci/kubernetes-operator/api/v1alpha2.Version + + +
+
+id
+ +string + +
+
+message
+ +string + +
+
+url
+ +string + +
+
+active
+ +bool + +
+
+
+

+Generated with gen-crd-api-reference-docs +on git commit 76078d5f. +

diff --git a/website/content/en/docs/Getting Started/v0.7.x/separate-namespaces.md b/website/content/en/docs/Getting Started/v0.7.x/separate-namespaces.md new file mode 100644 index 00000000..472df44d --- /dev/null +++ b/website/content/en/docs/Getting Started/v0.7.x/separate-namespaces.md @@ -0,0 +1,583 @@ +--- +title: "Separate namespaces for Jenkins and Operator" +linkTitle: "Separate namespaces for Jenkins and Operator" +weight: 6 +date: 2021-12-08 +description: > + How to install Jenkins and Jenkins Operator in separate namespaces +--- + +## Create namespaces + +You need to create two namespaces, for example we'll call them **jenkins** for Jenkins and **jenkins-operator** for Jenkins Operator. +```bash +$ kubectl create ns jenkins-operator +$ kubectl create ns jenkins +``` + +## Create necessary resources in Jenkins Operator namespace + +Next, you need to install resources necessary for the Operator to work in the `jenkins-operator` namespace. To do that, +copy the manifest you see below to `jenkins-operator-rbac.yaml`file. + +```yaml +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: jenkins-operator +--- +# permissions to do leader election. +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: leader-election-role +rules: +- apiGroups: + - "" + - coordination.k8s.io + resources: + - configmaps + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - "" + resources: + - events + verbs: + - create + - patch +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: leader-election-rolebinding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: leader-election-role +subjects: +- kind: ServiceAccount + name: jenkins-operator +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: jenkins-operator +rules: +- apiGroups: + - apps + resources: + - daemonsets + - deployments + - replicasets + - statefulsets + verbs: + - '*' +- apiGroups: + - apps + - jenkins-operator + resources: + - deployments/finalizers + verbs: + - update +- apiGroups: + - build.openshift.io + resources: + - buildconfigs + - builds + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - configmaps + - secrets + - services + verbs: + - create + - get + - list + - update + - watch +- apiGroups: + - "" + resources: + - events + verbs: + - create + - get + - list + - patch + - watch +- apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - pods + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - "" + resources: + - pods + - pods/exec + verbs: + - '*' +- apiGroups: + - "" + resources: + - pods/log + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - pods/portforward + verbs: + - create +- apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - create + - get + - list + - update + - watch +- apiGroups: + - image.openshift.io + resources: + - imagestreams + verbs: + - get + - list + - watch +- apiGroups: + - jenkins.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - jenkins.io + resources: + - jenkins + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - jenkins.io + resources: + - jenkins/finalizers + verbs: + - update +- apiGroups: + - jenkins.io + resources: + - jenkins/status + verbs: + - get + - patch + - update +- apiGroups: + - rbac.authorization.k8s.io + resources: + - rolebindings + - roles + verbs: + - create + - get + - list + - update + - watch +- apiGroups: + - route.openshift.io + resources: + - routes + verbs: + - create + - get + - list + - update + - watch +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: jenkins-operator +subjects: + - kind: ServiceAccount + name: jenkins-operator +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: jenkins-operator +``` + +Now install the required resources in `jenkins-operator` namespace with: +```bash +kubectl apply -n jenkins-operator -f jenkins-operator-rbac.yaml +``` + +There's only one thing left to install in `jenkins-operator` namespace, and that is the Operator itself. The manifest +below contains the Operator as defined in all-in-one manifest found in [Installing the Operator](/kubernetes-operator/docs/getting-started/latest/installing-the-operator/) +page, the only difference is that the one here sets `WATCH_NAMESPACE` to the `jenkins` namespace we created. + +Copy its content to `jenkins-operator.yaml` file. + +```bash +apiVersion: apps/v1 +kind: Deployment +metadata: + name: jenkins-operator + labels: + control-plane: controller-manager +spec: + selector: + matchLabels: + control-plane: controller-manager + replicas: 1 + template: + metadata: + labels: + control-plane: controller-manager + spec: + serviceAccountName: jenkins-operator + securityContext: + runAsUser: 65532 + containers: + - command: + - /manager + args: + - --leader-elect + image: virtuslab/jenkins-operator:v0.7.0 + name: jenkins-operator + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 100m + memory: 30Mi + requests: + cpu: 100m + memory: 20Mi + env: + - name: WATCH_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + terminationGracePeriodSeconds: 10 +``` + +Install the Operator in `jenkins-operator` namespace with: + +```bash +kubectl apply -n jenkins-operator -f jenkins-operator.yaml +``` + +You have installed the Operator in `jenkins-operator` namespace, watching for Jenkins in `jenkins` namespace. Now +there are two things left to do: creating necessary Role and RoleBinding for the Operator in `jenkins` namespace, and +deploying actual Jenkins instance there. + +## Create necessary resources in Jenkins namespace + +Below you can find manifest with RBAC that needs to be created in `jenkins` namespace. Copy its content to `jenkins-ns-rbac.yaml` file. + +```yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: jenkins-operator +rules: + - apiGroups: + - apps + resources: + - daemonsets + - deployments + - replicasets + - statefulsets + verbs: + - '*' + - apiGroups: + - apps + - jenkins-operator + resources: + - deployments/finalizers + verbs: + - update + - apiGroups: + - build.openshift.io + resources: + - buildconfigs + - builds + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - configmaps + - secrets + - services + verbs: + - create + - get + - list + - update + - watch + - apiGroups: + - "" + resources: + - events + verbs: + - create + - get + - list + - patch + - watch + - apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - pods + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + resources: + - pods + - pods/exec + verbs: + - '*' + - apiGroups: + - "" + resources: + - pods/log + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - pods/portforward + verbs: + - create + - apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - create + - get + - list + - update + - watch + - apiGroups: + - image.openshift.io + resources: + - imagestreams + verbs: + - get + - list + - watch + - apiGroups: + - jenkins.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - jenkins.io + resources: + - jenkins + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - jenkins.io + resources: + - jenkins/finalizers + verbs: + - update + - apiGroups: + - jenkins.io + resources: + - jenkins/status + verbs: + - get + - patch + - update + - apiGroups: + - rbac.authorization.k8s.io + resources: + - rolebindings + - roles + verbs: + - create + - get + - list + - update + - watch + - apiGroups: + - route.openshift.io + resources: + - routes + verbs: + - create + - get + - list + - update + - watch +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: jenkins-operator +subjects: + - kind: ServiceAccount + name: jenkins-operator + namespace: jenkins-operator +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: jenkins-operator +``` + +Now apply it with: +```bash +kubectl apply -n jenkins -f jenkins-ns-rbac.yaml +``` + +The last thing to do is to deploy Jenkins. Below you can find an example Jenkins resource manifest. +It's the same as one used in [Deploying Jenkins](/kubernetes-operator/docs/getting-started/latest/deploying-jenkins/). +Copy it to `jenkins-instance.yaml` + +```yaml +apiVersion: jenkins.io/v1alpha2 +kind: Jenkins +metadata: + name: example +spec: + configurationAsCode: + configurations: [] + secret: + name: "" + groovyScripts: + configurations: [] + secret: + name: "" + jenkinsAPISettings: + authorizationStrategy: createUser + master: + disableCSRFProtection: false + containers: + - name: jenkins-master + image: jenkins/jenkins:2.319.1-lts-alpine + imagePullPolicy: Always + livenessProbe: + failureThreshold: 12 + httpGet: + path: /login + port: http + scheme: HTTP + initialDelaySeconds: 100 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + readinessProbe: + failureThreshold: 10 + httpGet: + path: /login + port: http + scheme: HTTP + initialDelaySeconds: 80 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + resources: + limits: + cpu: 1500m + memory: 3Gi + requests: + cpu: "1" + memory: 500Mi + seedJobs: + - id: jenkins-operator + targets: "cicd/jobs/*.jenkins" + description: "Jenkins Operator repository" + repositoryBranch: master + repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git +``` + +Now you can deploy it with: + +```bash +kubectl apply -n jenkins -f jenkins-instance.yaml +``` + +With this, you have just set up Jenkins Operator and Jenkins in separate namespaces. Now the Operator will run in +its own namespace (`jenkins-operator`), watch for CRs in `jenkins` namespace, and deploy Jenkins there. From 1e4ffd47184b3be0405a859d850f1bf997f2857c Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Mon, 5 Jun 2023 23:05:16 +0200 Subject: [PATCH 08/40] fix: backup trimming, only selecting zstd file (#846) --- backup/pvc/bin/run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backup/pvc/bin/run.sh b/backup/pvc/bin/run.sh index 56c2d687..50123d5e 100644 --- a/backup/pvc/bin/run.sh +++ b/backup/pvc/bin/run.sh @@ -11,6 +11,6 @@ do if [[ ! -z "${BACKUP_COUNT}" ]]; then echo "Trimming to only ${BACKUP_COUNT} recent backups in preparation for new backup" #TODO: add the list of exceeding backup before delete - find ${BACKUP_DIR} -maxdepth 1 -name '*.tar.*' -exec basename {} \; | sort -gr | tail -n +$((BACKUP_COUNT +1)) | xargs -I '{}' rm ${BACKUP_DIR}/'{}' + find ${BACKUP_DIR} -maxdepth 1 -name '*.tar.zstd' -exec basename {} \; | sort -gr | tail -n +$((BACKUP_COUNT +1)) | xargs -I '{}' rm ${BACKUP_DIR}/'{}' fi done From dab511fed3f37b6c8135a6592361f0572cb00486 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 23:05:43 +0200 Subject: [PATCH 09/40] Bump docker/login-action from 1 to 2 (#819) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release-backup.yaml | 2 +- .github/workflows/release-nightly.yaml | 2 +- .github/workflows/release.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-backup.yaml b/.github/workflows/release-backup.yaml index 97461c93..7a314f1c 100644 --- a/.github/workflows/release-backup.yaml +++ b/.github/workflows/release-backup.yaml @@ -44,7 +44,7 @@ jobs: - name: Login to Quay.io if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: registry: quay.io username: ${{ secrets.QUAYIO_USERNAME }} diff --git a/.github/workflows/release-nightly.yaml b/.github/workflows/release-nightly.yaml index f4f3a709..634b5886 100644 --- a/.github/workflows/release-nightly.yaml +++ b/.github/workflows/release-nightly.yaml @@ -92,7 +92,7 @@ jobs: run: make bats-tests - name: Post - Login to Quay.io - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: registry: quay.io username: ${{ secrets.QUAYIO_USERNAME }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 2fc9194b..f6775a18 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -45,7 +45,7 @@ jobs: tag_name: ${{ env.VERSION }} - name: Login to Quay.io - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: registry: quay.io username: ${{ secrets.QUAYIO_USERNAME }} From 936dbc471312166e955cbef72405d5fb7a776f5e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 23:06:17 +0200 Subject: [PATCH 10/40] Bump actions/checkout from 2 to 3 (#815) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/auto-gen-docs.yaml | 2 +- .github/workflows/auto-tests-e2e.yaml | 2 +- .github/workflows/auto-tests-helm.yaml | 2 +- .github/workflows/release-backup.yaml | 2 +- .github/workflows/release-helm-chart.yaml | 2 +- .github/workflows/release-nightly.yaml | 2 +- .github/workflows/release.yaml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/auto-gen-docs.yaml b/.github/workflows/auto-gen-docs.yaml index 5e246276..4997599a 100644 --- a/.github/workflows/auto-gen-docs.yaml +++ b/.github/workflows/auto-gen-docs.yaml @@ -23,7 +23,7 @@ jobs: steps: # Checks out a copy of your repository on the ubuntu-latest machine - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: submodules: recursive # Fetch the Docsy theme fetch-depth: 0 diff --git a/.github/workflows/auto-tests-e2e.yaml b/.github/workflows/auto-tests-e2e.yaml index a51e198e..0e8138dc 100644 --- a/.github/workflows/auto-tests-e2e.yaml +++ b/.github/workflows/auto-tests-e2e.yaml @@ -30,7 +30,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up env vars run: | diff --git a/.github/workflows/auto-tests-helm.yaml b/.github/workflows/auto-tests-helm.yaml index 2a827d18..86c6c867 100644 --- a/.github/workflows/auto-tests-helm.yaml +++ b/.github/workflows/auto-tests-helm.yaml @@ -30,7 +30,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up env vars run: | diff --git a/.github/workflows/release-backup.yaml b/.github/workflows/release-backup.yaml index 7a314f1c..8a9ac30e 100644 --- a/.github/workflows/release-backup.yaml +++ b/.github/workflows/release-backup.yaml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Check envs run: make -C backup/pvc check-env diff --git a/.github/workflows/release-helm-chart.yaml b/.github/workflows/release-helm-chart.yaml index dbb4d75c..725acb6b 100644 --- a/.github/workflows/release-helm-chart.yaml +++ b/.github/workflows/release-helm-chart.yaml @@ -17,7 +17,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Deploy Helm chart run: | diff --git a/.github/workflows/release-nightly.yaml b/.github/workflows/release-nightly.yaml index 634b5886..5a2fb1ac 100644 --- a/.github/workflows/release-nightly.yaml +++ b/.github/workflows/release-nightly.yaml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Prep - check out code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Prep - Set up env vars run: | diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f6775a18..44dfd086 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -9,7 +9,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 0 From e6bd8c3f14bc3c26a57ffc91f69b40d937fcb31d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 23:06:57 +0200 Subject: [PATCH 11/40] Bump peter-evans/create-pull-request from 3 to 5 (#817) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/auto-gen-docs.yaml | 2 +- .github/workflows/release-helm-chart.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/auto-gen-docs.yaml b/.github/workflows/auto-gen-docs.yaml index 4997599a..8db4d9ba 100644 --- a/.github/workflows/auto-gen-docs.yaml +++ b/.github/workflows/auto-gen-docs.yaml @@ -77,7 +77,7 @@ jobs: # Creates pull request with generated docs - name: Create Pull Request if: env.IS_CHANGED == 'true' - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@v5 with: commit-message: Auto-updated docs branch: docs-generator diff --git a/.github/workflows/release-helm-chart.yaml b/.github/workflows/release-helm-chart.yaml index 725acb6b..36bf84e1 100644 --- a/.github/workflows/release-helm-chart.yaml +++ b/.github/workflows/release-helm-chart.yaml @@ -31,7 +31,7 @@ jobs: # Creates pull request with new chart version - name: Create Pull Request - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@v5 with: commit-message: Release Helm chart ${{ github.event.inputs.chartVersion }} branch: helm-chart-release-${{ github.event.inputs.chartVersion }} From 93d3e9eb9f6b39920537f1dfc79c8a6b21b74ed4 Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Mon, 5 Jun 2023 23:20:03 +0200 Subject: [PATCH 12/40] fix hugo and backup version, fix backup ci (#847) --- .github/workflows/release-backup.yaml | 1 + Makefile | 2 +- backup/pvc/VERSION.txt | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-backup.yaml b/.github/workflows/release-backup.yaml index 8a9ac30e..983efc70 100644 --- a/.github/workflows/release-backup.yaml +++ b/.github/workflows/release-backup.yaml @@ -54,5 +54,6 @@ jobs: if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' run: | git reset --hard + rm bin/sembump make -C backup/pvc docker-build make -C backup/pvc docker-release diff --git a/Makefile b/Makefile index a3e8f279..744d10c0 100644 --- a/Makefile +++ b/Makefile @@ -478,7 +478,7 @@ helm-release-latest: helm # Download and build hugo extended locally if necessary HUGO_PATH = $(shell pwd)/bin/hugo -HUGO_VERSION = v0.62.2 +HUGO_VERSION = v0.113.0 HAS_HUGO := $(shell $(HUGO_PATH)/hugo version 2>&- | grep $(HUGO_VERSION)) hugo: ifeq ($(HAS_HUGO), ) diff --git a/backup/pvc/VERSION.txt b/backup/pvc/VERSION.txt index f0cfd3bb..f82e0685 100644 --- a/backup/pvc/VERSION.txt +++ b/backup/pvc/VERSION.txt @@ -1 +1 @@ -v0.2.2 +v0.2.4 From 813cbc812eafad55cbba2fccd4a8eaecee508ebe Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Mon, 5 Jun 2023 23:54:37 +0200 Subject: [PATCH 13/40] fix: hugo and backup ci again (#848) --- .github/workflows/auto-gen-docs.yaml | 2 +- .github/workflows/release-backup.yaml | 1 - backup/pvc/Makefile | 1 + 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/auto-gen-docs.yaml b/.github/workflows/auto-gen-docs.yaml index 8db4d9ba..f446e72f 100644 --- a/.github/workflows/auto-gen-docs.yaml +++ b/.github/workflows/auto-gen-docs.yaml @@ -39,7 +39,7 @@ jobs: if: env.IS_CHANGED == 'true' uses: peaceiris/actions-hugo@v2 with: - hugo-version: '0.62.2' + hugo-version: '0.113.0' extended: true # Sets up node - required by Hugo diff --git a/.github/workflows/release-backup.yaml b/.github/workflows/release-backup.yaml index 983efc70..8a9ac30e 100644 --- a/.github/workflows/release-backup.yaml +++ b/.github/workflows/release-backup.yaml @@ -54,6 +54,5 @@ jobs: if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' run: | git reset --hard - rm bin/sembump make -C backup/pvc docker-build make -C backup/pvc docker-release diff --git a/backup/pvc/Makefile b/backup/pvc/Makefile index d8ec544f..3587d57d 100644 --- a/backup/pvc/Makefile +++ b/backup/pvc/Makefile @@ -151,6 +151,7 @@ bump-version: sembump ## Bump the version in the version file. Set BUMP to [ pat echo $(NEW_VERSION) > VERSION.txt git add VERSION.txt git commit -avm "Bump backup PVC version to $(NEW_VERSION)" + rm $(PROJECT_DIR)/bin/sembump .PHONY: tag tag: ## Create a new git tag to prepare to build a release From 3fe842fff4bb910278a905af8f9171e77a9cd313 Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Tue, 6 Jun 2023 00:10:36 +0200 Subject: [PATCH 14/40] chore: prearing version bumpt to v0.8.0-beta2 (#849) --- .github/workflows/release-backup.yaml | 1 + VERSION.txt | 2 +- chart/jenkins-operator/values.yaml | 12 ++++++------ config.base.env | 2 +- pkg/plugins/base_plugins.go | 6 +++--- test/e2e/configuration_test.go | 6 +++--- test/e2e/test_utility.go | 2 +- test/helm/helm_test.go | 2 +- 8 files changed, 17 insertions(+), 16 deletions(-) diff --git a/.github/workflows/release-backup.yaml b/.github/workflows/release-backup.yaml index 8a9ac30e..983efc70 100644 --- a/.github/workflows/release-backup.yaml +++ b/.github/workflows/release-backup.yaml @@ -54,5 +54,6 @@ jobs: if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' run: | git reset --hard + rm bin/sembump make -C backup/pvc docker-build make -C backup/pvc docker-release diff --git a/VERSION.txt b/VERSION.txt index bd0a7375..ff2a3fbf 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -v0.8.0-beta +v0.8.0-beta2 diff --git a/chart/jenkins-operator/values.yaml b/chart/jenkins-operator/values.yaml index 7df657a0..d6415d75 100644 --- a/chart/jenkins-operator/values.yaml +++ b/chart/jenkins-operator/values.yaml @@ -36,7 +36,7 @@ jenkins: # image is the name (and tag) of the Jenkins instance # Default: jenkins/jenkins:lts # It's recommended to use LTS (tag: "lts") version - image: jenkins/jenkins:2.387.3-lts + image: jenkins/jenkins:2.401.1-lts # env contains jenkins container environment variables env: [] @@ -92,15 +92,15 @@ jenkins: # - name: kubernetes # version: 3937.vd7b_82db_e347b_ # - name: workflow-job - # version: 1301.v054d9cea_9593 + # version: 1308.v58d48a_763b_31 # - name: workflow-aggregator # version: 596.v8c21c963d92d # - name: git # version: 5.0.2 # - name: job-dsl - # version: "1.83" + # version: "1.84" # - name: configuration-as-code - # version: 1625.v27444588cc3d + # version: 1647.ve39ca_b_829b_42 # - name: kubernetes-credentials-provider # version: 1.211.vc236a_f5a_2f3c @@ -210,7 +210,7 @@ jenkins: # image used by backup feature # By default using prebuilt backup PVC image - image: quay.io/jenkins-kubernetes-operator/backup-pvc:v0.2.1 + image: quay.io/jenkins-kubernetes-operator/backup-pvc:v0.2.5 # containerName is backup container name containerName: backup @@ -294,7 +294,7 @@ operator: replicaCount: 1 # image is the name (and tag) of the Jenkins Operator image - image: quay.io/jenkins-kubernetes-operator/operator:v0.8.0-beta + image: quay.io/jenkins-kubernetes-operator/operator:v0.8.0-beta2 # imagePullPolicy defines policy for pulling images imagePullPolicy: IfNotPresent diff --git a/config.base.env b/config.base.env index 2a74da58..9c4ef8a3 100644 --- a/config.base.env +++ b/config.base.env @@ -13,5 +13,5 @@ GEN_CRD_API=gen-crd-api-reference-docs IMAGE_PULL_MODE=local HELM_VERSION=3.1.2 CLUSTER_DOMAIN=cluster.local -LATEST_LTS_VERSION=2.387.3 +LATEST_LTS_VERSION=2.401.1 KIND_CLUSTER_NAME=jenkins diff --git a/pkg/plugins/base_plugins.go b/pkg/plugins/base_plugins.go index 39ca3264..c5247163 100644 --- a/pkg/plugins/base_plugins.go +++ b/pkg/plugins/base_plugins.go @@ -1,13 +1,13 @@ package plugins const ( - configurationAsCodePlugin = "configuration-as-code:1625.v27444588cc3d" + configurationAsCodePlugin = "configuration-as-code:1647.ve39ca_b_829b_42" gitPlugin = "git:5.0.2" - jobDslPlugin = "job-dsl:1.83" + jobDslPlugin = "job-dsl:1.84" kubernetesPlugin = "kubernetes:3937.vd7b_82db_e347b_" kubernetesCredentialsProviderPlugin = "kubernetes-credentials-provider:1.211.vc236a_f5a_2f3c" workflowAggregatorPlugin = "workflow-aggregator:596.v8c21c963d92d" - workflowJobPlugin = "workflow-job:1301.v054d9cea_9593" + workflowJobPlugin = "workflow-job:1308.v58d48a_763b_31" ) // basePluginsList contains plugins to install by operator. diff --git a/test/e2e/configuration_test.go b/test/e2e/configuration_test.go index ff8c8662..51f1904a 100644 --- a/test/e2e/configuration_test.go +++ b/test/e2e/configuration_test.go @@ -24,13 +24,13 @@ import ( const e2e = "e2e" var expectedBasePluginsList = []plugins.Plugin{ - plugins.Must(plugins.New("configuration-as-code:1625.v27444588cc3d")), + plugins.Must(plugins.New("configuration-as-code:1647.ve39ca_b_829b_42")), plugins.Must(plugins.New("git:5.0.2")), plugins.Must(plugins.New("kubernetes:3937.vd7b_82db_e347b_")), plugins.Must(plugins.New("kubernetes-credentials-provider:1.211.vc236a_f5a_2f3c")), - plugins.Must(plugins.New("job-dsl:1.83")), + plugins.Must(plugins.New("job-dsl:1.84")), plugins.Must(plugins.New("workflow-aggregator:596.v8c21c963d92d")), - plugins.Must(plugins.New("workflow-job:1301.v054d9cea_9593")), + plugins.Must(plugins.New("workflow-job:1308.v58d48a_763b_31")), } func createUserConfigurationSecret(namespace string, stringData map[string]string) { diff --git a/test/e2e/test_utility.go b/test/e2e/test_utility.go index 81c80b9c..45776235 100644 --- a/test/e2e/test_utility.go +++ b/test/e2e/test_utility.go @@ -21,7 +21,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/envtest" ) -const JenkinsTestImage = "jenkins/jenkins:2.387.3-lts" +const JenkinsTestImage = "jenkins/jenkins:2.401.1-lts" var ( Cfg *rest.Config diff --git a/test/helm/helm_test.go b/test/helm/helm_test.go index 6430b8ba..58d2dfc9 100644 --- a/test/helm/helm_test.go +++ b/test/helm/helm_test.go @@ -47,7 +47,7 @@ var _ = Describe("Jenkins Controller", func() { cmd := exec.Command("../../bin/helm", "upgrade", "jenkins", "../../chart/jenkins-operator", "--namespace", namespace.Name, "--debug", "--set-string", fmt.Sprintf("jenkins.namespace=%s", namespace.Name), - "--set-string", fmt.Sprintf("jenkins.image=%s", "jenkins/jenkins:2.387.3-lts"), + "--set-string", fmt.Sprintf("jenkins.image=%s", "jenkins/jenkins:2.401.1-lts"), "--set-string", fmt.Sprintf("operator.image=%s", *imageName), "--install") output, err := cmd.CombinedOutput() Expect(err).NotTo(HaveOccurred(), string(output)) From 6cceedba773fea2e3c213a8244a5a66a987cc33a Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Sun, 25 Jun 2023 15:48:36 +0200 Subject: [PATCH 15/40] fix(backup): get-latest.sh, search for both .gz and .zstd (#858) --- .github/workflows/auto-codespell.yml | 2 +- backup/pvc/bin/get-latest.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/auto-codespell.yml b/.github/workflows/auto-codespell.yml index 843cd2d3..e6fea4e9 100644 --- a/.github/workflows/auto-codespell.yml +++ b/.github/workflows/auto-codespell.yml @@ -18,4 +18,4 @@ jobs: with: check_filenames: true ignore_words_list: aks,ags,startin - skip: "*.js,package-lock.json,*.lock,*/Font-Awesome/*,*.toml,*.svg,*assets/vendor/bootstrap*" + skip: "*.js,package-lock.json,*.lock,*/Font-Awesome/*,*.toml,*.svg,*assets/vendor/bootstrap*,cert-manager.crds.yaml" diff --git a/backup/pvc/bin/get-latest.sh b/backup/pvc/bin/get-latest.sh index 5deba063..519a4c6e 100644 --- a/backup/pvc/bin/get-latest.sh +++ b/backup/pvc/bin/get-latest.sh @@ -3,8 +3,8 @@ set -eo pipefail [[ -z "${BACKUP_DIR}" ]] && echo "Required 'BACKUP_DIR' env not set" && exit 1 - -latest=$(find ${BACKUP_DIR} -name '*.tar.zstd' -exec basename {} \; | sort -g | tail -n 1) +# Search for all the tar.* inside the backup dir to support the migration between gzip vs zstd +latest=$(find ${BACKUP_DIR} -name '*.tar.*' -exec basename {} \; | sort -g | tail -n 1) if [[ "${latest}" == "" ]]; then echo "-1" From c2c249aa48f7ea7bb4467409c0e20f94b4080880 Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Sun, 25 Jun 2023 15:59:05 +0200 Subject: [PATCH 16/40] fix(ci): remove sembump (#859) --- .github/workflows/release-backup.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-backup.yaml b/.github/workflows/release-backup.yaml index 983efc70..2e5dc9d6 100644 --- a/.github/workflows/release-backup.yaml +++ b/.github/workflows/release-backup.yaml @@ -40,7 +40,10 @@ jobs: - name: Bump the version if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' shell: bash - run: make -C backup/pvc sembump && make -C backup/pvc bump-version + run: | + make -C backup/pvc sembump + make -C backup/pvc bump-version + rm backup/pvc/bin/sembump - name: Login to Quay.io if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' @@ -54,6 +57,5 @@ jobs: if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' run: | git reset --hard - rm bin/sembump make -C backup/pvc docker-build make -C backup/pvc docker-release From 97892a4cbd5ea9425ddab40b10a7672105f320fc Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Sun, 25 Jun 2023 21:34:27 +0200 Subject: [PATCH 17/40] wip feat(ci): Auto update k8s manifests, chart: add operator live/readiness probe (#860) --- .github/stale.yml | 47 ---------------- .../workflows/auto-generate-manifests.yaml | 55 +++++++++++++++++++ .../jenkins-operator/templates/operator.yaml | 16 +++++- 3 files changed, 69 insertions(+), 49 deletions(-) delete mode 100644 .github/stale.yml create mode 100644 .github/workflows/auto-generate-manifests.yaml diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index 30867b8b..00000000 --- a/.github/stale.yml +++ /dev/null @@ -1,47 +0,0 @@ -# Configuration for probot-stale - https://github.com/probot/stale - -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 30 - -# Number of days of inactivity before a stale Issue or Pull Request is closed. -# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. -daysUntilClose: 30 - -# Issues with these labels will never be considered stale -exemptLabels: - - frozen - -# Set to true to ignore issues in a milestone (defaults to false) -exemptMilestones: true - -# Label to use when marking an issue as stale -staleLabel: stale - -issues: - # Comment to post when marking an issue as stale. Set to `false` to disable - markComment: > - This issue has been automatically marked as stale because it has not had recent activity. - It will be closed if no further activity occurs. - If this issue is still affecting you, just comment with any updates and we'll keep it open. - Thank you for your contributions. - - # Comment to post when closing a stale issue. Set to `false` to disable - closeComment: > - Closing this issue after a prolonged period of inactivity. - If this issue is still present in the latest release, please create a new issue with up-to-date information. Thank you! - -pulls: - # Comment to post when marking a pull request as stale. - markComment: > - This pull request has been automatically marked as stale because it has not had recent activity. - It will be closed if no further activity occurs. - If this pull request is still relevant, just comment with any updates and we'll keep it open. - Thank you for your contributions. - - # Comment to post when closing a stale pull request. Set to `false` to disable - closeComment: > - Closing this pull request after a prolonged period of inactivity. - If this issue is still present in the latest release, please ask for this pull request to be reopened. Thank you! - -# Limit the number of actions per hour, from 1-30. Default is 30 -limitPerRun: 30 diff --git a/.github/workflows/auto-generate-manifests.yaml b/.github/workflows/auto-generate-manifests.yaml new file mode 100644 index 00000000..10b6d398 --- /dev/null +++ b/.github/workflows/auto-generate-manifests.yaml @@ -0,0 +1,55 @@ +name: Update k8s manifests +on: + push: + branches: + - master + - main + paths-ignore: + - 'docs/**' + - 'website/**' + - 'assets/**' + - 'backup/**' + - '*.md' + workflow_dispatch: + release: + types: [published] + +jobs: + update-manifest: + name: Update k8s manifests + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v3 + + - name: Set up env vars + run: | + echo "HELM_VERSION=v$(sed -n 's/HELM_VERSION=//p' config.base.env)" >> $GITHUB_ENV + + - name: Helm lint + run: make helm-lint + + #TODO: add also the webhook part and understand if is necessary + - name: Helm update plain manifests + run: | + helm template --set fullnameOverride=jenkins-operator \ + --set jenkins.enabled=false \ + --set jenkins.backup.enabled=false \ + --set jenkins.backup.pvc.enabled=false \ + --set operator.resources.limits.cpu=100m \ + --set operator.resources.limits.memory=120Mi \ + --set operator.resources.requests.cpu=100m \ + --set operator.resources.requests.memory=120Mi \ + chart/jenkins-operator/ > deploy/all-in-one-v1alpha2.yaml + sed -i '/namespace: default/d' deploy/all-in-one-v1alpha2.yaml + + cp chart/jenkins-operator/crds/jenkins-crd.yaml deploy/crds/jenkins.io_jenkins_crd.yaml + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v5 + with: + commit-message: Auto-updated Kubernetes Manifests + branch: manifest-deploy-update + title: Auto-updated Kubernetes Manifests + body: | + Auto-updated Kubernetes Manifests from master commit ${{ github.sha }} diff --git a/chart/jenkins-operator/templates/operator.yaml b/chart/jenkins-operator/templates/operator.yaml index 82e8e6c7..b98e4249 100644 --- a/chart/jenkins-operator/templates/operator.yaml +++ b/chart/jenkins-operator/templates/operator.yaml @@ -31,7 +31,7 @@ spec: protocol: TCP command: - /manager - args: + args: {{- if .Values.webhook.enabled }} - --validate-security-warnings {{- end }} @@ -41,6 +41,18 @@ spec: name: webhook-certs readOnly: true {{- end }} + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 env: - name: WATCH_NAMESPACE value: {{ .Values.jenkins.namespace }} @@ -71,4 +83,4 @@ spec: defaultMode: 420 secretName: jenkins-{{ .Values.webhook.certificate.name }} terminationGracePeriodSeconds: 10 - {{- end }} \ No newline at end of file + {{- end }} From 0abc758dc314abb509fa86ff1b74021cfa025b02 Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Mon, 26 Jun 2023 12:43:24 +0200 Subject: [PATCH 18/40] chore: several minor updates, bump helm, base-plugins and backup base img (#865) --- .github/workflows/release-backup.yaml | 2 +- backup/pvc/Dockerfile | 8 ++++---- backup/pvc/Makefile | 1 - backup/pvc/VERSION.txt | 2 +- config.base.env | 2 +- pkg/plugins/base_plugins.go | 6 +++--- test/e2e/configuration_test.go | 6 +++--- 7 files changed, 13 insertions(+), 14 deletions(-) diff --git a/.github/workflows/release-backup.yaml b/.github/workflows/release-backup.yaml index 2e5dc9d6..9e2a7ba4 100644 --- a/.github/workflows/release-backup.yaml +++ b/.github/workflows/release-backup.yaml @@ -43,7 +43,6 @@ jobs: run: | make -C backup/pvc sembump make -C backup/pvc bump-version - rm backup/pvc/bin/sembump - name: Login to Quay.io if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' @@ -57,5 +56,6 @@ jobs: if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' run: | git reset --hard + rm bin/sembump make -C backup/pvc docker-build make -C backup/pvc docker-release diff --git a/backup/pvc/Dockerfile b/backup/pvc/Dockerfile index 3b283e16..ecc42591 100644 --- a/backup/pvc/Dockerfile +++ b/backup/pvc/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:bullseye-slim +FROM debian:bookworm-slim LABEL maintainer="Jenkins Kubernetes Operator Community" \ org.opencontainers.image.authors="Jenkins Kubernetes Operator Community" \ @@ -6,7 +6,7 @@ LABEL maintainer="Jenkins Kubernetes Operator Community" \ org.opencontainers.image.description="Jenkins Operator Backup img via pvc volume" \ org.opencontainers.image.url="quay.io/jenkins-kubernetes-operator/backup-pvc" \ org.opencontainers.image.source="https://github.com/jenkinsci/kubernetes-operator/tree/master/backup/pvc" \ - org.opencontainers.image.base.name="debian:bullseye-slim" + org.opencontainers.image.base.name="debian:bookworm-slim" ARG UID ARG GID @@ -24,9 +24,9 @@ RUN apt update \ --uid "$UID" \ "$USER" +COPY bin/*.sh /home/user/bin/ +RUN chmod +x /home/user/bin/*.sh WORKDIR /home/user/bin -COPY bin . -RUN chmod +x *.sh USER user CMD ./run.sh diff --git a/backup/pvc/Makefile b/backup/pvc/Makefile index 3587d57d..d8ec544f 100644 --- a/backup/pvc/Makefile +++ b/backup/pvc/Makefile @@ -151,7 +151,6 @@ bump-version: sembump ## Bump the version in the version file. Set BUMP to [ pat echo $(NEW_VERSION) > VERSION.txt git add VERSION.txt git commit -avm "Bump backup PVC version to $(NEW_VERSION)" - rm $(PROJECT_DIR)/bin/sembump .PHONY: tag tag: ## Create a new git tag to prepare to build a release diff --git a/backup/pvc/VERSION.txt b/backup/pvc/VERSION.txt index f82e0685..b88fb90f 100644 --- a/backup/pvc/VERSION.txt +++ b/backup/pvc/VERSION.txt @@ -1 +1 @@ -v0.2.4 +v0.2.5 diff --git a/config.base.env b/config.base.env index 9c4ef8a3..600d7fb9 100644 --- a/config.base.env +++ b/config.base.env @@ -11,7 +11,7 @@ API_VERSION_NEXT=v1alpha3 ALL_IN_ONE_DEPLOY_FILE_PREFIX=all-in-one GEN_CRD_API=gen-crd-api-reference-docs IMAGE_PULL_MODE=local -HELM_VERSION=3.1.2 +HELM_VERSION=3.12.1 CLUSTER_DOMAIN=cluster.local LATEST_LTS_VERSION=2.401.1 KIND_CLUSTER_NAME=jenkins diff --git a/pkg/plugins/base_plugins.go b/pkg/plugins/base_plugins.go index c5247163..4961a937 100644 --- a/pkg/plugins/base_plugins.go +++ b/pkg/plugins/base_plugins.go @@ -2,10 +2,10 @@ package plugins const ( configurationAsCodePlugin = "configuration-as-code:1647.ve39ca_b_829b_42" - gitPlugin = "git:5.0.2" + gitPlugin = "git:5.1.0" jobDslPlugin = "job-dsl:1.84" - kubernetesPlugin = "kubernetes:3937.vd7b_82db_e347b_" - kubernetesCredentialsProviderPlugin = "kubernetes-credentials-provider:1.211.vc236a_f5a_2f3c" + kubernetesPlugin = "kubernetes:3952.v88e3b_0cf300b_" + kubernetesCredentialsProviderPlugin = "kubernetes-credentials-provider:1.225.v14f9e6b_28f53" workflowAggregatorPlugin = "workflow-aggregator:596.v8c21c963d92d" workflowJobPlugin = "workflow-job:1308.v58d48a_763b_31" ) diff --git a/test/e2e/configuration_test.go b/test/e2e/configuration_test.go index 51f1904a..1a924c87 100644 --- a/test/e2e/configuration_test.go +++ b/test/e2e/configuration_test.go @@ -25,9 +25,9 @@ const e2e = "e2e" var expectedBasePluginsList = []plugins.Plugin{ plugins.Must(plugins.New("configuration-as-code:1647.ve39ca_b_829b_42")), - plugins.Must(plugins.New("git:5.0.2")), - plugins.Must(plugins.New("kubernetes:3937.vd7b_82db_e347b_")), - plugins.Must(plugins.New("kubernetes-credentials-provider:1.211.vc236a_f5a_2f3c")), + plugins.Must(plugins.New("git:5.1.0")), + plugins.Must(plugins.New("kubernetes:3952.v88e3b_0cf300b_")), + plugins.Must(plugins.New("kubernetes-credentials-provider:1.225.v14f9e6b_28f53")), plugins.Must(plugins.New("job-dsl:1.84")), plugins.Must(plugins.New("workflow-aggregator:596.v8c21c963d92d")), plugins.Must(plugins.New("workflow-job:1308.v58d48a_763b_31")), From 5ddcf1075d6933d9cda0c339ee81df91018cb546 Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Tue, 27 Jun 2023 09:37:31 +0200 Subject: [PATCH 19/40] fix: latestplugin always true, add more complex bats tests, update devcontainers and make manifests (#857) --- .devcontainer/devcontainer.json | 2 +- .github/workflows/release-backup.yaml | 1 - Makefile | 1 + api/v1alpha2/jenkins_types.go | 3 +- api/v1alpha2/zz_generated.deepcopy.go | 4 +- chart/jenkins-operator/crds/jenkins-crd.yaml | 23 ++--- config/crd/bases/jenkins.io_jenkins.yaml | 23 ++--- config/rbac/role.yaml | 5 +- .../base/resources/scripts_configmap.go | 10 +-- pkg/constants/constants.go | 2 +- test/bats/1-deploy.bats | 15 ++++ test/bats/2-deploy-with-more-options.bats | 88 +++++++++++++++++++ test/helm/helm_test.go | 1 + 13 files changed, 142 insertions(+), 36 deletions(-) create mode 100644 test/bats/2-deploy-with-more-options.bats diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index c726b0b5..31270ced 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,7 +3,7 @@ { "name": "Kubernetes - Minikube-in-Docker", // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile - "image": "mcr.microsoft.com/devcontainers/base:bullseye", + "image": "mcr.microsoft.com/devcontainers/base:bookworm", "features": { "ghcr.io/devcontainers/features/docker-in-docker:2": { diff --git a/.github/workflows/release-backup.yaml b/.github/workflows/release-backup.yaml index 9e2a7ba4..337c263d 100644 --- a/.github/workflows/release-backup.yaml +++ b/.github/workflows/release-backup.yaml @@ -56,6 +56,5 @@ jobs: if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' run: | git reset --hard - rm bin/sembump make -C backup/pvc docker-build make -C backup/pvc docker-release diff --git a/Makefile b/Makefile index 744d10c0..4d6c6648 100644 --- a/Makefile +++ b/Makefile @@ -146,6 +146,7 @@ update-lts-version: ## Update the latest lts version sed -i 's|jenkins/jenkins:[0-9]\+.[0-9]\+.[0-9]\+|jenkins/jenkins:$(LATEST_LTS_VERSION)|g' chart/jenkins-operator/values.yaml sed -i 's|jenkins/jenkins:[0-9]\+.[0-9]\+.[0-9]\+|jenkins/jenkins:$(LATEST_LTS_VERSION)|g' test/e2e/test_utility.go sed -i 's|jenkins/jenkins:[0-9]\+.[0-9]\+.[0-9]\+|jenkins/jenkins:$(LATEST_LTS_VERSION)|g' test/helm/helm_test.go + sed -i 's|jenkins/jenkins:[0-9]\+.[0-9]\+.[0-9]\+|jenkins/jenkins:$(LATEST_LTS_VERSION)|g' pkg/constants/constants.go .PHONY: run run: export WATCH_NAMESPACE = $(NAMESPACE) diff --git a/api/v1alpha2/jenkins_types.go b/api/v1alpha2/jenkins_types.go index 3e380c99..6064dccf 100644 --- a/api/v1alpha2/jenkins_types.go +++ b/api/v1alpha2/jenkins_types.go @@ -373,7 +373,8 @@ type JenkinsMaster struct { // Allow to override jenkins-plugin-cli default behavior // while downloading the plugin and dependencies // see: https://github.com/jenkinsci/plugin-installation-manager-tool#cli-options - LatestPlugins bool `json:"latestPlugins"` + // +optional + LatestPlugins *bool `json:"latestPlugins,omitempty"` // DisableCSRFProtection allows you to toggle CSRF Protection on Jenkins DisableCSRFProtection bool `json:"disableCSRFProtection"` diff --git a/api/v1alpha2/zz_generated.deepcopy.go b/api/v1alpha2/zz_generated.deepcopy.go index cfd1b305..35547563 100644 --- a/api/v1alpha2/zz_generated.deepcopy.go +++ b/api/v1alpha2/zz_generated.deepcopy.go @@ -23,7 +23,7 @@ package v1alpha2 import ( corev1 "k8s.io/api/core/v1" - rbacv1 "k8s.io/api/rbac/v1" + "k8s.io/api/rbac/v1" "k8s.io/apimachinery/pkg/runtime" ) @@ -400,7 +400,7 @@ func (in *JenkinsSpec) DeepCopyInto(out *JenkinsSpec) { in.ConfigurationAsCode.DeepCopyInto(&out.ConfigurationAsCode) if in.Roles != nil { in, out := &in.Roles, &out.Roles - *out = make([]rbacv1.RoleRef, len(*in)) + *out = make([]v1.RoleRef, len(*in)) copy(*out, *in) } in.ServiceAccount.DeepCopyInto(&out.ServiceAccount) diff --git a/chart/jenkins-operator/crds/jenkins-crd.yaml b/chart/jenkins-operator/crds/jenkins-crd.yaml index b00bb4f4..87d40704 100644 --- a/chart/jenkins-operator/crds/jenkins-crd.yaml +++ b/chart/jenkins-operator/crds/jenkins-crd.yaml @@ -157,11 +157,11 @@ spec: type: object basePlugins: description: 'BasePlugins contains plugins required by operator - Defaults to : - name: kubernetes version: "1.31.3" - name: - workflow-job version: "1145.v7f2433caa07f" - name: workflow-aggregator version: - "2.6" - name: git version: "4.11.3" - name: job-dsl version: - "1.78.1" - name: configuration-as-code version: "1346.ve8cfa_3473c94" - name: - kubernetes-credentials-provider version: "0.20"' + Defaults to : - name: configuration-as-code version: "1625.v27444588cc3d" + - name: git version: "5.0.0" - name: job-dsl version: "1.83" + - name: kubernetes version: "3909.v1f2c633e8590" - name: kubernetes-credentials-provider + version: "1.211.vc236a_f5a_2f3c" - name: workflow-aggregator + version: "596.v8c21c963d92d" - name: workflow-job version: "1289.vd1c337fd5354"' items: description: Plugin defines Jenkins plugin. properties: @@ -1100,11 +1100,6 @@ spec: - resources type: object type: array - latestPlugins: - description: 'Allow to override jenkins-plugin-cli default behavior - while downloading the plugin and dependencies, see: - https://github.com/jenkinsci/plugin-installation-manager-tool#cli-options' - type: boolean disableCSRFProtection: description: DisableCSRFProtection allows you to toggle CSRF Protection on Jenkins @@ -1150,6 +1145,10 @@ spec: selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' type: object + latestPlugins: + description: 'Allow to override jenkins-plugin-cli default behavior + while downloading the plugin and dependencies see: https://github.com/jenkinsci/plugin-installation-manager-tool#cli-options' + type: boolean nodeSelector: additionalProperties: type: string @@ -3124,8 +3123,10 @@ spec: type: object type: array seedJobAgentImage: + description: SeedJobAgentImage defines the image that will be used + by the seed job agent. If not defined jenkins/inbound-agent:4.9-1 + will be used. type: string - description: 'SeedJobAgentImage defines the image that will be used by the seed job agent. If not defined jenkins/inbound-agent:4.10-3 will be used.' seedJobs: description: 'SeedJobs defines list of Jenkins Seed Job configurations More info: https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration#configure-seed-jobs-and-pipelines' diff --git a/config/crd/bases/jenkins.io_jenkins.yaml b/config/crd/bases/jenkins.io_jenkins.yaml index b00bb4f4..87d40704 100644 --- a/config/crd/bases/jenkins.io_jenkins.yaml +++ b/config/crd/bases/jenkins.io_jenkins.yaml @@ -157,11 +157,11 @@ spec: type: object basePlugins: description: 'BasePlugins contains plugins required by operator - Defaults to : - name: kubernetes version: "1.31.3" - name: - workflow-job version: "1145.v7f2433caa07f" - name: workflow-aggregator version: - "2.6" - name: git version: "4.11.3" - name: job-dsl version: - "1.78.1" - name: configuration-as-code version: "1346.ve8cfa_3473c94" - name: - kubernetes-credentials-provider version: "0.20"' + Defaults to : - name: configuration-as-code version: "1625.v27444588cc3d" + - name: git version: "5.0.0" - name: job-dsl version: "1.83" + - name: kubernetes version: "3909.v1f2c633e8590" - name: kubernetes-credentials-provider + version: "1.211.vc236a_f5a_2f3c" - name: workflow-aggregator + version: "596.v8c21c963d92d" - name: workflow-job version: "1289.vd1c337fd5354"' items: description: Plugin defines Jenkins plugin. properties: @@ -1100,11 +1100,6 @@ spec: - resources type: object type: array - latestPlugins: - description: 'Allow to override jenkins-plugin-cli default behavior - while downloading the plugin and dependencies, see: - https://github.com/jenkinsci/plugin-installation-manager-tool#cli-options' - type: boolean disableCSRFProtection: description: DisableCSRFProtection allows you to toggle CSRF Protection on Jenkins @@ -1150,6 +1145,10 @@ spec: selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' type: object + latestPlugins: + description: 'Allow to override jenkins-plugin-cli default behavior + while downloading the plugin and dependencies see: https://github.com/jenkinsci/plugin-installation-manager-tool#cli-options' + type: boolean nodeSelector: additionalProperties: type: string @@ -3124,8 +3123,10 @@ spec: type: object type: array seedJobAgentImage: + description: SeedJobAgentImage defines the image that will be used + by the seed job agent. If not defined jenkins/inbound-agent:4.9-1 + will be used. type: string - description: 'SeedJobAgentImage defines the image that will be used by the seed job agent. If not defined jenkins/inbound-agent:4.10-3 will be used.' seedJobs: description: 'SeedJobs defines list of Jenkins Seed Job configurations More info: https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration#configure-seed-jobs-and-pipelines' diff --git a/config/rbac/role.yaml b/config/rbac/role.yaml index dd2efda5..789349e9 100644 --- a/config/rbac/role.yaml +++ b/config/rbac/role.yaml @@ -1,9 +1,10 @@ --- apiVersion: rbac.authorization.k8s.io/v1 -kind: Role +kind: ClusterRole metadata: - name: jenkins-operator + creationTimestamp: null + name: manager-role rules: - apiGroups: - apps diff --git a/pkg/configuration/base/resources/scripts_configmap.go b/pkg/configuration/base/resources/scripts_configmap.go index 732d656e..b60aa50b 100644 --- a/pkg/configuration/base/resources/scripts_configmap.go +++ b/pkg/configuration/base/resources/scripts_configmap.go @@ -68,13 +68,11 @@ func buildConfigMapTypeMeta() metav1.TypeMeta { } func buildInitBashScript(jenkins *v1alpha2.Jenkins) (*string, error) { - defaultlatestPlugin := true - latestP := jenkins.Spec.Master.LatestPlugins - if !latestP { - latestP = defaultlatestPlugin + if latestP == nil { + latestP = new(bool) + *latestP = true } - data := struct { JenkinsHomePath string InitConfigurationPath string @@ -90,7 +88,7 @@ func buildInitBashScript(jenkins *v1alpha2.Jenkins) (*string, error) { UserPlugins: jenkins.Spec.Master.Plugins, InstallPluginsCommand: installPluginsCommand, JenkinsScriptsVolumePath: JenkinsScriptsVolumePath, - LatestPlugins: latestP, + LatestPlugins: *latestP, } output, err := render.Render(initBashTemplate, data) diff --git a/pkg/constants/constants.go b/pkg/constants/constants.go index b2d795d8..49c23ac4 100644 --- a/pkg/constants/constants.go +++ b/pkg/constants/constants.go @@ -8,7 +8,7 @@ const ( // SeedJobSuffix is a suffix added for all seed jobs SeedJobSuffix = "job-dsl-seed" // DefaultJenkinsMasterImage is the default Jenkins master docker image - DefaultJenkinsMasterImage = "jenkins/jenkins:2.319.3-lts" + DefaultJenkinsMasterImage = "jenkins/jenkins:2.401.1-lts" // DefaultHTTPPortInt32 is the default Jenkins HTTP port DefaultHTTPPortInt32 = int32(8080) // DefaultSlavePortInt32 is the default Jenkins port for slaves diff --git a/test/bats/1-deploy.bats b/test/bats/1-deploy.bats index 911d323e..2392293f 100644 --- a/test/bats/1-deploy.bats +++ b/test/bats/1-deploy.bats @@ -23,6 +23,8 @@ diag() { --set jenkins.namespace=${DETIK_CLIENT_NAMESPACE} \ --set namespace=${DETIK_CLIENT_NAMESPACE} \ --set operator.image=${OPERATOR_IMAGE} \ + --set jenkins.latestPlugins=true \ + --set jenkins.backup.makeBackupBeforePodDeletion=false \ chart/jenkins-operator assert_success assert ${HELM} status default @@ -98,6 +100,19 @@ diag() { assert_success } +#bats test_tags=phase:helm +@test "1.9 Helm: check Jenkins crd" { + [[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly" + run verify "there is 1 crd named 'jenkins.jenkins.io'" + assert_success +} + @test "1.9 Helm: Clean" { + run ${HELM} uninstall default + assert_success + # Wait for the complete removal + sleep 30 + run verify "there is 0 pvc named 'jenkins backup'" + assert_success rm "chart/jenkins-operator/deploy.tmp" } diff --git a/test/bats/2-deploy-with-more-options.bats b/test/bats/2-deploy-with-more-options.bats new file mode 100644 index 00000000..a39c9ea0 --- /dev/null +++ b/test/bats/2-deploy-with-more-options.bats @@ -0,0 +1,88 @@ +setup() { + load 'test_helper' + _common_setup +} + +#bats test_tags=phase:helm +@test "2.1 Install helm chart with options" { + run ${HELM} dependency update chart/jenkins-operator + assert_success + run ${KUBECTL} label node jenkins-control-plane batstest=yep + ${HELM} status options && skip "Helm release 'options' already exists" + run ${HELM} install options \ + --set jenkins.namespace=${DETIK_CLIENT_NAMESPACE} \ + --set namespace=${DETIK_CLIENT_NAMESPACE} \ + --set operator.image=${OPERATOR_IMAGE} \ + --set jenkins.latestPlugins=true \ + --set jenkins.nodeSelector.batstest=yep \ + --set jenkins.backup.makeBackupBeforePodDeletion=false \ + chart/jenkins-operator + assert_success + assert ${HELM} status options + touch "chart/jenkins-operator/deploy.tmp" +} + +#bats test_tags=phase:helm +@test "2.2 Helm: check Jenkins operator pods status" { + [[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly" + + run verify "there is 1 deployment named 'options-jenkins-operator'" + assert_success + + run verify "there is 1 pod named 'options-jenkins-operator-'" + assert_success + + run try "at most 20 times every 10s to get pods named 'options-jenkins-operator-' and verify that '.status.containerStatuses[?(@.name==\"jenkins-operator\")].ready' is 'true'" + assert_success +} + +#bats test_tags=phase:helm +@test "2.3 Helm: check Jenkins Pod status" { + [[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly" + + run try "at most 20 times every 10s to get pods named 'jenkins-jenkins' and verify that '.status.containerStatuses[?(@.name==\"jenkins-master\")].ready' is 'true'" + assert_success + + run try "at most 20 times every 5s to get pods named 'jenkins-jenkins' and verify that '.status.containerStatuses[?(@.name==\"jenkins-master\")].ready' is 'true'" + assert_success +} + +@test "2.4 check node selector" { + [[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly" + + NODENAME=$(${KUBECTL} get pod jenkins-jenkins -o jsonpath={.spec.nodeName}) + + run ${KUBECTL} get node -l batstest=yep -o name + assert_success + assert_output "node/$NODENAME" +} + +@test "2.5 check jenkins-plugin-cli command" { + [[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly" + + run ${KUBECTL} logs -c jenkins-master jenkins-jenkins + assert_success + assert_output --partial 'jenkins-plugin-cli --verbose --latest true -f /var/lib/jenkins/base-plugins.txt' + assert_output --partial 'jenkins-plugin-cli --verbose --latest true -f /var/lib/jenkins/user-plugins.txt' +} + + +@test "2.7 check backup" { + [[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly" + sleep 120 + run ${KUBECTL} logs -l app.kubernetes.io/name=jenkins-operator --tail 10000 + assert_success + assert_output --partial "Performing backup '1'" + assert_output --partial "Backup completed '1', updating status" +} + + +@test "2. Helm: Clean" { + skip + [[ ! -f "chart/jenkins-operator/deploy.tmp" ]] && skip "Jenkins helm chart have not been deployed correctly" + + run ${HELM} uninstall options + assert_success + + rm "chart/jenkins-operator/deploy.tmp" +} diff --git a/test/helm/helm_test.go b/test/helm/helm_test.go index 58d2dfc9..98c76b94 100644 --- a/test/helm/helm_test.go +++ b/test/helm/helm_test.go @@ -127,6 +127,7 @@ var _ = Describe("Jenkins Controller with security validator", func() { "--set-string", fmt.Sprintf("jenkins.namespace=%s", namespace.Name), "--set-string", fmt.Sprintf("operator.image=%s", *imageName), "--set", fmt.Sprintf("webhook.enabled=%t", true), + "--set", fmt.Sprintf("jenkins.latestPlugins=%t", true), "--set", fmt.Sprintf("jenkins.enabled=%t", false), "--install") output, err := cmd.CombinedOutput() Expect(err).NotTo(HaveOccurred(), string(output)) From e79b06024ad95ab578159554b01ffee6ad3a646c Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Thu, 29 Jun 2023 09:05:29 +0200 Subject: [PATCH 20/40] chore: preparing v0.8.0-beta2 version bump (#866) --- README.md | 2 +- chart/jenkins-operator/README.md | 6 +++--- chart/jenkins-operator/values.yaml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 382f4f40..e5419221 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Jenkins Operator -[![Version](https://img.shields.io/badge/version-v0.7.1-brightgreen.svg)](https://github.com/jenkinsci/kubernetes-operator/releases/tag/v0.7.1) +[![Version](https://img.shields.io/badge/version-v0.8.0-beta2-brightgreen.svg)](https://github.com/jenkinsci/kubernetes-operator/releases/tag/v0.8.0-beta2) [![Build status](https://github.com/jenkinsci/kubernetes-operator/actions/workflows/auto-tests-e2e.yaml/badge.svg)](https://github.com/jenkinsci/kubernetes-operator/actions/workflows/auto-tests-e2e.yaml) [![Go Report Card](https://goreportcard.com/badge/github.com/jenkinsci/kubernetes-operator "Go Report Card")](https://goreportcard.com/report/github.com/jenkinsci/kubernetes-operator) [![Gitter chat](https://badges.gitter.im/jenkinsci/kubernetes-operator.png)](https://gitter.im/jenkinsci/kubernetes-operator) diff --git a/chart/jenkins-operator/README.md b/chart/jenkins-operator/README.md index 857b8b52..e550086c 100644 --- a/chart/jenkins-operator/README.md +++ b/chart/jenkins-operator/README.md @@ -28,7 +28,7 @@ Kubernetes native operator which fully manages Jenkins on Kubernetes | jenkins.backup.env[2].name | string | `"BACKUP_COUNT"` | | | jenkins.backup.env[2].value | string | `"3"` | | | jenkins.backup.getLatestAction[0] | string | `"/home/user/bin/get-latest.sh"` | | -| jenkins.backup.image | string | `"quay.io/jenkins-kubernetes-operator/backup-pvc:v0.2.1"` | | +| jenkins.backup.image | string | `"quay.io/jenkins-kubernetes-operator/backup-pvc:v0.2.6"` | | | jenkins.backup.interval | int | `30` | | | jenkins.backup.makeBackupBeforePodDeletion | bool | `true` | | | jenkins.backup.pvc.className | string | `""` | | @@ -52,7 +52,7 @@ Kubernetes native operator which fully manages Jenkins on Kubernetes | jenkins.enabled | bool | `true` | | | jenkins.env | list | `[]` | | | jenkins.hostAliases | object | `{}` | | -| jenkins.image | string | `"jenkins/jenkins:2.387.3-lts"` | | +| jenkins.image | string | `"jenkins/jenkins:2.401.1-lts"` | | | jenkins.imagePullPolicy | string | `"Always"` | | | jenkins.imagePullSecrets | list | `[]` | | | jenkins.labels | object | `{}` | | @@ -95,7 +95,7 @@ Kubernetes native operator which fully manages Jenkins on Kubernetes | jenkins.volumes[0].persistentVolumeClaim.claimName | string | `"jenkins-backup"` | | | operator.affinity | object | `{}` | | | operator.fullnameOverride | string | `""` | | -| operator.image | string | `"quay.io/jenkins-kubernetes-operator/operator:v0.8.0-beta"` | | +| operator.image | string | `"quay.io/jenkins-kubernetes-operator/operator:v0.8.0-beta2"` | | | operator.imagePullPolicy | string | `"IfNotPresent"` | | | operator.imagePullSecrets | list | `[]` | | | operator.nameOverride | string | `""` | | diff --git a/chart/jenkins-operator/values.yaml b/chart/jenkins-operator/values.yaml index d6415d75..58ceb661 100644 --- a/chart/jenkins-operator/values.yaml +++ b/chart/jenkins-operator/values.yaml @@ -210,7 +210,7 @@ jenkins: # image used by backup feature # By default using prebuilt backup PVC image - image: quay.io/jenkins-kubernetes-operator/backup-pvc:v0.2.5 + image: quay.io/jenkins-kubernetes-operator/backup-pvc:v0.2.6 # containerName is backup container name containerName: backup From 7233d82237504960b6915e8fd0a00f990ec78af4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 23:24:08 +0200 Subject: [PATCH 21/40] Release 0.8.0-beta.2 Helm Chart (#868) Co-authored-by: brokenpip3 --- chart/index.yaml | 17 ++++++++++++++++- chart/jenkins-operator/Chart.yaml | 4 ++-- .../jenkins-operator-0.8.0-beta.2.tgz | Bin 0 -> 332237 bytes 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 chart/jenkins-operator/jenkins-operator-0.8.0-beta.2.tgz diff --git a/chart/index.yaml b/chart/index.yaml index 8d08b0ef..74165d23 100644 --- a/chart/index.yaml +++ b/chart/index.yaml @@ -1,6 +1,21 @@ apiVersion: v1 entries: jenkins-operator: + - apiVersion: v2 + appVersion: 0.8.0-beta.2 + created: "2023-06-30T21:22:53.308590035Z" + dependencies: + - condition: webhook.enabled + name: cert-manager + repository: https://charts.jetstack.io + version: 1.5.1 + description: Kubernetes native operator which fully manages Jenkins on Kubernetes + digest: b2502f91dffa1136190a8a98d73ac997c70387e100d79200b7403039ca98411e + icon: https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/assets/jenkins-operator-icon.png + name: jenkins-operator + urls: + - https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/chart/jenkins-operator/jenkins-operator-0.8.0-beta.2.tgz + version: 0.8.0-beta.2 - apiVersion: v2 appVersion: v0.8.0-beta created: "2023-04-17T22:11:04.706959723Z" @@ -348,4 +363,4 @@ entries: urls: - https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/chart/jenkins-operator/jenkins-operator-0.0.1.tgz version: 0.0.1 -generated: "2023-04-17T22:11:04.68789848Z" +generated: "2023-06-30T21:22:53.286551756Z" diff --git a/chart/jenkins-operator/Chart.yaml b/chart/jenkins-operator/Chart.yaml index da113865..c0f605b1 100644 --- a/chart/jenkins-operator/Chart.yaml +++ b/chart/jenkins-operator/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v2 -appVersion: "v0.8.0-beta" +appVersion: "0.8.0-beta.2" description: Kubernetes native operator which fully manages Jenkins on Kubernetes name: jenkins-operator -version: v0.8.0-beta +version: 0.8.0-beta.2 icon: https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/assets/jenkins-operator-icon.png dependencies: - name: cert-manager diff --git a/chart/jenkins-operator/jenkins-operator-0.8.0-beta.2.tgz b/chart/jenkins-operator/jenkins-operator-0.8.0-beta.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..fd4aca5f43bbceec972d8ab07245a10704ea89fe GIT binary patch literal 332237 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

}eaTr9_8^9{0!s?IR2mW*7vhfRe}P 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%0D{nVzO98)kUTBYU3Vzo;Wh*#w7#3QQ=?sA!P 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 Date: Fri, 30 Jun 2023 23:54:50 +0200 Subject: [PATCH 22/40] chore(ci): remove some garbage from auto-generate manifests (#869) --- .github/dependabot.yml | 2 +- .github/workflows/auto-generate-manifests.yaml | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index fa6081d3..620ba821 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,7 +5,7 @@ updates: schedule: interval: "daily" - package-ecosystem: "npm" - directory: "/" + directory: "/website" schedule: interval: "daily" - package-ecosystem: "github-actions" diff --git a/.github/workflows/auto-generate-manifests.yaml b/.github/workflows/auto-generate-manifests.yaml index 10b6d398..f820908c 100644 --- a/.github/workflows/auto-generate-manifests.yaml +++ b/.github/workflows/auto-generate-manifests.yaml @@ -42,6 +42,10 @@ jobs: --set operator.resources.requests.memory=120Mi \ chart/jenkins-operator/ > deploy/all-in-one-v1alpha2.yaml sed -i '/namespace: default/d' deploy/all-in-one-v1alpha2.yaml + sed -i 's/# Source://g' deploy/all-in-one-v1alpha2.yaml + sed -i 's/app\.kubernetes\.io\/instance: release-name//g' deploy/all-in-one-v1alpha2.yaml + sed -i 's/app\.kubernetes\.io\/managed-by: Helm//g' deploy/all-in-one-v1alpha2.yaml + sed -i 's/helm\.sh\/chart: [a-zA-Z0-9]+//g' deploy/all-in-one-v1alpha2.yaml cp chart/jenkins-operator/crds/jenkins-crd.yaml deploy/crds/jenkins.io_jenkins_crd.yaml From 181bcc3316773abc14f89af7ea712bd3fa30607b Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Sat, 1 Jul 2023 00:19:15 +0200 Subject: [PATCH 23/40] fix(ci): auto generate manifests cleanup (#871) --- .github/workflows/auto-generate-manifests.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/auto-generate-manifests.yaml b/.github/workflows/auto-generate-manifests.yaml index f820908c..d9b62423 100644 --- a/.github/workflows/auto-generate-manifests.yaml +++ b/.github/workflows/auto-generate-manifests.yaml @@ -42,10 +42,11 @@ jobs: --set operator.resources.requests.memory=120Mi \ chart/jenkins-operator/ > deploy/all-in-one-v1alpha2.yaml sed -i '/namespace: default/d' deploy/all-in-one-v1alpha2.yaml - sed -i 's/# Source://g' deploy/all-in-one-v1alpha2.yaml + sed -i 's/# Source: .*//g' deploy/all-in-one-v1alpha2.yaml sed -i 's/app\.kubernetes\.io\/instance: release-name//g' deploy/all-in-one-v1alpha2.yaml sed -i 's/app\.kubernetes\.io\/managed-by: Helm//g' deploy/all-in-one-v1alpha2.yaml sed -i 's/helm\.sh\/chart: [a-zA-Z0-9]+//g' deploy/all-in-one-v1alpha2.yaml + sed -i '/^[[:space:]]*$/d' deploy/all-in-one-v1alpha2.yaml cp chart/jenkins-operator/crds/jenkins-crd.yaml deploy/crds/jenkins.io_jenkins_crd.yaml From 0fe4456abc8bbb7bcb40fba6599c180397a4b06e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 1 Jul 2023 00:21:09 +0200 Subject: [PATCH 24/40] Auto-updated Kubernetes Manifests (#864) Co-authored-by: brokenpip3 --- deploy/all-in-one-v1alpha2.yaml | 432 +- deploy/crds/jenkins.io_jenkins_crd.yaml | 6438 ++++++++++++----------- 2 files changed, 3646 insertions(+), 3224 deletions(-) diff --git a/deploy/all-in-one-v1alpha2.yaml b/deploy/all-in-one-v1alpha2.yaml index ff11574d..8295cad9 100644 --- a/deploy/all-in-one-v1alpha2.yaml +++ b/deploy/all-in-one-v1alpha2.yaml @@ -32,6 +32,176 @@ rules: - create - patch --- +kind: Role +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: jenkins-operator +rules: + - apiGroups: + - apps + resources: + - daemonsets + - deployments + - replicasets + - statefulsets + verbs: + - '*' + - apiGroups: + - apps + - jenkins-operator + resources: + - deployments/finalizers + verbs: + - update + - apiGroups: + - build.openshift.io + resources: + - buildconfigs + - builds + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - configmaps + - secrets + - services + verbs: + - create + - get + - list + - update + - watch + - apiGroups: + - "" + resources: + - events + verbs: + - create + - get + - list + - patch + - watch + - apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - pods + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + resources: + - pods + - pods/exec + verbs: + - '*' + - apiGroups: + - "" + resources: + - pods/log + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - pods/portforward + verbs: + - create + - apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - create + - get + - list + - update + - watch + - apiGroups: + - image.openshift.io + resources: + - imagestreams + verbs: + - get + - list + - watch + - apiGroups: + - jenkins.io + resources: + - jenkins/finalizers + verbs: + - update + - apiGroups: + - jenkins.io + resources: + - jenkins/status + verbs: + - get + - patch + - update + - apiGroups: + - jenkins.io + resources: + - '*' + verbs: + - '*' + - apiGroups: + - rbac.authorization.k8s.io + resources: + - rolebindings + - roles + verbs: + - create + - get + - list + - update + - watch + - apiGroups: + - "route.openshift.io" + resources: + - routes + verbs: + - create + - get + - list + - update + - watch + - apiGroups: + - "image.openshift.io" + resources: + - imagestreams + verbs: + - get + - list + - watch + - apiGroups: + - "build.openshift.io" + resources: + - builds + - buildconfigs + verbs: + - get + - list + - watch +--- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: @@ -43,236 +213,74 @@ roleRef: subjects: - kind: ServiceAccount name: jenkins-operator - --- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: jenkins-operator -rules: -- apiGroups: - - apps - resources: - - daemonsets - - deployments - - replicasets - - statefulsets - verbs: - - '*' -- apiGroups: - - apps - - jenkins-operator - resources: - - deployments/finalizers - verbs: - - update -- apiGroups: - - build.openshift.io - resources: - - buildconfigs - - builds - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - configmaps - - secrets - - services - verbs: - - create - - get - - list - - update - - watch -- apiGroups: - - "" - resources: - - events - verbs: - - create - - get - - list - - patch - - watch -- apiGroups: - - "" - resources: - - persistentvolumeclaims - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - pods - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - pods - - pods/exec - verbs: - - '*' -- apiGroups: - - "" - resources: - - pods/log - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - pods/portforward - verbs: - - create -- apiGroups: - - "" - resources: - - serviceaccounts - verbs: - - create - - get - - list - - update - - watch -- apiGroups: - - image.openshift.io - resources: - - imagestreams - verbs: - - get - - list - - watch -- apiGroups: - - jenkins.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - jenkins.io - resources: - - jenkins - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - jenkins.io - resources: - - jenkins/finalizers - verbs: - - update -- apiGroups: - - jenkins.io - resources: - - jenkins/status - verbs: - - get - - patch - - update -- apiGroups: - - rbac.authorization.k8s.io - resources: - - rolebindings - - roles - verbs: - - create - - get - - list - - update - - watch -- apiGroups: - - route.openshift.io - resources: - - routes - verbs: - - create - - get - - list - - update - - watch ---- -apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding +apiVersion: rbac.authorization.k8s.io/v1 metadata: - name: manager-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role name: jenkins-operator subjects: -- kind: ServiceAccount + - kind: ServiceAccount + name: jenkins-operator +roleRef: + kind: Role name: jenkins-operator + apiGroup: rbac.authorization.k8s.io --- apiVersion: apps/v1 kind: Deployment metadata: name: jenkins-operator labels: - control-plane: controller-manager + app.kubernetes.io/name: jenkins-operator + helm.sh/chart: jenkins-operator-0.8.0-beta.2 + app.kubernetes.io/version: "0.8.0-beta.2" spec: + replicas: 1 selector: matchLabels: - control-plane: controller-manager - replicas: 1 + app.kubernetes.io/name: jenkins-operator template: metadata: labels: - control-plane: controller-manager + app.kubernetes.io/name: jenkins-operator spec: serviceAccountName: jenkins-operator - securityContext: - runAsUser: 65532 containers: - - command: - - /manager - args: - - --leader-elect - image: virtuslab/jenkins-operator:v0.7.1 - name: jenkins-operator - imagePullPolicy: IfNotPresent - securityContext: - allowPrivilegeEscalation: false - livenessProbe: - httpGet: - path: /healthz - port: 8081 - initialDelaySeconds: 15 - periodSeconds: 20 - readinessProbe: - httpGet: - path: /readyz - port: 8081 - initialDelaySeconds: 5 - periodSeconds: 10 - resources: - limits: - cpu: 100m - memory: 90Mi - requests: - cpu: 100m - memory: 60Mi - env: - - name: WATCH_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - terminationGracePeriodSeconds: 10 + - name: jenkins-operator + image: quay.io/jenkins-kubernetes-operator/operator:v0.8.0-beta2 + imagePullPolicy: IfNotPresent + ports: + - name: http + containerPort: 80 + protocol: TCP + command: + - /manager + args: + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + env: + - name: WATCH_NAMESPACE + value: default + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: OPERATOR_NAME + value: "jenkins-operator" + resources: + limits: + cpu: 100m + memory: 120Mi + requests: + cpu: 100m + memory: 120Mi diff --git a/deploy/crds/jenkins.io_jenkins_crd.yaml b/deploy/crds/jenkins.io_jenkins_crd.yaml index 2c63f28a..87d40704 100644 --- a/deploy/crds/jenkins.io_jenkins_crd.yaml +++ b/deploy/crds/jenkins.io_jenkins_crd.yaml @@ -1,6 +1,11 @@ -apiVersion: apiextensions.k8s.io/v1beta1 + +--- +apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.4.1 + creationTimestamp: null name: jenkins.jenkins.io spec: group: jenkins.io @@ -10,3018 +15,3427 @@ spec: plural: jenkins singular: jenkins scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - description: Jenkins is the Schema for the jenkins API - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Spec defines the desired state of the Jenkins - properties: - backup: - description: 'Backup defines configuration of Jenkins backup More info: - https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore' - properties: - action: - description: Action defines action which performs backup in backup - container sidecar - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit status - of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - type: object - containerName: - description: ContainerName is the container name responsible for - backup operation - type: string - interval: - description: Interval tells how often make backup in seconds Defaults - to 30. - format: int64 - type: integer - makeBackupBeforePodDeletion: - description: MakeBackupBeforePodDeletion tells operator to make - backup before Jenkins master pod deletion - type: boolean - required: - - action - - containerName - - interval - - makeBackupBeforePodDeletion - type: object - configurationAsCode: - description: ConfigurationAsCode defines configuration of Jenkins customization - via Configuration as Code Jenkins plugin - properties: - configurations: - items: - description: ConfigMapRef is reference to Kubernetes ConfigMap - properties: - name: - type: string - required: - - name - type: object - type: array - secret: - description: SecretRef is reference to Kubernetes secret - properties: - name: - type: string - required: - - name - type: object - required: - - configurations - - secret - type: object - groovyScripts: - description: GroovyScripts defines configuration of Jenkins customization - via groovy scripts - properties: - configurations: - items: - description: ConfigMapRef is reference to Kubernetes ConfigMap - properties: - name: - type: string - required: - - name - type: object - type: array - secret: - description: SecretRef is reference to Kubernetes secret - properties: - name: - type: string - required: - - name - type: object - required: - - configurations - - secret - type: object - jenkinsAPISettings: - description: JenkinsAPISettings defines configuration used by the operator - to gain admin access to the Jenkins API - properties: - authorizationStrategy: - description: AuthorizationStrategy defines authorization strategy - of the operator for the Jenkins API - type: string - required: - - authorizationStrategy - type: object - master: - description: Master represents Jenkins master pod properties and Jenkins - plugins. Every single change here requires a pod restart. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored - with a resource that may be set by external tools to store and - retrieve arbitrary metadata. They are not queryable and should - be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - basePlugins: - description: 'BasePlugins contains plugins required by operator - Defaults to : - name: kubernetes version: 1.29.6 - name: workflow-job - version: "2.39" - name: workflow-aggregator version: "2.6" - name: - git version: 4.7.2 - name: job-dsl version: "1.74" - name: configuration-as-code - version: "1.51" - name: kubernetes-credentials-provider version: 0.18-1' - items: - description: Plugin defines Jenkins plugin - properties: - name: - description: Name is the name of Jenkins plugin - type: string - version: - description: Version is the version of Jenkins plugin - type: string - required: - - name - - version - type: object - type: array - containers: - description: 'List of containers belonging to the pod. Containers - cannot currently be added or removed. There must be at least one - container in a Pod. Defaults to: - image: jenkins/jenkins:lts imagePullPolicy: - Always livenessProbe: failureThreshold: 12 httpGet: path: - /login port: http scheme: HTTP initialDelaySeconds: - 80 periodSeconds: 10 successThreshold: 1 timeoutSeconds: - 5 name: jenkins-master readinessProbe: failureThreshold: - 3 httpGet: path: /login port: http scheme: - HTTP initialDelaySeconds: 30 periodSeconds: 10 successThreshold: - 1 timeoutSeconds: 1 resources: limits: cpu: 1500m memory: - 3Gi requests: cpu: "1" memory: 600Mi' - items: - description: Container defines Kubernetes container attributes - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references - $(VAR_NAME) are expanded using the container''s environment. - If a variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. - The docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped - references will never be expanded, regardless of whether - the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in - the container and any service environment variables. - If a variable cannot be resolved, the reference in - the input string will be unchanged. The $(VAR_NAME) - syntax can be escaped with a double $$, ie: $$(VAR_NAME). - Escaped references will never be expanded, regardless - of whether the variable exists or not. Defaults to - "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or - its key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, metadata.labels, - metadata.annotations, spec.nodeName, spec.serviceAccountName, - status.hostIP, status.podIP.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in - the specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of - the exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select - from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' - type: string - optional: - description: Specify whether the Secret or its - key must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must - be a C_IDENTIFIER. All invalid keys will be reported as - an event when the container is starting. When a key exists - in multiple sources, the value associated with the last - source will take precedence. Values defined by an Env with - a duplicate key will take precedence. - items: - description: EnvFromSource represents the source of a set - of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap must - be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each - key in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret must be - defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images' - type: string - imagePullPolicy: - description: Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always. - type: string - lifecycle: - description: Actions that the management system should take - in response to container lifecycle events. - properties: - postStart: - description: 'PostStart is called immediately after a - container is created. If the handler fails, the container - is terminated and restarted according to its restart - policy. Other management of the container blocks until - the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to - perform. - properties: - host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, - resource contention, etc. The handler is not called - if the container crashes or exits. The reason for termination - is passed to the handler. The Pod''s termination grace - period countdown begins before the PreStop hooked is - executed. Regardless of the outcome of the handler, - the container will eventually terminate within the Pod''s - termination grace period. Other management of the container - blocks until the hook completes or until the termination - grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to - perform. - properties: - host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: Periodic probe of container liveness. Container - will be restarted if the probe fails. - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. - Each container in a pod must have a unique name (DNS_LABEL). - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about - the network connections a container uses, but is primarily - informational. Not specifying a port here DOES NOT prevent - that port from being exposed. Any port which is listening - on the default "0.0.0.0" address inside a container will - be accessible from the network. - items: - description: ContainerPort represents a network port in - a single container. - properties: - containerPort: - description: Number of port to expose on the pod's IP - address. This must be a valid port number, 0 < x < - 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port - to. - type: string - hostPort: - description: Number of port to expose on the host. If - specified, this must be a valid port number, 0 < x - < 65536. If HostNetwork is specified, this must match - ContainerPort. Most containers do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod - must have a unique name. Name for the port that can - be referred to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or - SCTP. Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: Periodic probe of container service readiness. - Container will be removed from service endpoints if the - probe fails. - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. - More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of - compute resources required. If Requests is omitted for - a container, it defaults to Limits if that is explicitly - specified, otherwise to an implementation-defined value. - More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More - info: https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether - a process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag - will be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running - containers. Defaults to the default set of capabilities - granted by the container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes - in privileged containers are essentially equivalent - to root on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount - to use for the containers. The default is DefaultProcMount - which uses the container runtime defaults for readonly - paths and masked paths. This requires the ProcMountType - feature flag to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root - filesystem. Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be - set in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as - a non-root user. If true, the Kubelet will validate - the image at runtime to ensure that it does not run - as UID 0 (root) and fail to start the container if it - does. If unset or false, no such validation will be - performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata - if unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the - container. If unspecified, the container runtime will - allocate a random SELinux context for each container. May - also be set in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to - all containers. If unspecified, the options from the - PodSecurityContext will be used. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA - admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec - named by the GMSACredentialSpecName field. This - field is alpha-level and is only honored by servers - that enable the WindowsGMSA feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of - the GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set - in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is alpha-level and - it is only honored by servers that enable the WindowsRunAsUserName - feature flag. - type: string - type: object - type: object - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - items: - description: VolumeMount describes a mounting of a Volume - within a container. - properties: - mountPath: - description: Path within the container at which the - volume should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts - are propagated from the host to container and the - other way around. When not set, MountPropagationNone - is used. This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's - root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves - similarly to SubPath but environment variable references - $(VAR_NAME) are expanded using the container's environment. - Defaults to "" (volume's root). SubPathExpr and SubPath - are mutually exclusive. This field is beta in 1.15. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might - be configured in the container image. - type: string - required: - - image - - imagePullPolicy - - name - - resources - type: object - type: array - disableCSRFProtection: - description: DisableCSRFProtection allows you to toggle CSRF Protection - on Jenkins - type: boolean - imagePullSecrets: - description: 'ImagePullSecrets is an optional list of references - to secrets in the same namespace to use for pulling any of the - images used by this PodSpec. If specified, these secrets will - be passed to individual puller implementations for them to use. - For example, in the case of docker, only DockerConfig type secrets - are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod' - items: - description: LocalObjectReference contains enough information - to let you locate the referenced object inside the same namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to - organize and categorize (scope and select) objects. May match - selectors of replication controllers and services. More info: - http://kubernetes.io/docs/user-guide/labels' - type: object - masterAnnotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored - with a resource that may be set by external tools to store and - retrieve arbitrary metadata. They are not queryable and should - be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations - Deprecated: will be removed in the future, please use Annotations(annotations)' - type: object - nodeSelector: - additionalProperties: - type: string - description: 'NodeSelector is a selector which must be true for - the pod to fit on a node. Selector which must match a node''s - labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' - type: object - plugins: - description: Plugins contains plugins required by user - items: - description: Plugin defines Jenkins plugin - properties: - name: - description: Name is the name of Jenkins plugin - type: string - version: - description: Version is the version of Jenkins plugin - type: string - required: - - name - - version - type: object - type: array - securityContext: - description: 'SecurityContext that applies to all the containers - of the Jenkins Master. As per kubernetes specification, it can - be overridden for each container individually. Defaults to: runAsUser: - 1000 fsGroup: 1000' - properties: - fsGroup: - description: "A special supplemental group that applies to all - containers in a pod. Some volume types allow the Kubelet to - change the ownership of that volume to be owned by the pod: - \n 1. The owning GID will be the FSGroup 2. The setgid bit - is set (new files created in the volume will be owned by FSGroup) - 3. The permission bits are OR'd with rw-rw---- \n If unset, - the Kubelet will not modify the ownership and permissions - of any volume." - format: int64 - type: integer - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set in - SecurityContext. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence for - that container. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail to - start the container if it does. If unset or false, no such - validation will be performed. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if unspecified. - May also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - properties: - level: - description: Level is SELinux level label that applies to - the container. - type: string - role: - description: Role is a SELinux role label that applies to - the container. - type: string - type: - description: Type is a SELinux type label that applies to - the container. - type: string - user: - description: User is a SELinux user label that applies to - the container. - type: string - type: object - supplementalGroups: - description: A list of groups applied to the first process run - in each container, in addition to the container's primary - GID. If unspecified, no groups will be added to any container. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used - for the pod. Pods with unsupported sysctls (by the container - runtime) might fail to launch. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. This field is alpha-level and - is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - This field is alpha-level and it is only honored by servers - that enable the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - tolerations: - description: If specified, the pod's tolerations. - items: - description: The pod this Toleration is attached to tolerates - any taint that matches the triple using the - matching operator . - properties: - effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, - operator must be Exists; this combination means to match - all values and all keys. - type: string - operator: - description: Operator represents a key's relationship to the - value. Valid operators are Exists and Equal. Defaults to - Equal. Exists is equivalent to wildcard for value, so that - a pod can tolerate all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time - the toleration (which must be of effect NoExecute, otherwise - this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do - not evict). Zero and negative values will be treated as - 0 (evict immediately) by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches - to. If the operator is Exists, the value should be empty, - otherwise just a regular string. - type: string - type: object - type: array - volumes: - description: 'List of volumes that can be mounted by containers - belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes' - items: - description: Volume represents a named volume in a pod that may - be accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'AWSElasticBlockStore represents an AWS Disk - resource that is attached to a kubelet''s host machine and - then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", - "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from - compromising the machine' - type: string - partition: - description: 'The partition in the volume that you want - to mount. If omitted, the default is to mount by volume - name. Examples: For volume /dev/sda1, you specify the - partition as "1". Similarly, the volume partition for - /dev/sda is "0" (or you can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'Specify "true" to force and set the ReadOnly - property in VolumeMounts to "true". If omitted, the - default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'Unique ID of the persistent disk resource - in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: AzureDisk represents an Azure Data Disk mount - on the host and bind mount to the pod. - properties: - cachingMode: - description: 'Host Caching mode: None, Read Only, Read - Write.' - type: string - diskName: - description: The Name of the data disk in the blob storage - type: string - diskURI: - description: The URI the data disk in the blob storage - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'Expected values Shared: multiple blob disks - per storage account Dedicated: single blob disk per - storage account Managed: azure managed data disk (only - in managed availability set). defaults to shared' - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: AzureFile represents an Azure File Service mount - on the host and bind mount to the pod. - properties: - readOnly: - description: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: the name of secret that contains Azure Storage - Account Name and Key - type: string - shareName: - description: Share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: CephFS represents a Ceph FS mount on the host - that shares a pod's lifetime - properties: - monitors: - description: 'Required: Monitors is a collection of Ceph - monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'Optional: Used as the mounted root, rather - than the full Ceph tree, default is /' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts. - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'Optional: SecretFile is the path to key - ring for User, default is /etc/ceph/user.secret More - info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'Optional: SecretRef is reference to the - authentication secret for User, default is empty. More - info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - user: - description: 'Optional: User is the rados user name, default - is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'Cinder represents a cinder volume attached and - mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Examples: - "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" - if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'Optional: points to a secret object containing - parameters used to connect to OpenStack.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - volumeID: - description: 'volume id used to identify the volume in - cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: ConfigMap represents a configMap that should - populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected - by this setting. This might be in conflict with other - options that affect the file mode, like fsGroup, and - the result can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the - Data field of the referenced ConfigMap will be projected - into the volume as a file whose name is the key and - content is the value. If specified, the listed keys - will be projected into the specified paths, and unlisted - keys will not be present. If a key is specified which - is not present in the ConfigMap, the volume setup will - error unless it is marked optional. Paths must be relative - and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this - file, must be a value between 0 and 0777. If not - specified, the volume defaultMode will be used. - This might be in conflict with other options that - affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map - the key to. May not be an absolute path. May not - contain the path element '..'. May not start with - the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys - must be defined - type: boolean - type: object - csi: - description: CSI (Container Storage Interface) represents - storage that is handled by an external CSI driver (Alpha - feature). - properties: - driver: - description: Driver is the name of the CSI driver that - handles this volume. Consult with your admin for the - correct name as registered in the cluster. - type: string - fsType: - description: Filesystem type to mount. Ex. "ext4", "xfs", - "ntfs". If not provided, the empty value is passed to - the associated CSI driver which will determine the default - filesystem to apply. - type: string - nodePublishSecretRef: - description: NodePublishSecretRef is a reference to the - secret object containing sensitive information to pass - to the CSI driver to complete the CSI NodePublishVolume - and NodeUnpublishVolume calls. This field is optional, - and may be empty if no secret is required. If the secret - object contains more than one secret, all secret references - are passed. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - readOnly: - description: Specifies a read-only configuration for the - volume. Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: VolumeAttributes stores driver-specific properties - that are passed to the CSI driver. Consult your driver's - documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: DownwardAPI represents downward API about the - pod that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected - by this setting. This might be in conflict with other - options that affect the file mode, like fsGroup, and - the result can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are - supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in - the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this - file, must be a value between 0 and 0777. If not - specified, the volume defaultMode will be used. - This might be in conflict with other options that - affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path - name of the file to be created. Must not be absolute - or contain the ''..'' path. Must be utf-8 encoded. - The first item of the relative path must not start - with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of - the exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'EmptyDir represents a temporary directory that - shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'What type of storage medium should back - this directory. The default is "" which means to use - the node''s default medium. Must be an empty string - (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for - this EmptyDir volume. The size limit is also applicable - for memory medium. The maximum usage on memory medium - EmptyDir would be the minimum value between the SizeLimit - specified here and the sum of memory limits of all containers - in a pod. The default is nil which means that the limit - is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - fc: - description: FC represents a Fibre Channel resource that is - attached to a kubelet's host machine and then exposed to - the pod. - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from - compromising the machine' - type: string - lun: - description: 'Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'Optional: Defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'Optional: FC target worldwide names (WWNs)' - items: - type: string - type: array - wwids: - description: 'Optional: FC volume world wide identifiers - (wwids) Either wwids or combination of targetWWNs and - lun must be set, but not both simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: FlexVolume represents a generic volume resource - that is provisioned/attached using an exec based plugin. - properties: - driver: - description: Driver is the name of the driver to use for - this volume. - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". The default filesystem depends on FlexVolume - script. - type: string - options: - additionalProperties: - type: string - description: 'Optional: Extra command options if any.' - type: object - readOnly: - description: 'Optional: Defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts.' - type: boolean - secretRef: - description: 'Optional: SecretRef is reference to the - secret object containing sensitive information to pass - to the plugin scripts. This may be empty if no secret - object is specified. If the secret object contains more - than one secret, all secrets are passed to the plugin - scripts.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - required: - - driver - type: object - flocker: - description: Flocker represents a Flocker volume attached - to a kubelet's host machine. This depends on the Flocker - control service being running - properties: - datasetName: - description: Name of the dataset stored as metadata -> - name on the dataset for Flocker should be considered - as deprecated - type: string - datasetUUID: - description: UUID of the dataset. This is unique identifier - of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'GCEPersistentDisk represents a GCE Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", - "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from - compromising the machine' - type: string - partition: - description: 'The partition in the volume that you want - to mount. If omitted, the default is to mount by volume - name. Examples: For volume /dev/sda1, you specify the - partition as "1". Similarly, the volume partition for - /dev/sda is "0" (or you can leave the property empty). - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'Unique name of the PD resource in GCE. Used - to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'GitRepo represents a git repository at a particular - revision. DEPRECATED: GitRepo is deprecated. To provision - a container with a git repo, mount an EmptyDir into an InitContainer - that clones the repo using git, then mount the EmptyDir - into the Pod''s container.' - properties: - directory: - description: Target directory name. Must not contain or - start with '..'. If '.' is supplied, the volume directory - will be the git repository. Otherwise, if specified, - the volume will contain the git repository in the subdirectory - with the given name. - type: string - repository: - description: Repository URL - type: string - revision: - description: Commit hash for the specified revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'Glusterfs represents a Glusterfs mount on the - host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'EndpointsName is the endpoint name that - details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'Path is the Glusterfs volume path. More - info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'ReadOnly here will force the Glusterfs volume - to be mounted with read-only permissions. Defaults to - false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'HostPath represents a pre-existing file or directory - on the host machine that is directly exposed to the container. - This is generally used for system agents or other privileged - things that are allowed to see the host machine. Most containers - will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host directory - mounts and who can/can not mount host directories as read/write.' - properties: - path: - description: 'Path of the directory on the host. If the - path is a symlink, it will follow the link to the real - path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'Type for HostPath Volume Defaults to "" - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'ISCSI represents an ISCSI Disk resource that - is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: whether support iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: whether support iSCSI Session CHAP authentication - type: boolean - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", - "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from - compromising the machine' - type: string - initiatorName: - description: Custom iSCSI Initiator Name. If initiatorName - is specified with iscsiInterface simultaneously, new - iSCSI interface : will be - created for the connection. - type: string - iqn: - description: Target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iSCSI Interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - type: string - lun: - description: iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: iSCSI Target Portal List. The portal is either - an IP or ip_addr:port if the port is other than default - (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: CHAP Secret for iSCSI target and initiator - authentication - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - targetPortal: - description: iSCSI Target Portal. The Portal is either - an IP or ip_addr:port if the port is other than default - (typically TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'Volume''s name. Must be a DNS_LABEL and unique - within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'NFS represents an NFS mount on the host that - shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'Path that is exported by the NFS server. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'ReadOnly here will force the NFS export - to be mounted with read-only permissions. Defaults to - false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'Server is the hostname or IP address of - the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'PersistentVolumeClaimVolumeSource represents - a reference to a PersistentVolumeClaim in the same namespace. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'ClaimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: Will force the ReadOnly setting in VolumeMounts. - Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: PhotonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: ID that identifies Photon Controller persistent - disk - type: string - required: - - pdID - type: object - portworxVolume: - description: PortworxVolume represents a portworx volume attached - and mounted on kubelets host machine - properties: - fsType: - description: FSType represents the filesystem type to - mount Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs". Implicitly inferred - to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: VolumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: Items for all in one resources secrets, configmaps, - and downward API - properties: - defaultMode: - description: Mode bits to use on created files by default. - Must be a value between 0 and 0777. Directories within - the path are not affected by this setting. This might - be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set. - format: int32 - type: integer - sources: - description: list of volume projections - items: - description: Projection that may be projected along - with other supported volume types - properties: - configMap: - description: information about the configMap data - to project - properties: - items: - description: If unspecified, each key-value - pair in the Data field of the referenced ConfigMap - will be projected into the volume as a file - whose name is the key and content is the value. - If specified, the listed keys will be projected - into the specified paths, and unlisted keys - will not be present. If a key is specified - which is not present in the ConfigMap, the - volume setup will error unless it is marked - optional. Paths must be relative and may not - contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use - on this file, must be a value between - 0 and 0777. If not specified, the volume - defaultMode will be used. This might - be in conflict with other options that - affect the file mode, like fsGroup, - and the result can be other mode bits - set.' - format: int32 - type: integer - path: - description: The relative path of the - file to map the key to. May not be an - absolute path. May not contain the path - element '..'. May not start with the - string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or - its keys must be defined - type: boolean - type: object - downwardAPI: - description: information about the downwardAPI data - to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing - the pod field - properties: - fieldRef: - description: 'Required: Selects a field - of the pod: only annotations, labels, - name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema - the FieldPath is written in terms - of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to - select in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use - on this file, must be a value between - 0 and 0777. If not specified, the volume - defaultMode will be used. This might - be in conflict with other options that - affect the file mode, like fsGroup, - and the result can be other mode bits - set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. - Must not be absolute or contain the - ''..'' path. Must be utf-8 encoded. - The first item of the relative path - must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the - container: only resources limits and - requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) are - currently supported.' - properties: - containerName: - description: 'Container name: required - for volumes, optional for env vars' - type: string - divisor: - description: Specifies the output - format of the exposed resources, - defaults to "1" - type: string - resource: - description: 'Required: resource to - select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - description: information about the secret data to - project - properties: - items: - description: If unspecified, each key-value - pair in the Data field of the referenced Secret - will be projected into the volume as a file - whose name is the key and content is the value. - If specified, the listed keys will be projected - into the specified paths, and unlisted keys - will not be present. If a key is specified - which is not present in the Secret, the volume - setup will error unless it is marked optional. - Paths must be relative and may not contain - the '..' path or start with '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use - on this file, must be a value between - 0 and 0777. If not specified, the volume - defaultMode will be used. This might - be in conflict with other options that - affect the file mode, like fsGroup, - and the result can be other mode bits - set.' - format: int32 - type: integer - path: - description: The relative path of the - file to map the key to. May not be an - absolute path. May not contain the path - element '..'. May not start with the - string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' - type: string - optional: - description: Specify whether the Secret or its - key must be defined - type: boolean - type: object - serviceAccountToken: - description: information about the serviceAccountToken - data to project - properties: - audience: - description: Audience is the intended audience - of the token. A recipient of a token must - identify itself with an identifier specified - in the audience of the token, and otherwise - should reject the token. The audience defaults - to the identifier of the apiserver. - type: string - expirationSeconds: - description: ExpirationSeconds is the requested - duration of validity of the service account - token. As the token approaches expiration, - the kubelet volume plugin will proactively - rotate the service account token. The kubelet - will start trying to rotate the token if the - token is older than 80 percent of its time - to live or if the token is older than 24 hours.Defaults - to 1 hour and must be at least 10 minutes. - format: int64 - type: integer - path: - description: Path is the path relative to the - mount point of the file to project the token - into. - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - description: Quobyte represents a Quobyte mount on the host - that shares a pod's lifetime - properties: - group: - description: Group to map volume access to Default is - no group - type: string - readOnly: - description: ReadOnly here will force the Quobyte volume - to be mounted with read-only permissions. Defaults to - false. - type: boolean - registry: - description: Registry represents a single or multiple - Quobyte Registry services specified as a string as host:port - pair (multiple entries are separated with commas) which - acts as the central registry for volumes - type: string - tenant: - description: Tenant owning the given Quobyte volume in - the Backend Used with dynamically provisioned Quobyte - volumes, value is set by the plugin - type: string - user: - description: User to map volume access to Defaults to - serivceaccount user - type: string - volume: - description: Volume is a string that references an already - created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'RBD represents a Rados Block Device mount on - the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", - "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from - compromising the machine' - type: string - image: - description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'Keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'A collection of Ceph monitors. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'The rados pool name. Default is rbd. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'SecretRef is name of the authentication - secret for RBDUser. If provided overrides keyring. Default - is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - user: - description: 'The rados user name. Default is admin. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: ScaleIO represents a ScaleIO persistent volume - attached and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Default is "xfs". - type: string - gateway: - description: The host address of the ScaleIO API Gateway. - type: string - protectionDomain: - description: The name of the ScaleIO Protection Domain - for the configured storage. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef references to the secret for ScaleIO - user and other sensitive information. If this is not - provided, Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - sslEnabled: - description: Flag to enable/disable SSL communication - with Gateway, default false - type: boolean - storageMode: - description: Indicates whether the storage for a volume - should be ThickProvisioned or ThinProvisioned. Default - is ThinProvisioned. - type: string - storagePool: - description: The ScaleIO Storage Pool associated with - the protection domain. - type: string - system: - description: The name of the storage system as configured - in ScaleIO. - type: string - volumeName: - description: The name of a volume already created in the - ScaleIO system that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'Secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected - by this setting. This might be in conflict with other - options that affect the file mode, like fsGroup, and - the result can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the - Data field of the referenced Secret will be projected - into the volume as a file whose name is the key and - content is the value. If specified, the listed keys - will be projected into the specified paths, and unlisted - keys will not be present. If a key is specified which - is not present in the Secret, the volume setup will - error unless it is marked optional. Paths must be relative - and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this - file, must be a value between 0 and 0777. If not - specified, the volume defaultMode will be used. - This might be in conflict with other options that - affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map - the key to. May not be an absolute path. May not - contain the path element '..'. May not start with - the string '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: Specify whether the Secret or its keys must - be defined - type: boolean - secretName: - description: 'Name of the secret in the pod''s namespace - to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: StorageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef specifies the secret to use for - obtaining the StorageOS API credentials. If not specified, - default values will be attempted. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - volumeName: - description: VolumeName is the human-readable name of - the StorageOS volume. Volume names are only unique - within a namespace. - type: string - volumeNamespace: - description: VolumeNamespace specifies the scope of the - volume within StorageOS. If no namespace is specified - then the Pod's namespace will be used. This allows - the Kubernetes name scoping to be mirrored within StorageOS - for tighter integration. Set VolumeName to any name - to override the default behaviour. Set to "default" - if you are not using namespaces within StorageOS. Namespaces - that do not pre-exist within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: VsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: Storage Policy Based Management (SPBM) profile - ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: Storage Policy Based Management (SPBM) profile - name. - type: string - volumePath: - description: Path that identifies vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - required: - - disableCSRFProtection - type: object - notifications: - description: Notifications defines list of a services which are used - to inform about Jenkins status Can be used to integrate chat services - like Slack, Microsoft Teams or Mailgun - items: - description: Notification is a service configuration used to send - notifications about Jenkins status - properties: - level: - description: NotificationLevel defines the level of a Notification - type: string - mailgun: - description: Mailgun is handler for Mailgun email service notification - channel - properties: - apiKeySecretKeySelector: - description: SecretKeySelector selects a key of a Secret. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - secret: - description: The name of the secret in the pod's namespace - to select from. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - required: - - key - - secret - type: object - domain: - type: string - from: - type: string - recipient: - type: string - required: - - apiKeySecretKeySelector - - domain - - from - - recipient - type: object - name: - type: string - slack: - description: Slack is handler for Slack notification channel - properties: - webHookURLSecretKeySelector: - description: The web hook URL to Slack App - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - secret: - description: The name of the secret in the pod's namespace - to select from. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - required: - - key - - secret - type: object - required: - - webHookURLSecretKeySelector - type: object - smtp: - description: SMTP is handler for sending emails via this protocol - properties: - from: - type: string - passwordSecretKeySelector: - description: SecretKeySelector selects a key of a Secret. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - secret: - description: The name of the secret in the pod's namespace - to select from. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - required: - - key - - secret - type: object - port: - type: integer - server: - type: string - tlsInsecureSkipVerify: - type: boolean - to: - type: string - usernameSecretKeySelector: - description: SecretKeySelector selects a key of a Secret. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - secret: - description: The name of the secret in the pod's namespace - to select from. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - required: - - key - - secret - type: object - required: - - from - - passwordSecretKeySelector - - port - - server - - to - - usernameSecretKeySelector - type: object - teams: - description: MicrosoftTeams is handler for Microsoft MicrosoftTeams - notification channel - properties: - webHookURLSecretKeySelector: - description: The web hook URL to MicrosoftTeams App - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - secret: - description: The name of the secret in the pod's namespace - to select from. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - type: object - required: - - key - - secret - type: object - required: - - webHookURLSecretKeySelector - type: object - verbose: - type: boolean - required: - - level - - name - - verbose - type: object - type: array - restore: - description: 'Backup defines configuration of Jenkins backup restore - More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-backup-and-restore' - properties: - action: - description: Action defines action which performs restore backup - in restore container sidecar - properties: - exec: - description: Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit status - of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - type: object - containerName: - description: ContainerName is the container name responsible for - restore backup operation - type: string - recoveryOnce: - description: RecoveryOnce if want to restore specific backup set - this field and then Jenkins will be restarted and desired backup - will be restored - format: int64 - type: integer - required: - - action - - containerName - type: object - roles: - description: Roles defines list of extra RBAC roles for the Jenkins - Master pod service account - items: - description: RoleRef contains information that points to the role - being used - properties: - apiGroup: - description: APIGroup is the group for the resource being referenced - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - apiGroup - - kind - - name - type: object - type: array - seedJobs: - description: 'SeedJobs defines list of Jenkins Seed Job configurations - More info: https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines' - items: - description: 'SeedJob defines configuration for seed job More info: - https://github.com/jenkinsci/kubernetes-operator/blob/master/docs/getting-started.md#configure-seed-jobs-and-pipelines' - properties: - additionalClasspath: - description: AdditionalClasspath is setting for Job DSL API plugin - to set Additional Classpath - type: string - bitbucketPushTrigger: - description: BitbucketPushTrigger is used for Bitbucket web hooks - type: boolean - buildPeriodically: - description: BuildPeriodically is setting for scheduled trigger - type: string - credentialID: - description: CredentialID is the Kubernetes secret name which - stores repository access credentials - type: string - credentialType: - description: JenkinsCredentialType is the https://jenkinsci.github.io/kubernetes-credentials-provider-plugin/ - credential type - type: string - description: - description: Description is the description of the seed job - type: string - failOnMissingPlugin: - description: FailOnMissingPlugin is setting for Job DSL API plugin - that fails job if required plugin is missing - type: boolean - githubPushTrigger: - description: GitHubPushTrigger is used for GitHub web hooks - type: boolean - id: - description: ID is the unique seed job name - type: string - ignoreMissingFiles: - description: IgnoreMissingFiles is setting for Job DSL API plugin - to ignore files that miss - type: boolean - pollSCM: - description: PollSCM is setting for polling changes in SCM - type: string - repositoryBranch: - description: RepositoryBranch is the repository branch where are - seed job definitions - type: string - repositoryUrl: - description: RepositoryURL is the repository access URL. Can be - SSH or HTTPS. - type: string - targets: - description: Targets is the repository path where are seed job - definitions - type: string - unstableOnDeprecation: - description: UnstableOnDeprecation is setting for Job DSL API - plugin that sets build status as unstable if build using deprecated - features - type: boolean - type: object - type: array - service: - description: 'Service is Kubernetes service of Jenkins master HTTP pod - Defaults to : port: 8080 type: ClusterIP' - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored - with a resource that may be set by external tools to store and - retrieve arbitrary metadata. They are not queryable and should - be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Route service traffic to pods with label keys and - values matching this selector. If empty or not present, the service - is assumed to have an external process managing its endpoints, - which Kubernetes will not modify. Only applies to types ClusterIP, - NodePort, and LoadBalancer. Ignored if type is ExternalName. More - info: https://kubernetes.io/docs/concepts/services-networking/service/' - type: object - loadBalancerIP: - description: 'Only applies to Service Type: LoadBalancer LoadBalancer - will get created with the IP specified in this field. This feature - depends on whether the underlying cloud-provider supports specifying - the loadBalancerIP when a load balancer is created. This field - will be ignored if the cloud-provider does not support the feature.' - type: string - loadBalancerSourceRanges: - description: 'If specified and supported by the platform, this will - restrict traffic through the cloud-provider load-balancer will - be restricted to the specified client IPs. This field will be - ignored if the cloud-provider does not support the feature." More - info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' - items: - type: string - type: array - nodePort: - description: 'The port on each node on which this service is exposed - when type=NodePort or LoadBalancer. Usually assigned by the system. - If specified, it will be allocated to the service if unused or - else creation of the service will fail. Default is to auto-allocate - a port if the ServiceType of this Service requires one. More info: - https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' - format: int32 - type: integer - port: - description: 'The port that are exposed by this service. More info: - https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - format: int32 - type: integer - type: - description: 'Type determines how the Service is exposed. Defaults - to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, - and LoadBalancer. "ExternalName" maps to the specified externalName. - "ClusterIP" allocates a cluster-internal IP address for load-balancing - to endpoints. Endpoints are determined by the selector or if that - is not specified, by manual construction of an Endpoints object. - If clusterIP is "None", no virtual IP is allocated and the endpoints - are published as a set of endpoints rather than a stable IP. "NodePort" - builds on ClusterIP and allocates a port on every node which routes - to the clusterIP. "LoadBalancer" builds on NodePort and creates - an external load-balancer (if supported in the current cloud) - which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types' - type: string - type: object - serviceAccount: - description: ServiceAccount defines Jenkins master service account attributes - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored - with a resource that may be set by external tools to store and - retrieve arbitrary metadata. They are not queryable and should - be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - type: object - slaveService: - description: 'Service is Kubernetes service of Jenkins slave pods Defaults - to : port: 50000 type: ClusterIP' - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored - with a resource that may be set by external tools to store and - retrieve arbitrary metadata. They are not queryable and should - be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Route service traffic to pods with label keys and - values matching this selector. If empty or not present, the service - is assumed to have an external process managing its endpoints, - which Kubernetes will not modify. Only applies to types ClusterIP, - NodePort, and LoadBalancer. Ignored if type is ExternalName. More - info: https://kubernetes.io/docs/concepts/services-networking/service/' - type: object - loadBalancerIP: - description: 'Only applies to Service Type: LoadBalancer LoadBalancer - will get created with the IP specified in this field. This feature - depends on whether the underlying cloud-provider supports specifying - the loadBalancerIP when a load balancer is created. This field - will be ignored if the cloud-provider does not support the feature.' - type: string - loadBalancerSourceRanges: - description: 'If specified and supported by the platform, this will - restrict traffic through the cloud-provider load-balancer will - be restricted to the specified client IPs. This field will be - ignored if the cloud-provider does not support the feature." More - info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' - items: - type: string - type: array - nodePort: - description: 'The port on each node on which this service is exposed - when type=NodePort or LoadBalancer. Usually assigned by the system. - If specified, it will be allocated to the service if unused or - else creation of the service will fail. Default is to auto-allocate - a port if the ServiceType of this Service requires one. More info: - https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' - format: int32 - type: integer - port: - description: 'The port that are exposed by this service. More info: - https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' - format: int32 - type: integer - type: - description: 'Type determines how the Service is exposed. Defaults - to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, - and LoadBalancer. "ExternalName" maps to the specified externalName. - "ClusterIP" allocates a cluster-internal IP address for load-balancing - to endpoints. Endpoints are determined by the selector or if that - is not specified, by manual construction of an Endpoints object. - If clusterIP is "None", no virtual IP is allocated and the endpoints - are published as a set of endpoints rather than a stable IP. "NodePort" - builds on ClusterIP and allocates a port on every node which routes - to the clusterIP. "LoadBalancer" builds on NodePort and creates - an external load-balancer (if supported in the current cloud) - which routes to the clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types' - type: string - type: object - required: - - jenkinsAPISettings - - master - type: object - status: - description: Status defines the observed state of Jenkins - properties: - appliedGroovyScripts: - description: AppliedGroovyScripts is a list with all applied groovy - scripts in Jenkins by the operator - items: - description: AppliedGroovyScript is the applied groovy script in Jenkins - by the operator - properties: - configurationType: - description: ConfigurationType is the name of the configuration - type(base-groovy, user-groovy, user-casc) - type: string - hash: - description: Hash is the hash of the groovy script and secrets - which it uses - type: string - name: - description: Name is the name of the groovy script - type: string - source: - description: Source is the name of source where is located groovy - script - type: string - required: - - configurationType - - hash - - name - - source - type: object - type: array - backupDoneBeforePodDeletion: - description: BackupDoneBeforePodDeletion tells if backup before pod - deletion has been made - type: boolean - baseConfigurationCompletedTime: - description: BaseConfigurationCompletedTime is a time when Jenkins base - configuration phase has been completed - format: date-time - type: string - createdSeedJobs: - description: CreatedSeedJobs contains list of seed job id already created - in Jenkins - items: - type: string - type: array - lastBackup: - description: LastBackup is the latest backup number - format: int64 - type: integer - operatorVersion: - description: OperatorVersion is the operator version which manages this - CR - type: string - pendingBackup: - description: PendingBackup is the pending backup number - format: int64 - type: integer - provisionStartTime: - description: ProvisionStartTime is a time when Jenkins master pod has - been created - format: date-time - type: string - restoredBackup: - description: RestoredBackup is the restored backup number after Jenkins - master pod restart - format: int64 - type: integer - userAndPasswordHash: - description: UserAndPasswordHash is a SHA256 hash made from user and - password - type: string - userConfigurationCompletedTime: - description: UserConfigurationCompletedTime is a time when Jenkins user - configuration phase has been completed - format: date-time - type: string - type: object - type: object - version: v1alpha2 versions: - name: v1alpha2 + schema: + openAPIV3Schema: + description: Jenkins is the Schema for the jenkins API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Spec defines the desired state of the Jenkins + properties: + backup: + description: 'Backup defines configuration of Jenkins backup More + info: https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/' + properties: + action: + description: Action defines action which performs backup in backup + container sidecar + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside + the container, the working directory for the command is + root ('/') in the container's filesystem. The command + is simply exec'd, it is not run inside a shell, so traditional + shell instructions ('|', etc) won't work. To use a shell, + you need to explicitly call out to that shell. Exit + status of 0 is treated as live/healthy and non-zero + is unhealthy. + items: + type: string + type: array + type: object + type: object + containerName: + description: ContainerName is the container name responsible for + backup operation + type: string + interval: + description: Interval tells how often make backup in seconds Defaults + to 30. + format: int64 + type: integer + makeBackupBeforePodDeletion: + description: MakeBackupBeforePodDeletion tells operator to make + backup before Jenkins master pod deletion + type: boolean + required: + - action + - containerName + - interval + - makeBackupBeforePodDeletion + type: object + configurationAsCode: + description: ConfigurationAsCode defines configuration of Jenkins + customization via Configuration as Code Jenkins plugin + properties: + configurations: + items: + description: ConfigMapRef is reference to Kubernetes ConfigMap. + properties: + name: + type: string + required: + - name + type: object + type: array + secret: + description: SecretRef is reference to Kubernetes secret. + properties: + name: + type: string + required: + - name + type: object + required: + - configurations + - secret + type: object + groovyScripts: + description: GroovyScripts defines configuration of Jenkins customization + via groovy scripts + properties: + configurations: + items: + description: ConfigMapRef is reference to Kubernetes ConfigMap. + properties: + name: + type: string + required: + - name + type: object + type: array + secret: + description: SecretRef is reference to Kubernetes secret. + properties: + name: + type: string + required: + - name + type: object + required: + - configurations + - secret + type: object + jenkinsAPISettings: + description: JenkinsAPISettings defines configuration used by the + operator to gain admin access to the Jenkins API + properties: + authorizationStrategy: + description: AuthorizationStrategy defines authorization strategy + of the operator for the Jenkins API + type: string + required: + - authorizationStrategy + type: object + master: + description: Master represents Jenkins master pod properties and Jenkins + plugins. Every single change here requires a pod restart. + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store and + retrieve arbitrary metadata. They are not queryable and should + be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + basePlugins: + description: 'BasePlugins contains plugins required by operator + Defaults to : - name: configuration-as-code version: "1625.v27444588cc3d" + - name: git version: "5.0.0" - name: job-dsl version: "1.83" + - name: kubernetes version: "3909.v1f2c633e8590" - name: kubernetes-credentials-provider + version: "1.211.vc236a_f5a_2f3c" - name: workflow-aggregator + version: "596.v8c21c963d92d" - name: workflow-job version: "1289.vd1c337fd5354"' + items: + description: Plugin defines Jenkins plugin. + properties: + downloadURL: + description: DownloadURL is the custom url from where plugin + has to be downloaded. + type: string + name: + description: Name is the name of Jenkins plugin + type: string + version: + description: Version is the version of Jenkins plugin + type: string + required: + - name + - version + type: object + type: array + containers: + description: 'List of containers belonging to the pod. Containers + cannot currently be added or removed. There must be at least + one container in a Pod. Defaults to: - image: jenkins/jenkins:lts imagePullPolicy: + Always livenessProbe: failureThreshold: 12 httpGet: path: + /login port: http scheme: HTTP initialDelaySeconds: + 80 periodSeconds: 10 successThreshold: 1 timeoutSeconds: + 5 name: jenkins-master readinessProbe: failureThreshold: + 3 httpGet: path: /login port: http scheme: + HTTP initialDelaySeconds: 30 periodSeconds: 10 successThreshold: + 1 timeoutSeconds: 1 resources: limits: cpu: + 1500m memory: 3Gi requests: cpu: "1" memory: + 600Mi' + items: + description: Container defines Kubernetes container attributes. + properties: + args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references + $(VAR_NAME) are expanded using the container''s environment. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + command: + description: 'Entrypoint array. Not executed within a shell. + The docker image''s ENTRYPOINT is used if this is not + provided. Variable references $(VAR_NAME) are expanded + using the container''s environment. If a variable cannot + be resolved, the reference in the input string will be + unchanged. The $(VAR_NAME) syntax can be escaped with + a double $$, ie: $$(VAR_NAME). Escaped references will + never be expanded, regardless of whether the variable + exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' + items: + type: string + type: array + env: + description: List of environment variables to set in the + container. + items: + description: EnvVar represents an environment variable + present in a Container. + properties: + name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable + exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its key must be defined + type: boolean + required: + - key + type: object + fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, `metadata.labels['''']`, + `metadata.annotations['''']`, spec.nodeName, + spec.serviceAccountName, status.hostIP, status.podIP, + status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in + the specified API version. + type: string + required: + - fieldPath + type: object + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' + properties: + containerName: + description: 'Container name: required for + volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of + the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + secretKeyRef: + description: Selects a key of a secret in the + pod's namespace + properties: + key: + description: The key of the secret to select + from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must + be a C_IDENTIFIER. All invalid keys will be reported as + an event when the container is starting. When a key exists + in multiple sources, the value associated with the last + source will take precedence. Values defined by an Env + with a duplicate key will take precedence. + items: + description: EnvFromSource represents the source of a + set of ConfigMaps + properties: + configMapRef: + description: The ConfigMap to select from + properties: + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the ConfigMap must + be defined + type: boolean + type: object + prefix: + description: An optional identifier to prepend to + each key in the ConfigMap. Must be a C_IDENTIFIER. + type: string + secretRef: + description: The Secret to select from + properties: + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + optional: + description: Specify whether the Secret must be + defined + type: boolean + type: object + type: object + type: array + image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images' + type: string + imagePullPolicy: + description: Image pull policy. One of Always, Never, IfNotPresent. + Defaults to Always. + type: string + lifecycle: + description: Actions that the management system should take + in response to container lifecycle events. + properties: + postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, the + container is terminated and restarted according to + its restart policy. Other management of the container + blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') in + the container's filesystem. The command is + simply exec'd, it is not run inside a shell, + so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is + treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request + to perform. + properties: + host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom + header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to + the host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + preStop: + description: 'PreStop is called immediately before a + container is terminated due to an API request or management + event such as liveness/startup probe failure, preemption, + resource contention, etc. The handler is not called + if the container crashes or exits. The reason for + termination is passed to the handler. The Pod''s termination + grace period countdown begins before the PreStop hooked + is executed. Regardless of the outcome of the handler, + the container will eventually terminate within the + Pod''s termination grace period. Other management + of the container blocks until the hook completes or + until the termination grace period is reached. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' + properties: + exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') in + the container's filesystem. The command is + simply exec'd, it is not run inside a shell, + so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is + treated as live/healthy and non-zero is unhealthy. + items: + type: string + type: array + type: object + httpGet: + description: HTTPGet specifies the http request + to perform. + properties: + host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom + header to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to + the host. Defaults to HTTP. + type: string + required: + - port + type: object + tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + type: object + type: object + livenessProbe: + description: Periodic probe of container liveness. Container + will be restarted if the probe fails. + properties: + exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum + value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + type: string + ports: + description: List of ports to expose from the container. + Exposing a port here gives the system additional information + about the network connections a container uses, but is + primarily informational. Not specifying a port here DOES + NOT prevent that port from being exposed. Any port which + is listening on the default "0.0.0.0" address inside a + container will be accessible from the network. + items: + description: ContainerPort represents a network port in + a single container. + properties: + containerPort: + description: Number of port to expose on the pod's + IP address. This must be a valid port number, 0 + < x < 65536. + format: int32 + type: integer + hostIP: + description: What host IP to bind the external port + to. + type: string + hostPort: + description: Number of port to expose on the host. + If specified, this must be a valid port number, + 0 < x < 65536. If HostNetwork is specified, this + must match ContainerPort. Most containers do not + need this. + format: int32 + type: integer + name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in a + pod must have a unique name. Name for the port that + can be referred to by services. + type: string + protocol: + default: TCP + description: Protocol for port. Must be UDP, TCP, + or SCTP. Defaults to "TCP". + type: string + required: + - containerPort + type: object + type: array + readinessProbe: + description: Periodic probe of container service readiness. + Container will be removed from service endpoints if the + probe fails. + properties: + exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. + items: + type: string + type: array + type: object + failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. + format: int32 + type: integer + httpGet: + description: HTTPGet specifies the http request to perform. + properties: + host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. + type: string + httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. + items: + description: HTTPHeader describes a custom header + to be used in HTTP probes + properties: + name: + description: The header field name + type: string + value: + description: The header field value + type: string + required: + - name + - value + type: object + type: array + path: + description: Path to access on the HTTP server. + type: string + port: + anyOf: + - type: integer + - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. + type: string + required: + - port + type: object + initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. + format: int32 + type: integer + successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum + value is 1. + format: int32 + type: integer + tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' + properties: + host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' + type: string + port: + anyOf: + - type: integer + - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. + x-kubernetes-int-or-string: true + required: + - port + type: object + timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' + format: int32 + type: integer + type: object + resources: + description: 'Compute Resources required by this container. + More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of + compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + type: object + securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' + properties: + allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as Privileged + 2) has CAP_SYS_ADMIN' + type: boolean + capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. + properties: + add: + description: Added capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + drop: + description: Removed capabilities + items: + description: Capability represent POSIX capabilities + type + type: string + type: array + type: object + privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. + type: boolean + procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. + type: string + readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. + type: boolean + runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be + set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as + a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not run + as UID 0 (root) and fail to start the container if + it does. If unset or false, no such validation will + be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to the + container. If unspecified, the container runtime will + allocate a random SELinux context for each container. May + also be set in PodSecurityContext. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. + properties: + level: + description: Level is SELinux level label that applies + to the container. + type: string + role: + description: Role is a SELinux role label that applies + to the container. + type: string + type: + description: Type is a SELinux type label that applies + to the container. + type: string + user: + description: User is a SELinux user label that applies + to the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by this container. + If seccomp options are provided at both the pod & + container level, the container options override the + pod options. + properties: + localhostProfile: + description: localhostProfile indicates a profile + defined in a file on the node should be used. + The profile must be preconfigured on the node + to work. Must be a descending path, relative to + the kubelet's configured seccomp profile location. + Must only be set if type is "Localhost". + type: string + type: + description: "type indicates which kind of seccomp + profile will be applied. Valid options are: \n + Localhost - a profile defined in a file on the + node should be used. RuntimeDefault - the container + runtime default profile should be used. Unconfined + - no profile should be applied." + type: string + required: + - type + type: object + windowsOptions: + description: The Windows specific settings applied to + all containers. If unspecified, the options from the + PodSecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec + named by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. + type: string + runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + type: string + type: object + type: object + volumeMounts: + description: Pod volumes to mount into the container's filesystem. + items: + description: VolumeMount describes a mounting of a Volume + within a container. + properties: + mountPath: + description: Path within the container at which the + volume should be mounted. Must not contain ':'. + type: string + mountPropagation: + description: mountPropagation determines how mounts + are propagated from the host to container and the + other way around. When not set, MountPropagationNone + is used. This field is beta in 1.10. + type: string + name: + description: This must match the Name of a Volume. + type: string + readOnly: + description: Mounted read-only if true, read-write + otherwise (false or unspecified). Defaults to false. + type: boolean + subPath: + description: Path within the volume from which the + container's volume should be mounted. Defaults to + "" (volume's root). + type: string + subPathExpr: + description: Expanded path within the volume from + which the container's volume should be mounted. + Behaves similarly to SubPath but environment variable + references $(VAR_NAME) are expanded using the container's + environment. Defaults to "" (volume's root). SubPathExpr + and SubPath are mutually exclusive. + type: string + required: + - mountPath + - name + type: object + type: array + workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which might + be configured in the container image. + type: string + required: + - image + - imagePullPolicy + - name + - resources + type: object + type: array + disableCSRFProtection: + description: DisableCSRFProtection allows you to toggle CSRF Protection + on Jenkins + type: boolean + hostAliases: + description: HostAliases for Jenkins master pod and SeedJob agent + items: + description: HostAlias holds the mapping between IP and hostnames + that will be injected as an entry in the pod's hosts file. + properties: + hostnames: + description: Hostnames for the above IP address. + items: + type: string + type: array + ip: + description: IP address of the host file entry. + type: string + type: object + type: array + imagePullSecrets: + description: 'ImagePullSecrets is an optional list of references + to secrets in the same namespace to use for pulling any of the + images used by this PodSpec. If specified, these secrets will + be passed to individual puller implementations for them to use. + For example, in the case of docker, only DockerConfig type secrets + are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod' + items: + description: LocalObjectReference contains enough information + to let you locate the referenced object inside the same namespace. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + type: array + labels: + additionalProperties: + type: string + description: 'Map of string keys and values that can be used to + organize and categorize (scope and select) objects. May match + selectors of replication controllers and services. More info: + http://kubernetes.io/docs/user-guide/labels' + type: object + latestPlugins: + description: 'Allow to override jenkins-plugin-cli default behavior + while downloading the plugin and dependencies see: https://github.com/jenkinsci/plugin-installation-manager-tool#cli-options' + type: boolean + nodeSelector: + additionalProperties: + type: string + description: 'NodeSelector is a selector which must be true for + the pod to fit on a node. Selector which must match a node''s + labels for the pod to be scheduled on that node. More info: + https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' + type: object + plugins: + description: Plugins contains plugins required by user + items: + description: Plugin defines Jenkins plugin. + properties: + downloadURL: + description: DownloadURL is the custom url from where plugin + has to be downloaded. + type: string + name: + description: Name is the name of Jenkins plugin + type: string + version: + description: Version is the version of Jenkins plugin + type: string + required: + - name + - version + type: object + type: array + priorityClassName: + description: PriorityClassName for Jenkins master pod + type: string + securityContext: + description: 'SecurityContext that applies to all the containers + of the Jenkins Master. As per kubernetes specification, it can + be overridden for each container individually. Defaults to: + runAsUser: 1000 fsGroup: 1000' + properties: + fsGroup: + description: "A special supplemental group that applies to + all containers in a pod. Some volume types allow the Kubelet + to change the ownership of that volume to be owned by the + pod: \n 1. The owning GID will be the FSGroup 2. The setgid + bit is set (new files created in the volume will be owned + by FSGroup) 3. The permission bits are OR'd with rw-rw---- + \n If unset, the Kubelet will not modify the ownership and + permissions of any volume." + format: int64 + type: integer + fsGroupChangePolicy: + description: 'fsGroupChangePolicy defines behavior of changing + ownership and permission of the volume before being exposed + inside Pod. This field will only apply to volume types which + support fsGroup based ownership(and permissions). It will + have no effect on ephemeral volume types such as: secret, + configmaps and emptydir. Valid values are "OnRootMismatch" + and "Always". If not specified, "Always" is used.' + type: string + runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set + in SecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. + format: int64 + type: integer + runAsNonRoot: + description: Indicates that the container must run as a non-root + user. If true, the Kubelet will validate the image at runtime + to ensure that it does not run as UID 0 (root) and fail + to start the container if it does. If unset or false, no + such validation will be performed. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. + type: boolean + runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata if + unspecified. May also be set in SecurityContext. If set + in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence for that container. + format: int64 + type: integer + seLinuxOptions: + description: The SELinux context to be applied to all containers. + If unspecified, the container runtime will allocate a random + SELinux context for each container. May also be set in + SecurityContext. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence + for that container. + properties: + level: + description: Level is SELinux level label that applies + to the container. + type: string + role: + description: Role is a SELinux role label that applies + to the container. + type: string + type: + description: Type is a SELinux type label that applies + to the container. + type: string + user: + description: User is a SELinux user label that applies + to the container. + type: string + type: object + seccompProfile: + description: The seccomp options to use by the containers + in this pod. + properties: + localhostProfile: + description: localhostProfile indicates a profile defined + in a file on the node should be used. The profile must + be preconfigured on the node to work. Must be a descending + path, relative to the kubelet's configured seccomp profile + location. Must only be set if type is "Localhost". + type: string + type: + description: "type indicates which kind of seccomp profile + will be applied. Valid options are: \n Localhost - a + profile defined in a file on the node should be used. + RuntimeDefault - the container runtime default profile + should be used. Unconfined - no profile should be applied." + type: string + required: + - type + type: object + supplementalGroups: + description: A list of groups applied to the first process + run in each container, in addition to the container's primary + GID. If unspecified, no groups will be added to any container. + items: + format: int64 + type: integer + type: array + sysctls: + description: Sysctls hold a list of namespaced sysctls used + for the pod. Pods with unsupported sysctls (by the container + runtime) might fail to launch. + items: + description: Sysctl defines a kernel parameter to be set + properties: + name: + description: Name of a property to set + type: string + value: + description: Value of a property to set + type: string + required: + - name + - value + type: object + type: array + windowsOptions: + description: The Windows specific settings applied to all + containers. If unspecified, the options within a container's + SecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. + properties: + gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. + type: string + gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the + GMSA credential spec to use. + type: string + runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set in + PodSecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext + takes precedence. + type: string + type: object + type: object + tolerations: + description: If specified, the pod's tolerations. + items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . + properties: + effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, allowed + values are NoSchedule, PreferNoSchedule and NoExecute. + type: string + key: + description: Key is the taint key that the toleration applies + to. Empty means match all taint keys. If the key is empty, + operator must be Exists; this combination means to match + all values and all keys. + type: string + operator: + description: Operator represents a key's relationship to + the value. Valid operators are Exists and Equal. Defaults + to Equal. Exists is equivalent to wildcard for value, + so that a pod can tolerate all taints of a particular + category. + type: string + tolerationSeconds: + description: TolerationSeconds represents the period of + time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the taint + forever (do not evict). Zero and negative values will + be treated as 0 (evict immediately) by the system. + format: int64 + type: integer + value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. + type: string + type: object + type: array + volumes: + description: 'List of volumes that can be mounted by containers + belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes' + items: + description: Volume represents a named volume in a pod that + may be accessed by any container in the pod. + properties: + awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk + resource that is attached to a kubelet''s host machine + and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + properties: + fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' + type: string + partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty).' + format: int32 + type: integer + readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the + default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + type: boolean + volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' + type: string + required: + - volumeID + type: object + azureDisk: + description: AzureDisk represents an Azure Data Disk mount + on the host and bind mount to the pod. + properties: + cachingMode: + description: 'Host Caching mode: None, Read Only, Read + Write.' + type: string + diskName: + description: The Name of the data disk in the blob storage + type: string + diskURI: + description: The URI the data disk in the blob storage + type: string + fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. + type: string + kind: + description: 'Expected values Shared: multiple blob + disks per storage account Dedicated: single blob + disk per storage account Managed: azure managed data + disk (only in managed availability set). defaults + to shared' + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + required: + - diskName + - diskURI + type: object + azureFile: + description: AzureFile represents an Azure File Service + mount on the host and bind mount to the pod. + properties: + readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretName: + description: the name of secret that contains Azure + Storage Account Name and Key + type: string + shareName: + description: Share Name + type: string + required: + - secretName + - shareName + type: object + cephfs: + description: CephFS represents a Ceph FS mount on the host + that shares a pod's lifetime + properties: + monitors: + description: 'Required: Monitors is a collection of + Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + items: + type: string + type: array + path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' + type: string + readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: boolean + secretFile: + description: 'Optional: SecretFile is the path to key + ring for User, default is /etc/ceph/user.secret More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: string + secretRef: + description: 'Optional: SecretRef is reference to the + authentication secret for User, default is empty. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + type: object + user: + description: 'Optional: User is the rados user name, + default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' + type: string + required: + - monitors + type: object + cinder: + description: 'Cinder represents a cinder volume attached + and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + properties: + fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: string + readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: boolean + secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + type: object + volumeID: + description: 'volume id used to identify the volume + in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' + type: string + required: + - volumeID + type: object + configMap: + description: ConfigMap represents a configMap that should + populate this volume + properties: + defaultMode: + description: 'Optional: mode bits used to set permissions + on created files by default. Must be an octal value + between 0000 and 0777 or a decimal value between 0 + and 511. YAML accepts both octal and decimal values, + JSON requires decimal values for mode bits. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and + the result can be other mode bits set.' + format: int32 + type: integer + items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will be + projected into the volume as a file whose name is + the key and content is the value. If specified, the + listed keys will be projected into the specified paths, + and unlisted keys will not be present. If a key is + specified which is not present in the ConfigMap, the + volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' + path or start with '..'. + items: + description: Maps a string key to a path within a + volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits used to set + permissions on this file. Must be an octal value + between 0000 and 0777 or a decimal value between + 0 and 511. YAML accepts both octal and decimal + values, JSON requires decimal values for mode + bits. If not specified, the volume defaultMode + will be used. This might be in conflict with + other options that affect the file mode, like + fsGroup, and the result can be other mode bits + set.' + format: int32 + type: integer + path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its keys + must be defined + type: boolean + type: object + csi: + description: CSI (Container Storage Interface) represents + ephemeral storage that is handled by certain external + CSI drivers (Beta feature). + properties: + driver: + description: Driver is the name of the CSI driver that + handles this volume. Consult with your admin for the + correct name as registered in the cluster. + type: string + fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed + to the associated CSI driver which will determine + the default filesystem to apply. + type: string + nodePublishSecretRef: + description: NodePublishSecretRef is a reference to + the secret object containing sensitive information + to pass to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the + secret object contains more than one secret, all secret + references are passed. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + type: object + readOnly: + description: Specifies a read-only configuration for + the volume. Defaults to false (read/write). + type: boolean + volumeAttributes: + additionalProperties: + type: string + description: VolumeAttributes stores driver-specific + properties that are passed to the CSI driver. Consult + your driver's documentation for supported values. + type: object + required: + - driver + type: object + downwardAPI: + description: DownwardAPI represents downward API about the + pod that should populate this volume + properties: + defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a Optional: mode bits used + to set permissions on created files by default. Must + be an octal value between 0000 and 0777 or a decimal + value between 0 and 511. YAML accepts both octal and + decimal values, JSON requires decimal values for mode + bits. Defaults to 0644. Directories within the path + are not affected by this setting. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' + format: int32 + type: integer + items: + description: Items is a list of downward API volume + file + items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field + properties: + fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' + properties: + apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in + the specified API version. + type: string + required: + - fieldPath + type: object + mode: + description: 'Optional: mode bits used to set + permissions on this file, must be an octal value + between 0000 and 0777 or a decimal value between + 0 and 511. YAML accepts both octal and decimal + values, JSON requires decimal values for mode + bits. If not specified, the volume defaultMode + will be used. This might be in conflict with + other options that affect the file mode, like + fsGroup, and the result can be other mode bits + set.' + format: int32 + type: integer + path: + description: 'Required: Path is the relative + path name of the file to be created. Must not + be absolute or contain the ''..'' path. Must + be utf-8 encoded. The first item of the relative + path must not start with ''..''' + type: string + resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' + properties: + containerName: + description: 'Container name: required for + volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of + the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + emptyDir: + description: 'EmptyDir represents a temporary directory + that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + properties: + medium: + description: 'What type of storage medium should back + this directory. The default is "" which means to use + the node''s default medium. Must be an empty string + (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' + type: string + sizeLimit: + anyOf: + - type: integer + - type: string + description: 'Total amount of local storage required + for this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all + containers in a pod. The default is nil which means + that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + ephemeral: + description: "Ephemeral represents a volume that is handled + by a cluster storage driver (Alpha feature). The volume's + lifecycle is tied to the pod that defines it - it will + be created before the pod starts, and deleted when the + pod is removed. \n Use this if: a) the volume is only + needed while the pod runs, b) features of normal volumes + like restoring from snapshot or capacity tracking are + needed, c) the storage driver is specified through a storage + class, and d) the storage driver supports dynamic volume + provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource + for more information on the connection between this + volume type and PersistentVolumeClaim). \n Use PersistentVolumeClaim + or one of the vendor-specific APIs for volumes that persist + for longer than the lifecycle of an individual pod. \n + Use CSI for light-weight local ephemeral volumes if the + CSI driver is meant to be used that way - see the documentation + of the driver for more information. \n A pod can use both + types of ephemeral volumes and persistent volumes at the + same time." + properties: + readOnly: + description: Specifies a read-only configuration for + the volume. Defaults to false (read/write). + type: boolean + volumeClaimTemplate: + description: "Will be used to create a stand-alone PVC + to provision the volume. The pod in which this EphemeralVolumeSource + is embedded will be the owner of the PVC, i.e. the + PVC will be deleted together with the pod. The name + of the PVC will be `-` where + `` is the name from the `PodSpec.Volumes` + array entry. Pod validation will reject the pod if + the concatenated name is not valid for a PVC (for + example, too long). \n An existing PVC with that name + that is not owned by the pod will *not* be used for + the pod to avoid using an unrelated volume by mistake. + Starting the pod is then blocked until the unrelated + PVC is removed. If such a pre-created PVC is meant + to be used by the pod, the PVC has to updated with + an owner reference to the pod once the pod exists. + Normally this should not be necessary, but it may + be useful when manually reconstructing a broken cluster. + \n This field is read-only and no changes will be + made by Kubernetes to the PVC after it has been created. + \n Required, must not be nil." + properties: + metadata: + description: May contain labels and annotations + that will be copied into the PVC when creating + it. No other fields are allowed and will be rejected + during validation. + type: object + spec: + description: The specification for the PersistentVolumeClaim. + The entire content is copied unchanged into the + PVC that gets created from this template. The + same fields as in a PersistentVolumeClaim are + also valid here. + properties: + accessModes: + description: 'AccessModes contains the desired + access modes the volume should have. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + dataSource: + description: 'This field can be used to specify + either: * An existing VolumeSnapshot object + (snapshot.storage.k8s.io/VolumeSnapshot) * + An existing PVC (PersistentVolumeClaim) * + An existing custom resource that implements + data population (Alpha) In order to use custom + resource types that implement data population, + the AnyVolumeDataSource feature gate must + be enabled. If the provisioner or an external + controller can support the specified data + source, it will create a new volume based + on the contents of the specified data source.' + properties: + apiGroup: + description: APIGroup is the group for the + resource being referenced. If APIGroup + is not specified, the specified Kind must + be in the core API group. For any other + third-party types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource + being referenced + type: string + name: + description: Name is the name of resource + being referenced + type: string + required: + - kind + - name + type: object + resources: + description: 'Resources represents the minimum + resources the volume should have. More info: + https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + properties: + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum + amount of compute resources allowed. More + info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum + amount of compute resources required. + If Requests is omitted for a container, + it defaults to Limits if that is explicitly + specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' + type: object + type: object + selector: + description: A label query over volumes to consider + for binding. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: operator represents a + key's relationship to a set of values. + Valid operators are In, NotIn, Exists + and DoesNotExist. + type: string + values: + description: values is an array of + string values. If the operator is + In or NotIn, the values array must + be non-empty. If the operator is + Exists or DoesNotExist, the values + array must be empty. This array + is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + storageClassName: + description: 'Name of the StorageClass required + by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeMode: + description: volumeMode defines what type of + volume is required by the claim. Value of + Filesystem is implied when not included in + claim spec. + type: string + volumeName: + description: VolumeName is the binding reference + to the PersistentVolume backing this claim. + type: string + type: object + required: + - spec + type: object + type: object + fc: + description: FC represents a Fibre Channel resource that + is attached to a kubelet's host machine and then exposed + to the pod. + properties: + fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. TODO: how do we prevent errors in the + filesystem from compromising the machine' + type: string + lun: + description: 'Optional: FC target lun number' + format: int32 + type: integer + readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' + type: boolean + targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' + items: + type: string + type: array + wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs + and lun must be set, but not both simultaneously.' + items: + type: string + type: array + type: object + flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. + properties: + driver: + description: Driver is the name of the driver to use + for this volume. + type: string + fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. + type: string + options: + additionalProperties: + type: string + description: 'Optional: Extra command options if any.' + type: object + readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' + type: boolean + secretRef: + description: 'Optional: SecretRef is reference to the + secret object containing sensitive information to + pass to the plugin scripts. This may be empty if no + secret object is specified. If the secret object contains + more than one secret, all secrets are passed to the + plugin scripts.' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + type: object + required: + - driver + type: object + flocker: + description: Flocker represents a Flocker volume attached + to a kubelet's host machine. This depends on the Flocker + control service being running + properties: + datasetName: + description: Name of the dataset stored as metadata + -> name on the dataset for Flocker should be considered + as deprecated + type: string + datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset + type: string + type: object + gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then + exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + properties: + fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' + type: string + partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + format: int32 + type: integer + pdName: + description: 'Unique name of the PD resource in GCE. + Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + type: string + readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' + type: boolean + required: + - pdName + type: object + gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an + InitContainer that clones the repo using git, then mount + the EmptyDir into the Pod''s container.' + properties: + directory: + description: Target directory name. Must not contain + or start with '..'. If '.' is supplied, the volume + directory will be the git repository. Otherwise, + if specified, the volume will contain the git repository + in the subdirectory with the given name. + type: string + repository: + description: Repository URL + type: string + revision: + description: Commit hash for the specified revision. + type: string + required: + - repository + type: object + glusterfs: + description: 'Glusterfs represents a Glusterfs mount on + the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' + properties: + endpoints: + description: 'EndpointsName is the endpoint name that + details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: string + path: + description: 'Path is the Glusterfs volume path. More + info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: string + readOnly: + description: 'ReadOnly here will force the Glusterfs + volume to be mounted with read-only permissions. Defaults + to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' + type: boolean + required: + - endpoints + - path + type: object + hostPath: + description: 'HostPath represents a pre-existing file or + directory on the host machine that is directly exposed + to the container. This is generally used for system agents + or other privileged things that are allowed to see the + host machine. Most containers will NOT need this. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host + directory mounts and who can/can not mount host directories + as read/write.' + properties: + path: + description: 'Path of the directory on the host. If + the path is a symlink, it will follow the link to + the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' + type: string + type: + description: 'Type for HostPath Volume Defaults to "" + More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' + type: string + required: + - path + type: object + iscsi: + description: 'ISCSI represents an ISCSI Disk resource that + is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' + properties: + chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication + type: boolean + chapAuthSession: + description: whether support iSCSI Session CHAP authentication + type: boolean + fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' + type: string + initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new + iSCSI interface : will + be created for the connection. + type: string + iqn: + description: Target iSCSI Qualified Name. + type: string + iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI + transport. Defaults to 'default' (tcp). + type: string + lun: + description: iSCSI Target Lun number. + format: int32 + type: integer + portals: + description: iSCSI Target Portal List. The portal is + either an IP or ip_addr:port if the port is other + than default (typically TCP ports 860 and 3260). + items: + type: string + type: array + readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. + type: boolean + secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + type: object + targetPortal: + description: iSCSI Target Portal. The Portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). + type: string + required: + - iqn + - lun + - targetPortal + type: object + name: + description: 'Volume''s name. Must be a DNS_LABEL and unique + within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + nfs: + description: 'NFS represents an NFS mount on the host that + shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + properties: + path: + description: 'Path that is exported by the NFS server. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: string + readOnly: + description: 'ReadOnly here will force the NFS export + to be mounted with read-only permissions. Defaults + to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: boolean + server: + description: 'Server is the hostname or IP address of + the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' + type: string + required: + - path + - server + type: object + persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents + a reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + properties: + claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + type: string + readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. + type: boolean + required: + - claimName + type: object + photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host + machine + properties: + fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. + type: string + pdID: + description: ID that identifies Photon Controller persistent + disk + type: string + required: + - pdID + type: object + portworxVolume: + description: PortworxVolume represents a portworx volume + attached and mounted on kubelets host machine + properties: + fsType: + description: FSType represents the filesystem type to + mount Must be a filesystem type supported by the host + operating system. Ex. "ext4", "xfs". Implicitly inferred + to be "ext4" if unspecified. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + volumeID: + description: VolumeID uniquely identifies a Portworx + volume + type: string + required: + - volumeID + type: object + projected: + description: Items for all in one resources secrets, configmaps, + and downward API + properties: + defaultMode: + description: Mode bits used to set permissions on created + files by default. Must be an octal value between 0000 + and 0777 or a decimal value between 0 and 511. YAML + accepts both octal and decimal values, JSON requires + decimal values for mode bits. Directories within the + path are not affected by this setting. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set. + format: int32 + type: integer + sources: + description: list of volume projections + items: + description: Projection that may be projected along + with other supported volume types + properties: + configMap: + description: information about the configMap data + to project + properties: + items: + description: If unspecified, each key-value + pair in the Data field of the referenced + ConfigMap will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the ConfigMap, the volume setup will + error unless it is marked optional. Paths + must be relative and may not contain the + '..' path or start with '..'. + items: + description: Maps a string key to a path + within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits used + to set permissions on this file. Must + be an octal value between 0000 and + 0777 or a decimal value between 0 + and 511. YAML accepts both octal and + decimal values, JSON requires decimal + values for mode bits. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. + type: string + required: + - key + - path + type: object + type: array + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap + or its keys must be defined + type: boolean + type: object + downwardAPI: + description: information about the downwardAPI + data to project + properties: + items: + description: Items is a list of DownwardAPIVolume + file + items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field + properties: + fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' + properties: + apiVersion: + description: Version of the schema + the FieldPath is written in terms + of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to + select in the specified API version. + type: string + required: + - fieldPath + type: object + mode: + description: 'Optional: mode bits used + to set permissions on this file, must + be an octal value between 0000 and + 0777 or a decimal value between 0 + and 511. YAML accepts both octal and + decimal values, JSON requires decimal + values for mode bits. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' + format: int32 + type: integer + path: + description: 'Required: Path is the + relative path name of the file to + be created. Must not be absolute or + contain the ''..'' path. Must be utf-8 + encoded. The first item of the relative + path must not start with ''..''' + type: string + resourceFieldRef: + description: 'Selects a resource of + the container: only resources limits + and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) + are currently supported.' + properties: + containerName: + description: 'Container name: required + for volumes, optional for env + vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output + format of the exposed resources, + defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource + to select' + type: string + required: + - resource + type: object + required: + - path + type: object + type: array + type: object + secret: + description: information about the secret data + to project + properties: + items: + description: If unspecified, each key-value + pair in the Data field of the referenced + Secret will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the Secret, the volume setup will error + unless it is marked optional. Paths must + be relative and may not contain the '..' + path or start with '..'. + items: + description: Maps a string key to a path + within a volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits used + to set permissions on this file. Must + be an octal value between 0000 and + 0777 or a decimal value between 0 + and 511. YAML accepts both octal and + decimal values, JSON requires decimal + values for mode bits. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' + format: int32 + type: integer + path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. + type: string + required: + - key + - path + type: object + type: array + name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' + type: string + optional: + description: Specify whether the Secret or + its key must be defined + type: boolean + type: object + serviceAccountToken: + description: information about the serviceAccountToken + data to project + properties: + audience: + description: Audience is the intended audience + of the token. A recipient of a token must + identify itself with an identifier specified + in the audience of the token, and otherwise + should reject the token. The audience defaults + to the identifier of the apiserver. + type: string + expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, + the kubelet volume plugin will proactively + rotate the service account token. The kubelet + will start trying to rotate the token if + the token is older than 80 percent of its + time to live or if the token is older than + 24 hours.Defaults to 1 hour and must be + at least 10 minutes. + format: int64 + type: integer + path: + description: Path is the path relative to + the mount point of the file to project the + token into. + type: string + required: + - path + type: object + type: object + type: array + type: object + quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime + properties: + group: + description: Group to map volume access to Default is + no group + type: string + readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults + to false. + type: boolean + registry: + description: Registry represents a single or multiple + Quobyte Registry services specified as a string as + host:port pair (multiple entries are separated with + commas) which acts as the central registry for volumes + type: string + tenant: + description: Tenant owning the given Quobyte volume + in the Backend Used with dynamically provisioned Quobyte + volumes, value is set by the plugin + type: string + user: + description: User to map volume access to Defaults to + serivceaccount user + type: string + volume: + description: Volume is a string that references an already + created Quobyte volume by name. + type: string + required: + - registry + - volume + type: object + rbd: + description: 'RBD represents a Rados Block Device mount + on the host that shares a pod''s lifetime. More info: + https://examples.k8s.io/volumes/rbd/README.md' + properties: + fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' + type: string + image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + items: + type: string + type: array + pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: boolean + secretRef: + description: 'SecretRef is name of the authentication + secret for RBDUser. If provided overrides keyring. + Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + type: object + user: + description: 'The rados user name. Default is admin. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' + type: string + required: + - image + - monitors + type: object + scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. + properties: + fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". + type: string + gateway: + description: The host address of the ScaleIO API Gateway. + type: string + protectionDomain: + description: The name of the ScaleIO Protection Domain + for the configured storage. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretRef: + description: SecretRef references to the secret for + ScaleIO user and other sensitive information. If this + is not provided, Login operation will fail. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + type: object + sslEnabled: + description: Flag to enable/disable SSL communication + with Gateway, default false + type: boolean + storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. + type: string + storagePool: + description: The ScaleIO Storage Pool associated with + the protection domain. + type: string + system: + description: The name of the storage system as configured + in ScaleIO. + type: string + volumeName: + description: The name of a volume already created in + the ScaleIO system that is associated with this volume + source. + type: string + required: + - gateway + - secretRef + - system + type: object + secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' + properties: + defaultMode: + description: 'Optional: mode bits used to set permissions + on created files by default. Must be an octal value + between 0000 and 0777 or a decimal value between 0 + and 511. YAML accepts both octal and decimal values, + JSON requires decimal values for mode bits. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and + the result can be other mode bits set.' + format: int32 + type: integer + items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and + content is the value. If specified, the listed keys + will be projected into the specified paths, and unlisted + keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will + error unless it is marked optional. Paths must be + relative and may not contain the '..' path or start + with '..'. + items: + description: Maps a string key to a path within a + volume. + properties: + key: + description: The key to project. + type: string + mode: + description: 'Optional: mode bits used to set + permissions on this file. Must be an octal value + between 0000 and 0777 or a decimal value between + 0 and 511. YAML accepts both octal and decimal + values, JSON requires decimal values for mode + bits. If not specified, the volume defaultMode + will be used. This might be in conflict with + other options that affect the file mode, like + fsGroup, and the result can be other mode bits + set.' + format: int32 + type: integer + path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. + type: string + required: + - key + - path + type: object + type: array + optional: + description: Specify whether the Secret or its keys + must be defined + type: boolean + secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' + type: string + type: object + storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. + properties: + fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. + type: string + readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. + type: boolean + secretRef: + description: SecretRef specifies the secret to use for + obtaining the StorageOS API credentials. If not specified, + default values will be attempted. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + type: object + volumeName: + description: VolumeName is the human-readable name of + the StorageOS volume. Volume names are only unique + within a namespace. + type: string + volumeNamespace: + description: VolumeNamespace specifies the scope of + the volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows + the Kubernetes name scoping to be mirrored within + StorageOS for tighter integration. Set VolumeName + to any name to override the default behaviour. Set + to "default" if you are not using namespaces within + StorageOS. Namespaces that do not pre-exist within + StorageOS will be created. + type: string + type: object + vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine + properties: + fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. + type: string + storagePolicyID: + description: Storage Policy Based Management (SPBM) + profile ID associated with the StoragePolicyName. + type: string + storagePolicyName: + description: Storage Policy Based Management (SPBM) + profile name. + type: string + volumePath: + description: Path that identifies vSphere volume vmdk + type: string + required: + - volumePath + type: object + required: + - name + type: object + type: array + required: + - disableCSRFProtection + type: object + notifications: + description: Notifications defines list of a services which are used + to inform about Jenkins status Can be used to integrate chat services + like Slack, Microsoft Teams or Mailgun + items: + description: Notification is a service configuration used to send + notifications about Jenkins status. + properties: + level: + description: NotificationLevel defines the level of a Notification. + type: string + mailgun: + description: Mailgun is handler for Mailgun email service notification + channel. + properties: + apiKeySecretKeySelector: + description: SecretKeySelector selects a key of a Secret. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + secret: + description: The name of the secret in the pod's namespace + to select from. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + type: object + required: + - key + - secret + type: object + domain: + type: string + from: + type: string + recipient: + type: string + required: + - apiKeySecretKeySelector + - domain + - from + - recipient + type: object + name: + type: string + slack: + description: Slack is handler for Slack notification channel. + properties: + webHookURLSecretKeySelector: + description: The web hook URL to Slack App + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + secret: + description: The name of the secret in the pod's namespace + to select from. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + type: object + required: + - key + - secret + type: object + required: + - webHookURLSecretKeySelector + type: object + smtp: + description: SMTP is handler for sending emails via this protocol. + properties: + from: + type: string + passwordSecretKeySelector: + description: SecretKeySelector selects a key of a Secret. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + secret: + description: The name of the secret in the pod's namespace + to select from. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + type: object + required: + - key + - secret + type: object + port: + type: integer + server: + type: string + tlsInsecureSkipVerify: + type: boolean + to: + type: string + usernameSecretKeySelector: + description: SecretKeySelector selects a key of a Secret. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + secret: + description: The name of the secret in the pod's namespace + to select from. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + type: object + required: + - key + - secret + type: object + required: + - from + - passwordSecretKeySelector + - port + - server + - to + - usernameSecretKeySelector + type: object + teams: + description: MicrosoftTeams is handler for Microsoft MicrosoftTeams + notification channel. + properties: + webHookURLSecretKeySelector: + description: The web hook URL to MicrosoftTeams App + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + secret: + description: The name of the secret in the pod's namespace + to select from. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' + type: string + type: object + required: + - key + - secret + type: object + required: + - webHookURLSecretKeySelector + type: object + verbose: + type: boolean + required: + - level + - name + - verbose + type: object + type: array + restore: + description: 'Backup defines configuration of Jenkins backup restore + More info: https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configure-backup-and-restore/' + properties: + action: + description: Action defines action which performs restore backup + in restore container sidecar + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside + the container, the working directory for the command is + root ('/') in the container's filesystem. The command + is simply exec'd, it is not run inside a shell, so traditional + shell instructions ('|', etc) won't work. To use a shell, + you need to explicitly call out to that shell. Exit + status of 0 is treated as live/healthy and non-zero + is unhealthy. + items: + type: string + type: array + type: object + type: object + containerName: + description: ContainerName is the container name responsible for + restore backup operation + type: string + getLatestAction: + description: GetLatestAction defines action which returns the + latest backup number. If there is no backup "-1" should be returned. + properties: + exec: + description: Exec specifies the action to take. + properties: + command: + description: Command is the command line to execute inside + the container, the working directory for the command is + root ('/') in the container's filesystem. The command + is simply exec'd, it is not run inside a shell, so traditional + shell instructions ('|', etc) won't work. To use a shell, + you need to explicitly call out to that shell. Exit + status of 0 is treated as live/healthy and non-zero + is unhealthy. + items: + type: string + type: array + type: object + type: object + recoveryOnce: + description: RecoveryOnce if want to restore specific backup set + this field and then Jenkins will be restarted and desired backup + will be restored + format: int64 + type: integer + required: + - action + - containerName + type: object + roles: + description: Roles defines list of extra RBAC roles for the Jenkins + Master pod service account + items: + description: RoleRef contains information that points to the role + being used + properties: + apiGroup: + description: APIGroup is the group for the resource being referenced + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - apiGroup + - kind + - name + type: object + type: array + seedJobAgentImage: + description: SeedJobAgentImage defines the image that will be used + by the seed job agent. If not defined jenkins/inbound-agent:4.9-1 + will be used. + type: string + seedJobs: + description: 'SeedJobs defines list of Jenkins Seed Job configurations + More info: https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration#configure-seed-jobs-and-pipelines' + items: + description: 'SeedJob defines configuration for seed job More info: + https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/configuration/#configure-seed-jobs-and-pipelines.' + properties: + additionalClasspath: + description: AdditionalClasspath is setting for Job DSL API + plugin to set Additional Classpath + type: string + bitbucketPushTrigger: + description: BitbucketPushTrigger is used for Bitbucket web + hooks + type: boolean + buildPeriodically: + description: BuildPeriodically is setting for scheduled trigger + type: string + credentialID: + description: CredentialID is the Kubernetes secret name which + stores repository access credentials + type: string + credentialType: + description: JenkinsCredentialType is the https://jenkinsci.github.io/kubernetes-credentials-provider-plugin/ + credential type + type: string + description: + description: Description is the description of the seed job + type: string + failOnMissingPlugin: + description: FailOnMissingPlugin is setting for Job DSL API + plugin that fails job if required plugin is missing + type: boolean + githubPushTrigger: + description: GitHubPushTrigger is used for GitHub web hooks + type: boolean + id: + description: ID is the unique seed job name + type: string + ignoreMissingFiles: + description: IgnoreMissingFiles is setting for Job DSL API plugin + to ignore files that miss + type: boolean + pollSCM: + description: PollSCM is setting for polling changes in SCM + type: string + repositoryBranch: + description: RepositoryBranch is the repository branch where + are seed job definitions + type: string + repositoryUrl: + description: RepositoryURL is the repository access URL. Can + be SSH or HTTPS. + type: string + targets: + description: Targets is the repository path where are seed job + definitions + type: string + unstableOnDeprecation: + description: UnstableOnDeprecation is setting for Job DSL API + plugin that sets build status as unstable if build using deprecated + features + type: boolean + type: object + type: array + service: + description: 'Service is Kubernetes service of Jenkins master HTTP + pod Defaults to : port: 8080 type: ClusterIP' + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store and + retrieve arbitrary metadata. They are not queryable and should + be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + labels: + additionalProperties: + type: string + description: 'Route service traffic to pods with label keys and + values matching this selector. If empty or not present, the + service is assumed to have an external process managing its + endpoints, which Kubernetes will not modify. Only applies to + types ClusterIP, NodePort, and LoadBalancer. Ignored if type + is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/' + type: object + loadBalancerIP: + description: 'Only applies to Service Type: LoadBalancer LoadBalancer + will get created with the IP specified in this field. This feature + depends on whether the underlying cloud-provider supports specifying + the loadBalancerIP when a load balancer is created. This field + will be ignored if the cloud-provider does not support the feature.' + type: string + loadBalancerSourceRanges: + description: 'If specified and supported by the platform, this + will restrict traffic through the cloud-provider load-balancer + will be restricted to the specified client IPs. This field will + be ignored if the cloud-provider does not support the feature." + More info: https://kubernetes.io/docs/tasks/administer-cluster/securing-a-cluster/#restricting-cloud-metadata-api-access' + items: + type: string + type: array + nodePort: + description: 'The port on each node on which this service is exposed + when type=NodePort or LoadBalancer. Usually assigned by the + system. If specified, it will be allocated to the service if + unused or else creation of the service will fail. Default is + to auto-allocate a port if the ServiceType of this Service requires + one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' + format: int32 + type: integer + port: + description: 'The port that are exposed by this service. More + info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' + format: int32 + type: integer + type: + description: 'Type determines how the Service is exposed. Defaults + to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, + and LoadBalancer. "ExternalName" maps to the specified externalName. + "ClusterIP" allocates a cluster-internal IP address for load-balancing + to endpoints. Endpoints are determined by the selector or if + that is not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated and + the endpoints are published as a set of endpoints rather than + a stable IP. "NodePort" builds on ClusterIP and allocates a + port on every node which routes to the clusterIP. "LoadBalancer" + builds on NodePort and creates an external load-balancer (if + supported in the current cloud) which routes to the clusterIP. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types' + type: string + type: object + serviceAccount: + description: ServiceAccount defines Jenkins master service account + attributes + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store and + retrieve arbitrary metadata. They are not queryable and should + be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + type: object + slaveService: + description: 'Service is Kubernetes service of Jenkins slave pods + Defaults to : port: 50000 type: ClusterIP' + properties: + annotations: + additionalProperties: + type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store and + retrieve arbitrary metadata. They are not queryable and should + be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' + type: object + labels: + additionalProperties: + type: string + description: 'Route service traffic to pods with label keys and + values matching this selector. If empty or not present, the + service is assumed to have an external process managing its + endpoints, which Kubernetes will not modify. Only applies to + types ClusterIP, NodePort, and LoadBalancer. Ignored if type + is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/' + type: object + loadBalancerIP: + description: 'Only applies to Service Type: LoadBalancer LoadBalancer + will get created with the IP specified in this field. This feature + depends on whether the underlying cloud-provider supports specifying + the loadBalancerIP when a load balancer is created. This field + will be ignored if the cloud-provider does not support the feature.' + type: string + loadBalancerSourceRanges: + description: 'If specified and supported by the platform, this + will restrict traffic through the cloud-provider load-balancer + will be restricted to the specified client IPs. This field will + be ignored if the cloud-provider does not support the feature." + More info: https://kubernetes.io/docs/tasks/administer-cluster/securing-a-cluster/#restricting-cloud-metadata-api-access' + items: + type: string + type: array + nodePort: + description: 'The port on each node on which this service is exposed + when type=NodePort or LoadBalancer. Usually assigned by the + system. If specified, it will be allocated to the service if + unused or else creation of the service will fail. Default is + to auto-allocate a port if the ServiceType of this Service requires + one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' + format: int32 + type: integer + port: + description: 'The port that are exposed by this service. More + info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' + format: int32 + type: integer + type: + description: 'Type determines how the Service is exposed. Defaults + to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, + and LoadBalancer. "ExternalName" maps to the specified externalName. + "ClusterIP" allocates a cluster-internal IP address for load-balancing + to endpoints. Endpoints are determined by the selector or if + that is not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated and + the endpoints are published as a set of endpoints rather than + a stable IP. "NodePort" builds on ClusterIP and allocates a + port on every node which routes to the clusterIP. "LoadBalancer" + builds on NodePort and creates an external load-balancer (if + supported in the current cloud) which routes to the clusterIP. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types' + type: string + type: object + validateSecurityWarnings: + description: ValidateSecurityWarnings enables or disables validating + potential security warnings in Jenkins plugins via admission webhooks. + type: boolean + required: + - jenkinsAPISettings + - master + type: object + status: + description: Status defines the observed state of Jenkins + properties: + appliedGroovyScripts: + description: AppliedGroovyScripts is a list with all applied groovy + scripts in Jenkins by the operator + items: + description: AppliedGroovyScript is the applied groovy script in + Jenkins by the operator. + properties: + configurationType: + description: ConfigurationType is the name of the configuration + type(base-groovy, user-groovy, user-casc) + type: string + hash: + description: Hash is the hash of the groovy script and secrets + which it uses + type: string + name: + description: Name is the name of the groovy script + type: string + source: + description: Source is the name of source where is located groovy + script + type: string + required: + - configurationType + - hash + - name + - source + type: object + type: array + backupDoneBeforePodDeletion: + description: BackupDoneBeforePodDeletion tells if backup before pod + deletion has been made + type: boolean + baseConfigurationCompletedTime: + description: BaseConfigurationCompletedTime is a time when Jenkins + base configuration phase has been completed + format: date-time + type: string + createdSeedJobs: + description: CreatedSeedJobs contains list of seed job id already + created in Jenkins + items: + type: string + type: array + lastBackup: + description: LastBackup is the latest backup number + format: int64 + type: integer + operatorVersion: + description: OperatorVersion is the operator version which manages + this CR + type: string + pendingBackup: + description: PendingBackup is the pending backup number + format: int64 + type: integer + provisionStartTime: + description: ProvisionStartTime is a time when Jenkins master pod + has been created + format: date-time + type: string + restoredBackup: + description: RestoredBackup is the restored backup number after Jenkins + master pod restart + format: int64 + type: integer + userAndPasswordHash: + description: UserAndPasswordHash is a SHA256 hash made from user and + password + type: string + userConfigurationCompletedTime: + description: UserConfigurationCompletedTime is a time when Jenkins + user configuration phase has been completed + format: date-time + type: string + type: object + type: object served: true storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] From b95ccec075ee12c430110f9c64fb22aa55029bb9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Jul 2023 00:21:39 +0200 Subject: [PATCH 25/40] build(deps-dev): bump postcss-cli from 5.0.1 to 7.1.2 in /website (#872) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/package-lock.json | 2277 ++++++++----------------------------- website/package.json | 2 +- 2 files changed, 478 insertions(+), 1801 deletions(-) diff --git a/website/package-lock.json b/website/package-lock.json index b4b6feba..5dc395ee 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -4,56 +4,55 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" } }, "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, "argparse": { @@ -65,67 +64,16 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "assign-symbols": { + "at-least-node": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true }, "autoprefixer": { @@ -161,120 +109,19 @@ } } }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "fill-range": "^7.0.1" } }, "browserslist": { @@ -298,33 +145,34 @@ } } }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", "dev": true, "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "callsites": "^2.0.0" } }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", "dev": true }, "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "caniuse-lite": { @@ -334,229 +182,88 @@ "dev": true }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" } }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "cosmiconfig": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", - "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "dev": true, "requires": { + "import-fresh": "^2.0.0", "is-directory": "^0.3.1", - "js-yaml": "^3.4.3", - "minimist": "^1.2.0", - "object-assign": "^4.1.0", - "os-homedir": "^1.0.1", - "parse-json": "^2.2.0", - "require-from-string": "^1.1.0" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" } }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "dependency-graph": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", - "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.9.0.tgz", + "integrity": "sha512-9YLIBURXj4DJMFALxXw9K3Y3rwb5Fk0X5/8ipCzaN84+gKxoHK43tVKRNakCQbiEx07E8Uwhuq21BpUagFhZ8w==", "dev": true }, "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" + "path-type": "^4.0.0" } }, "electron-to-chromium": { @@ -565,14 +272,11 @@ "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", "dev": true }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "error-ex": { "version": "1.3.2", @@ -592,7 +296,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "esprima": { @@ -601,495 +305,178 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", + "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", "dev": true, "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, - "optional": true + "requires": { + "reusify": "^1.0.4" + } }, "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "to-regex-range": "^5.0.1" } }, "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^2.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } + "optional": true }, "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", "dev": true }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "is-glob": "^4.0.1" } }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, "globby": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", - "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { - "array-union": "^1.0.1", - "dir-glob": "2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" } }, "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "import-from": "^2.1.0" } }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "invert-kv": { + "import-fresh": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", "dev": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" } }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "binary-extensions": "^2.0.0" } }, "is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", "dev": true }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-glob": { @@ -1102,62 +489,9 @@ } }, "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, "js-yaml": { @@ -1170,38 +504,29 @@ "esprima": "^4.0.0" } }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "requires": { - "invert-kv": "^2.0.0" + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" } }, "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { @@ -1217,41 +542,58 @@ "dev": true, "requires": { "chalk": "^2.0.1" - } - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "merge2": { @@ -1261,106 +603,15 @@ "dev": true }, "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, "node-releases": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", @@ -1379,197 +630,57 @@ "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", "dev": true }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^2.2.0" } }, "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "requires": { - "error-ex": "^1.2.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true }, "picocolors": { "version": "0.2.1", @@ -1577,99 +688,120 @@ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", "dev": true }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, "postcss-cli": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-5.0.1.tgz", - "integrity": "sha512-yrvWl8axFdiXlJuVQRIHM4qskvl0F4/fWUUIYyYo0RV6lOdB0Vcyt8Rv7lBvtwVuNa0pClz88LgxzT4ZzC7UWA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-7.1.2.tgz", + "integrity": "sha512-3mlEmN1v2NVuosMWZM2tP8bgZn7rO5PYxRRrXtdSyL5KipcgBDjJ9ct8/LKxImMCJJi3x5nYhCGFJOkGyEqXBQ==", "dev": true, "requires": { - "chalk": "^2.1.0", - "chokidar": "^2.0.0", - "dependency-graph": "^0.7.0", - "fs-extra": "^5.0.0", - "get-stdin": "^6.0.0", - "globby": "^8.0.0", - "postcss": "^6.0.1", - "postcss-load-config": "^1.1.0", - "postcss-reporter": "^5.0.0", + "chalk": "^4.0.0", + "chokidar": "^3.3.0", + "dependency-graph": "^0.9.0", + "fs-extra": "^9.0.0", + "get-stdin": "^8.0.0", + "globby": "^11.0.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "postcss-reporter": "^6.0.0", "pretty-hrtime": "^1.0.3", "read-cache": "^1.0.0", - "yargs": "^11.0.0" + "yargs": "^15.0.2" } }, "postcss-load-config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", - "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", "dev": true, "requires": { - "cosmiconfig": "^2.1.0", - "object-assign": "^4.1.0", - "postcss-load-options": "^1.2.0", - "postcss-load-plugins": "^2.3.0" - } - }, - "postcss-load-options": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", - "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", - "dev": true, - "requires": { - "cosmiconfig": "^2.1.0", - "object-assign": "^4.1.0" - } - }, - "postcss-load-plugins": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", - "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", - "dev": true, - "requires": { - "cosmiconfig": "^2.1.1", - "object-assign": "^4.1.0" + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" } }, "postcss-reporter": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-5.0.0.tgz", - "integrity": "sha512-rBkDbaHAu5uywbCR2XE8a25tats3xSOsGNx6mppK6Q9kSFGKc/FyAzfci+fWM2l+K402p1D0pNcfDGxeje5IKg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-6.0.1.tgz", + "integrity": "sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw==", "dev": true, "requires": { - "chalk": "^2.0.1", - "lodash": "^4.17.4", - "log-symbols": "^2.0.0", - "postcss": "^6.0.8" + "chalk": "^2.4.1", + "lodash": "^4.17.11", + "log-symbols": "^2.2.0", + "postcss": "^7.0.7" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-value-parser": { @@ -1681,639 +813,184 @@ "pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", "dev": true }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, "requires": { "pify": "^2.3.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" } }, "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "picomatch": "^2.2.1" } }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "dev": true }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "requires": { - "ret": "~0.1.10" + "queue-microtask": "^1.2.2" } }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.1" } }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" - } - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "has-flag": "^4.0.0" } }, "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "is-number": "^7.0.0" } }, "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", "dev": true }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, "y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, "yargs": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", - "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.1.0", + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^4.2.0", "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" } }, "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { - "camelcase": "^4.1.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } diff --git a/website/package.json b/website/package.json index 86108202..fc6649c2 100644 --- a/website/package.json +++ b/website/package.json @@ -18,6 +18,6 @@ "homepage": "https://github.com/bep/tech-doc-hugo#readme", "devDependencies": { "autoprefixer": "^9.8.8", - "postcss-cli": "^5.0.1" + "postcss-cli": "^7.1.2" } } From 01a3990d6684278f15e42095bc636333958cafee Mon Sep 17 00:00:00 2001 From: Rob Ratcliffe Date: Wed, 5 Jul 2023 15:28:57 -0400 Subject: [PATCH 26/40] Fix #873 (#875) --- deploy/all-in-one-v1alpha2.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/deploy/all-in-one-v1alpha2.yaml b/deploy/all-in-one-v1alpha2.yaml index 8295cad9..ade3dc69 100644 --- a/deploy/all-in-one-v1alpha2.yaml +++ b/deploy/all-in-one-v1alpha2.yaml @@ -270,7 +270,9 @@ spec: periodSeconds: 10 env: - name: WATCH_NAMESPACE - value: default + valueFrom: + fieldRef: + fieldPath: metadata.namespace - name: POD_NAME valueFrom: fieldRef: From 1b6e944ae63b4c2ec9bc915cb2627f3442d0f90d Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Tue, 5 Sep 2023 11:56:56 +0200 Subject: [PATCH 27/40] fix(chart): #873 operator watch namespace (#899) --- chart/jenkins-operator/templates/operator.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/chart/jenkins-operator/templates/operator.yaml b/chart/jenkins-operator/templates/operator.yaml index b98e4249..917dc9e1 100644 --- a/chart/jenkins-operator/templates/operator.yaml +++ b/chart/jenkins-operator/templates/operator.yaml @@ -55,7 +55,13 @@ spec: periodSeconds: 10 env: - name: WATCH_NAMESPACE + {{- if .Values.jenkins.enabled }} value: {{ .Values.jenkins.namespace }} + {{- else }} + valueFrom: + fieldRef: + fieldPath: metadata.namespace + {{- end }} - name: POD_NAME valueFrom: fieldRef: From 2c88fe13a8ec8b1e1e07f924a9834f710583b9da Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Tue, 5 Sep 2023 15:21:44 +0200 Subject: [PATCH 28/40] chore(jenkins): update latest lts and plugins version (#900) --- README.md | 2 +- chart/jenkins-operator/README.md | 6 +++--- chart/jenkins-operator/values.yaml | 14 +++++++------- config.base.env | 4 ++-- pkg/constants/constants.go | 2 +- pkg/plugins/base_plugins.go | 12 ++++++------ test/e2e/configuration_test.go | 12 ++++++------ test/e2e/test_utility.go | 2 +- test/helm/helm_test.go | 2 +- 9 files changed, 28 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index e5419221..87fe1850 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Jenkins Operator -[![Version](https://img.shields.io/badge/version-v0.8.0-beta2-brightgreen.svg)](https://github.com/jenkinsci/kubernetes-operator/releases/tag/v0.8.0-beta2) +[![Version](https://img.shields.io/badge/version-v0.8.0-brightgreen.svg)](https://github.com/jenkinsci/kubernetes-operator/releases/tag/v0.8.0) [![Build status](https://github.com/jenkinsci/kubernetes-operator/actions/workflows/auto-tests-e2e.yaml/badge.svg)](https://github.com/jenkinsci/kubernetes-operator/actions/workflows/auto-tests-e2e.yaml) [![Go Report Card](https://goreportcard.com/badge/github.com/jenkinsci/kubernetes-operator "Go Report Card")](https://goreportcard.com/report/github.com/jenkinsci/kubernetes-operator) [![Gitter chat](https://badges.gitter.im/jenkinsci/kubernetes-operator.png)](https://gitter.im/jenkinsci/kubernetes-operator) diff --git a/chart/jenkins-operator/README.md b/chart/jenkins-operator/README.md index e550086c..c2df40a5 100644 --- a/chart/jenkins-operator/README.md +++ b/chart/jenkins-operator/README.md @@ -1,6 +1,6 @@ # jenkins-operator -![Version: v0.8.0-beta](https://img.shields.io/badge/Version-v0.8.0--beta-informational?style=flat-square) ![AppVersion: v0.8.0-beta](https://img.shields.io/badge/AppVersion-v0.8.0--beta-informational?style=flat-square) +![Version: 0.8.0-beta.2](https://img.shields.io/badge/Version-0.8.0--beta.2-informational?style=flat-square) ![AppVersion: 0.8.0-beta.2](https://img.shields.io/badge/AppVersion-0.8.0--beta.2-informational?style=flat-square) Kubernetes native operator which fully manages Jenkins on Kubernetes @@ -52,7 +52,7 @@ Kubernetes native operator which fully manages Jenkins on Kubernetes | jenkins.enabled | bool | `true` | | | jenkins.env | list | `[]` | | | jenkins.hostAliases | object | `{}` | | -| jenkins.image | string | `"jenkins/jenkins:2.401.1-lts"` | | +| jenkins.image | string | `"jenkins/jenkins:2.414.1-lts"` | | | jenkins.imagePullPolicy | string | `"Always"` | | | jenkins.imagePullSecrets | list | `[]` | | | jenkins.labels | object | `{}` | | @@ -95,7 +95,7 @@ Kubernetes native operator which fully manages Jenkins on Kubernetes | jenkins.volumes[0].persistentVolumeClaim.claimName | string | `"jenkins-backup"` | | | operator.affinity | object | `{}` | | | operator.fullnameOverride | string | `""` | | -| operator.image | string | `"quay.io/jenkins-kubernetes-operator/operator:v0.8.0-beta2"` | | +| operator.image | string | `"quay.io/jenkins-kubernetes-operator/operator:v0.8.0"` | | | operator.imagePullPolicy | string | `"IfNotPresent"` | | | operator.imagePullSecrets | list | `[]` | | | operator.nameOverride | string | `""` | | diff --git a/chart/jenkins-operator/values.yaml b/chart/jenkins-operator/values.yaml index 58ceb661..28f622dc 100644 --- a/chart/jenkins-operator/values.yaml +++ b/chart/jenkins-operator/values.yaml @@ -36,7 +36,7 @@ jenkins: # image is the name (and tag) of the Jenkins instance # Default: jenkins/jenkins:lts # It's recommended to use LTS (tag: "lts") version - image: jenkins/jenkins:2.401.1-lts + image: jenkins/jenkins:2.414.1-lts # env contains jenkins container environment variables env: [] @@ -90,19 +90,19 @@ jenkins: # # basePlugins: # - name: kubernetes - # version: 3937.vd7b_82db_e347b_ + # version: 4029.v5712230ccb_f8 # - name: workflow-job - # version: 1308.v58d48a_763b_31 + # version: 1342.v046651d5b_dfe # - name: workflow-aggregator # version: 596.v8c21c963d92d # - name: git - # version: 5.0.2 + # version: 5.2.0 # - name: job-dsl - # version: "1.84" + # version: "1.85" # - name: configuration-as-code # version: 1647.ve39ca_b_829b_42 # - name: kubernetes-credentials-provider - # version: 1.211.vc236a_f5a_2f3c + # version: 1.234.vf3013b_35f5b_a basePlugins: [] @@ -294,7 +294,7 @@ operator: replicaCount: 1 # image is the name (and tag) of the Jenkins Operator image - image: quay.io/jenkins-kubernetes-operator/operator:v0.8.0-beta2 + image: quay.io/jenkins-kubernetes-operator/operator:v0.8.0 # imagePullPolicy defines policy for pulling images imagePullPolicy: IfNotPresent diff --git a/config.base.env b/config.base.env index 600d7fb9..835a8b36 100644 --- a/config.base.env +++ b/config.base.env @@ -11,7 +11,7 @@ API_VERSION_NEXT=v1alpha3 ALL_IN_ONE_DEPLOY_FILE_PREFIX=all-in-one GEN_CRD_API=gen-crd-api-reference-docs IMAGE_PULL_MODE=local -HELM_VERSION=3.12.1 +HELM_VERSION=3.12.3 CLUSTER_DOMAIN=cluster.local -LATEST_LTS_VERSION=2.401.1 +LATEST_LTS_VERSION=2.414.1 KIND_CLUSTER_NAME=jenkins diff --git a/pkg/constants/constants.go b/pkg/constants/constants.go index 49c23ac4..5ac3dc97 100644 --- a/pkg/constants/constants.go +++ b/pkg/constants/constants.go @@ -8,7 +8,7 @@ const ( // SeedJobSuffix is a suffix added for all seed jobs SeedJobSuffix = "job-dsl-seed" // DefaultJenkinsMasterImage is the default Jenkins master docker image - DefaultJenkinsMasterImage = "jenkins/jenkins:2.401.1-lts" + DefaultJenkinsMasterImage = "jenkins/jenkins:2.414.1-lts" // DefaultHTTPPortInt32 is the default Jenkins HTTP port DefaultHTTPPortInt32 = int32(8080) // DefaultSlavePortInt32 is the default Jenkins port for slaves diff --git a/pkg/plugins/base_plugins.go b/pkg/plugins/base_plugins.go index 4961a937..6ea8f56f 100644 --- a/pkg/plugins/base_plugins.go +++ b/pkg/plugins/base_plugins.go @@ -1,13 +1,13 @@ package plugins const ( - configurationAsCodePlugin = "configuration-as-code:1647.ve39ca_b_829b_42" - gitPlugin = "git:5.1.0" - jobDslPlugin = "job-dsl:1.84" - kubernetesPlugin = "kubernetes:3952.v88e3b_0cf300b_" - kubernetesCredentialsProviderPlugin = "kubernetes-credentials-provider:1.225.v14f9e6b_28f53" + configurationAsCodePlugin = "configuration-as-code:1700.v6f448841296e" + gitPlugin = "git:5.2.0" + jobDslPlugin = "job-dsl:1.85" + kubernetesPlugin = "kubernetes:4029.v5712230ccb_f8" + kubernetesCredentialsProviderPlugin = "kubernetes-credentials-provider:1.234.vf3013b_35f5b_a" workflowAggregatorPlugin = "workflow-aggregator:596.v8c21c963d92d" - workflowJobPlugin = "workflow-job:1308.v58d48a_763b_31" + workflowJobPlugin = "workflow-job:1342.v046651d5b_dfe" ) // basePluginsList contains plugins to install by operator. diff --git a/test/e2e/configuration_test.go b/test/e2e/configuration_test.go index 1a924c87..9e56e188 100644 --- a/test/e2e/configuration_test.go +++ b/test/e2e/configuration_test.go @@ -24,13 +24,13 @@ import ( const e2e = "e2e" var expectedBasePluginsList = []plugins.Plugin{ - plugins.Must(plugins.New("configuration-as-code:1647.ve39ca_b_829b_42")), - plugins.Must(plugins.New("git:5.1.0")), - plugins.Must(plugins.New("kubernetes:3952.v88e3b_0cf300b_")), - plugins.Must(plugins.New("kubernetes-credentials-provider:1.225.v14f9e6b_28f53")), - plugins.Must(plugins.New("job-dsl:1.84")), + plugins.Must(plugins.New("configuration-as-code:1700.v6f448841296e")), + plugins.Must(plugins.New("git:5.2.0")), + plugins.Must(plugins.New("kubernetes:4029.v5712230ccb_f8")), + plugins.Must(plugins.New("kubernetes-credentials-provider:1.234.vf3013b_35f5b_a")), + plugins.Must(plugins.New("job-dsl:1.85")), plugins.Must(plugins.New("workflow-aggregator:596.v8c21c963d92d")), - plugins.Must(plugins.New("workflow-job:1308.v58d48a_763b_31")), + plugins.Must(plugins.New("workflow-job:1342.v046651d5b_dfe")), } func createUserConfigurationSecret(namespace string, stringData map[string]string) { diff --git a/test/e2e/test_utility.go b/test/e2e/test_utility.go index 45776235..c08417eb 100644 --- a/test/e2e/test_utility.go +++ b/test/e2e/test_utility.go @@ -21,7 +21,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/envtest" ) -const JenkinsTestImage = "jenkins/jenkins:2.401.1-lts" +const JenkinsTestImage = "jenkins/jenkins:2.414.1-lts" var ( Cfg *rest.Config diff --git a/test/helm/helm_test.go b/test/helm/helm_test.go index 98c76b94..1b7ad4c0 100644 --- a/test/helm/helm_test.go +++ b/test/helm/helm_test.go @@ -47,7 +47,7 @@ var _ = Describe("Jenkins Controller", func() { cmd := exec.Command("../../bin/helm", "upgrade", "jenkins", "../../chart/jenkins-operator", "--namespace", namespace.Name, "--debug", "--set-string", fmt.Sprintf("jenkins.namespace=%s", namespace.Name), - "--set-string", fmt.Sprintf("jenkins.image=%s", "jenkins/jenkins:2.401.1-lts"), + "--set-string", fmt.Sprintf("jenkins.image=%s", "jenkins/jenkins:2.414.1-lts"), "--set-string", fmt.Sprintf("operator.image=%s", *imageName), "--install") output, err := cmd.CombinedOutput() Expect(err).NotTo(HaveOccurred(), string(output)) From 8268c1e4c53340d1c906defc52a924af611f1bf8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 13 Sep 2023 08:56:20 +0200 Subject: [PATCH 29/40] Release 0.8.0 Helm Chart (#908) Co-authored-by: brokenpip3 --- chart/index.yaml | 17 ++++++++++++++++- chart/jenkins-operator/Chart.yaml | 4 ++-- .../jenkins-operator-0.8.0.tgz | Bin 0 -> 332242 bytes 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 chart/jenkins-operator/jenkins-operator-0.8.0.tgz diff --git a/chart/index.yaml b/chart/index.yaml index 74165d23..d07e458c 100644 --- a/chart/index.yaml +++ b/chart/index.yaml @@ -1,6 +1,21 @@ apiVersion: v1 entries: jenkins-operator: + - apiVersion: v2 + appVersion: 0.8.0 + created: "2023-09-13T06:54:41.369295961Z" + dependencies: + - condition: webhook.enabled + name: cert-manager + repository: https://charts.jetstack.io + version: 1.5.1 + description: Kubernetes native operator which fully manages Jenkins on Kubernetes + digest: da8ae04166cb1b64a9dd3d741c6a50d63846ebe8e2e92f09313ad3c6a0dd9ca4 + icon: https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/assets/jenkins-operator-icon.png + name: jenkins-operator + urls: + - https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/chart/jenkins-operator/jenkins-operator-0.8.0.tgz + version: 0.8.0 - apiVersion: v2 appVersion: 0.8.0-beta.2 created: "2023-06-30T21:22:53.308590035Z" @@ -363,4 +378,4 @@ entries: urls: - https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/chart/jenkins-operator/jenkins-operator-0.0.1.tgz version: 0.0.1 -generated: "2023-06-30T21:22:53.286551756Z" +generated: "2023-09-13T06:54:41.354056045Z" diff --git a/chart/jenkins-operator/Chart.yaml b/chart/jenkins-operator/Chart.yaml index c0f605b1..8fd2c632 100644 --- a/chart/jenkins-operator/Chart.yaml +++ b/chart/jenkins-operator/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v2 -appVersion: "0.8.0-beta.2" +appVersion: "0.8.0" description: Kubernetes native operator which fully manages Jenkins on Kubernetes name: jenkins-operator -version: 0.8.0-beta.2 +version: 0.8.0 icon: https://raw.githubusercontent.com/jenkinsci/kubernetes-operator/master/assets/jenkins-operator-icon.png dependencies: - name: cert-manager diff --git a/chart/jenkins-operator/jenkins-operator-0.8.0.tgz b/chart/jenkins-operator/jenkins-operator-0.8.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..913873481da9e820fef791bb7009be1ee445b798 GIT binary patch literal 332242 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ΜapKY+FT8{KM_0NseQF3-#9`xI>2=J~AS^nT1Y* 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

C#u8e|DFU%r7(#CPj{vzJJ<;iYNP6xha& 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

  • 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

    Db}>Q|iXS&Sdtdm_Ef0Fm9@ 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 z zyZHAi6yPv}jkZVF>2(`tB@pjmsK)so_sxA0Sb0Zxx_n+goQ8tut%JJK6BS~BMJA`R2@@nwMM0}2% zS6JvNF&K#0$;P-Ptawq41dymzZ?jD z_O4d*zz{rR2*d2rlZNzy>JLA&;`b9XQW1#d>6y7x{&SNawKA>TA;K{H8HTe{d05=l z8`@JEVcM3FKjG@R@7($49sQE_!8%>wzedV4!RM2mqiZcno-H!bFhbAJ?nWN@4WK-$ z682kTV|cnamka$a823L2o^;hu1(m2U#&1I;yxn{6o9qE6*zlqqUPTL&r!ksua3bWD z>{LAkEs`QJ{(Q&8%GeBAJ^Sn?0!yik1iovt!FTU;7zdwUmGX$Mbp$S+DG44i z*WZi`+M@o6$bQ+XMbh7iGKKm{_}kvU@C_5mdR5_>n(Qwe^KcHPU-*l}@d~^*vGmmMbp27Qe(3`kWA@umyU|E9m1j6?Y4u${aL17GDCzy;rvO&1O4z834>gD*)( z;R@i^BvWP?JlPiPM1EKgqxBD=FzU6y+<90vk+$&B@>YPu88$Fl^5)kn7_XY6(7XMo}Uudmu|TWPnn1T+OUWQ-(RaT=j4{@x|B*COZA>xD*N~11@1l9M%!)b#GFsU zJ};l*y!#nx1&JN-2ogJ_M<$IRKnxS&pPwcZWZ0uS^!oj=%b&oCoqAPnHl2UDwr?Nc z32sj!yb8~6yMKZ$dLe7;$+IA5nY*pE&1nxcHDst@stH*ifZA2vSxcNuz0f+AA-|fx zeH`BzSn?OuJHIp;KZ~a|AFU)J18vEz##A74f$2krKwZ&m9X zBqZ(`0OdvIPb5h#Ask!w8Kw&Bocj$-%JW{kGzyQWy)qfcca}4j;C*mYF!>w;lbH(m zhZKOrpS?OXO*nolNUIfu`<+qV^8O^n2hH+E#6*H>F6?Se9^?I7*0p~3dM^@*M-lD2 z=s8M*^NkDq2y~uInB!0wh02X5i|WQgri(796H(rl=XBp;ao&2iLr2v}`+m*=iRp$t z#y+xJtW+SXd~)xGy7SYqxS4o})J2N{4>eMA!j3at zSzd1nApHG)E37w7^D#g|p{73Gc}y6%W%7+Lt@d=0rKw8l>Nyq#OEcIL5LC|DdZ6PM zfO~e1KCJU29>hP1+#eT+LeF!?`WfgT)~L2U6Lgc(meOq(2EwG!7E%%{amNNcDd~5u zkI@nY6p0C4R*`TGZ?V`-ITMlT<*4@ou10Suw(YzVR7SAs<3hd_WZArs`CN43eI`Wd z8DUI@2uuNkVx_TA{;uq+5)qG6_36XVqnd#0A^c=T=qlGnj<4*ypL&)fPzwhvTwh`N z(@ZOE)DkL8mF3J<*M-NkMe3+Yi8m_ZmSgvQLNgX+CI zaC-udfCA+S+g0_YriRFj*Xa4A*dr(%1aUpi1VHu38~#h#V{v8Kj2r>imwqcq!c7z& zHxyuT$qVr*8Mo;dqAZ#={~4j;p$NHc?2W{F$XDx|&Er;Hcm(N@oRJ})!@xP7hphg5 zgVo*QKDfiL^1BI^xwcA%l@3 zp=u~i@N!j*A}2 z$h{lkysiG`q`)sM;vJX6hbR@Ix9s8E@`IVT@g91crrzA|PZkGuM*O|V#|ix~&gWq< zh!V#_ZMb8d!MDq+`0+!66JskMdS}Qjs)y#Z`51iu4#_~QEOyVyt$s0!Eiq;Q`d{%{ zOuJn$=RRA9Ca=c630%ZCxrZ9kyC&zMm-A|gLPtebD+Z<<7wS?_@DAB-ko6ujq2^CS zg&>go>fYr>eMB0Nyl$`epie+N9`(0n7|>h*Yn{6qF|-?4-Eaei4|L$0r7i5f_Np+E zuy50NMeDeT(UFf?Pi$7GZ*VpPxT##T&uH4zE7tO<{qxRigi?-Z*`vX};=atIlG)uomP3H~*o$mvSiAsoR+Fn*h6kbqwC0^nRJR&QHu*HkHkhmvRK z!`caf9zkuKEUz2uaCF6wA%0Smol9cXf8afA=`!{ z;NT`f<&;b2`B9Y&%C|d=xwZMXt6n<2%iGxTT>~Y)bJhUI`^#~f%M2u=`DtL9yQB49 zSD>@ec|59!)$ejFG^%GO5ekE6U`17IBM)nL9QQs#_h`=@O7-M$&27&P#7(~Zb-QFb z8j6s9B(ZuS5ddGpaR0%&Io#B{*{?|&{HG3sjPS*4WnadX2r^%+U+oVx{}%dM!2;l8 zfse7hUYe3E6_uF1+PYJbKtPNLcsV3>XSIA$h zUpPkf<7!l%5O@MWRIsT{PIbl0XX<&zn*xQa+wM1fa2gwGPaoj9(_guDB;Xpq%HBIQ zt20OM@jtw7KGaktO#23yq2y{Ar9|pSe-1)R!Gv(U?&&AvxrMy^58I^l8+6TM3%;ZznMk? z?(wT61isyS2ZgST8$!-M0$Oj6^gaY& z=YMn!Ae8QjZa^hiqllba_^~D|F2aRDSd+2u4NWPmZyX;pjligGrgiW($jy9z*Rg5v zR|?bG?jLBEzG$}c{P2EZnAc)QZW`sgMVM}#?OwRY&+5N$%+HtT=etTs8-o(a;&9g? z$mCCTAMI!_UXPh59~=vyU2m=F^<`u1)D7+SkEjgEa&mgD$Uq zI^7r;59|A~8u&|P#F_KCI!?R*i{1r+M<#7=Ow4BBk%nA#q?UO18EP-3w5XQ_;L)ne zFq=;}12|z<-Zh%B$bkq;Bzw1n2X8Jh)_TeuZztZQn-M~bTQeptm860kc3Xm`yO>Da#MfMDzxpet4``@>ijvsR#B&sj4XhAeQpam18XbW>(%g2x+1c%H zqzS32)up59as7N%^(Gbl~_pMkYB>8Mk_iGe&7;8X2;C<6HIv7siB__0pNEf*(gA)mZ7R_-tRy(m1nc+kJ-984P3ZK{`X z&wslbEMV9AsLYU7`{9XdzSyUPRND8yPx;)rEW+}458$t4vV0q>?wrQj#cvvd)z_Yb^brX-aH)Y_I)28ODM9mp=5>@ghY!dGo(U=kPEl!sAdW+!c>-0B3pJ7V(gQphLU~BZkS=r`nzYI=lyvaEk$BORqy{mk z{7YuaJ$RMwEGs)fzQ43l^pg>oA18i0KNPV2Qjz;R;{I3&?FJeR_EXh=lCLrsO?-$* zahaavGK)^;G5ra$;R8HMa#apU-BP5~0FV^+ufrKM87k5oMf?Vi@SQCr;blf{4K~^n zSdT}`MiO%g6qZ*G-PLi4w*x0#%lBU~v5bU8s|u~m;3cQ_+a=o8L5($@o<9Zs^I?vN z*79fLHiLH(#+36LL!a<%YQ$fyu8XQ5L3ce7&AyDxs~-UOR{qB?*Y8eAQSG&^fbysQ zTHsLE{yP4gdT~kf*yS-_{^0Qic49G?^-KjC+T3AteY=C+(Z^fX+4VU;dVcG#=jXwv# zC*FQOFNfs{axA?n%nckhhycVQ;g3{;NS$I$N-XIuq++BG01qehFDbw8=QgaLo>FFS z?x>p5D?K5#t8jOv#qXy`a@;F1koTCw@aJXJSFJsr(e3vSOw>+0H1noD3ph$YvZiz@ zbqgQa-+6>K7@_x!e&`Rv`7*9cX?sB7@Q~FFZILk1T|#Sg@U>5~xelE8mvctCQ;vg36ebqX+A(T(2Ooee9TbHyK{6{zPezy^^ zNZ2y|a13EAYdYvD`n3@A&{3I~2Kr(XA{g8sn7dZ2>(z_=sG<4R3>k54of`L7mh?z_ zEbxUa6?PG)j3bKxKBB>9w_`SVhr^PA`E%47eTE9mYj~p#BF!ESkgO4FMnIw z_qW{s;a)HFQ4I1QoTrKaA_L)*Iw**WY zE%1I-OHCzHg2jKbe<<)ky^r7e;?oIm174|jm|5^#B2Quj1}axWh$k9V&WUxD&JQDL zHgxUA<;OPSf*s@|M;Wc-uX)e2wlB{TRJZ*NbIs-$Sq$}zh_%g}dk6VOe=^`e_v@gG zqtMQkcNt0(#7a+I;ef#cDWlXn@i;>5qttUzFX>9)nf`me;+!gQxUa z5N-Oc_xs`+S}HOAk&`cPbV6(Z&_aIxN`s_3T$MM{++j*^Qg*d;^q8Q*@1!GD8q=r3 zKGDcvBOqrjC4k=$3O@EBoNuDkfNL_mdR5-kJZO{TGcsqsaZnubEdhPXAO3`-E+``( z;&j`JrA_##J0pPF7~aC^sc~9rB1aeGRxqlELwZcGz-n~@@#y8G(cH?sfE5#z<@>q! z6T~XZ4WSUojiKlYKJ@M|$dxb&IxBEF{9lf%kwffIm~r_DLVaPbs#;WHhiCk6hp1ds z+)%lVg&`%F&;1Oybwra=j&2C`lHCDQjy|dR-7J^#ay#4JY$p;m{@hi6Bv6{?lufR~ zmFnPjt}(i)%9oNcM{p_DQuTN(R`;zpXv;|G{y8=)&FtGop$afy+o>sBMBN(K)z7rMGuApP15va|CROThHQgopZ3jr7hBM-+RIF6k~RQ@;} z`Xkz=b8tyUUkzR$I8YTP8_N{@%U0sD$@Tdz?F;EhkEoY+*bmz)cmE!XFY-)Vxx671 z|BA)sPqvLvc;GrKNIvSSnGqvky}ZrUyax-|nMdf>?N7=j>F-5FUPFhw^Yb8X$COMf zB;1HcaJnFfr{^o*0G6T8|Jc^Sw=vTdPggAsuoT4+ZR6G_A(^v`Wq`|tc=I}F=c%vC zxH^Nuwj;Q$OX(|Y4HW8Qqss~r*KF89_5;;j9iLbS4FsMomoY7c|BSDNTLDz|RrwQ@ zAE547G_~R#1qTXCeg1`4rxVsHblNg#m*fC)zcVg>QT1cQyspwEuIo+BQWOG0HMgc+uc%3b&SY1HgNWLMhs@ZTuxL1osBs4Gq z?WNz#?c^@X79bSzmk1R053pS7aDpS_5LJWQxtviz_wU(X)Wv(upN>m5jXWL-MSl!@nCcL<%^(}{ z`QK*3$i`8q$rE&|eALjQSnngJc#u?5{?{T<0z}t^YZ}sJ`LCSu{XQwMbs}QiV&{bM zbabk{lP^!9PO0h?b_u3X8C(4}NT+xo*eY^?d!9kLzn{SFd|jRxT6k70-&Ve%ytv6Q zNR#)(Oz2*MH{lLL0(!sqK zHTKC%IM^Jlp6v)GViK*uxulP4DdX4^amqia$(HREKLoRks z?c&Z##oxC)g~H6?ZMykO`8(-S$%jhQrShN-3Qb!1`mqQL|J>4wiV*bm>oOPx*QPQ- zT#%tJI0*w@6|f)wrwRmk{*r(h=@hw_+0pYY5?Y>s?uy{{b5~4ATn?8V-2;_eq55Db zEVd=w9+1(~jJ#c-EF|%ux2N(yMD=q=qT>VLwq$N=5?-CH=L{O;`?dJ0Cd4CP5`5l{ z+Pd5tLLoYiLZxO^xlebplb0H?21yg@!Ps znR%I;wszG-P(3vsS^V_afT7}*HilksbgY9CyYp|o@iCA)$bM?EgJ+;wEc`ll+(9Hi zK&c_D3GixRGg9*by)%Qvbn0;Y4=@_Lkc)jPh-s&NzA2(w3$e=55BqG$Un5Ebz6Cf| zEl)@t%3VP<8*W;D`*KrgFJ_VTViizTLRqA3phS{Z!2HW&4G&6=LIWg`D;~8d?AskY zH3>Pp5Mj@+k1fHgQ#LXsKB@VWJ{`S|F#Jnx5YP1v@7rb|E>TN+b0NcHqdm?kZe-)~ zo_|H%_n^_x$JJ(9n|UWPKuwo=KD9$uR(6e{+hhBXJqZzvV~l(3(RnjMy`y!%l===B z`x51Jf6yLZhIYycC-wj(TX@9I9cB&?(pJRp(-EAexSo=AB%kyL;P@*6i|yj$Rq z5J}SoG#GcK1A8qNv5C#baHA6=1#K21h2vH#z`<17klR_IFj6$~n^bHQ)*-7%jcjfau z1;|NO=$|E{%qyAe9~3{S@mHOHs~H94b!_LlWw9H62I{gC7b6R)`rC6$qW=|34DB2& zKP!^<=Z%1auK=<4@}BEjz@89@$v#op$8%2zv&zvYQYiL8@lKwvA5o`%?zcH%$Y^GT zRnZIwK$^DbFl(YSV;#gx3j%`yYcTA9A;5QN~H$`7VwI-5(TXxtyUg zWU*)q6ZGKiO3Y!0T~bL}B0ZNdo2>;JRxDHD+=X24*nQT=V9dv0OF39|dqyg?_dJL4 z!gGcAN&Lztn`RCVdo?H#=lQjjMxEx7=vAK`WK(nH>A$M!lq;K6Oi{CJ32gZ z6+?>ux~wQ@f$e{ial4MWmseQ6N5LJ5rM5y=8t~);kIBc}+i?QnXGU0Z+-teo6!8r4 zrC3oc8GZQmV_-D-Xh8HX$(yc^gdIudYkaMZ9T<(LFl<=56YB!hoARGOm=f`(7P$$PW=>4 z<(0c6R&Fi^^AqFom1D&X`dZbQA+a6hSlsvoO`EmOtlMm?3Y?9d6P_iOvnYy}I}nSh zO^B$2@gOkE?>}#f&|l7|&PmAkE#Cl;{i^{mtUi0)ei$BR5nI%J_hhaSkc+r~$wiAN zbB*E#@#8U@y+%f1PvpSR87K{(s z_ro>w_8zlh-r{36sXu5j#9g4_bd%wv0r-&K?DMu!=<`^_SQDb{Tmq)6Vu92bgCINF zoaFLqsdq>;uOy@7wOioQ`j3wk?I6m%T0mFN{_~iU;!{@xy7LZ~;Dq@tMuqmj&M=#Z zw-rhsRf|dAtI0e~Z@(0kkI44pO|uKeZPY#eLDFEF zC10H-+^%B4yxn2JPe4hPN{kc%FLFG?6VMs6@fxhd?dv%1kP_F{pc}*az_ncklhWT1 zI&E+58~?f>88vlRSz2!*WHyL{d|wAelvEzL>4<25^O5W9}x!mQd zeZ9*sK;$itH}IaYAb+4&8@lFfj>nj?K_NsTg}Lf?jTqOf{-u$YeIX-yqjkp=_P4$G zwCu!O;~uR_7_S#YDdid~#$!uOfP=?rofCaX9i-(uj>Q>`?M+w*xuX8=l36?PgEcaj zsu0llcDeDy>W0}Y(G?DF844xBZ_g7d7g>E%wFaT3V_&5db9W2$q)Cs!++pweGhku% zy$%kw#wh9x#9FEaslh6FM;!)NJ6`wU)rFtxYC=k<`ngmxp|_MeocU{@X9Po-AJ@%V zC5E>VR#r*4LLuH*dup!(6wuDHjp1DZrEMWAq_=`N^GHM-m(!H3DJ<^9Q$0_JcxxQLfUcg?vlHH|^3bCQ?u@{UwK8hQQXb<0M@j>YB= z8<=Z9sqrZU{IABqgWMA073-kgz?%Hz@NcW}Qw1=z?i^2-~}akPvBHC=Dc@tpH5z& zYoBxaV0Uvq659JfSz12$5-3T#RIV1w861ZcIJ92(pA0mnH3`WIruA2P&YeFe_NZ$1 zha2FUV3;D|emw3q^Sl6YEB_4Zdcy*CBG?N>Fh?vqE^@H&vpn%tYxImi2BN7fox>B) zRt^06H~*BMD0R*Fig+U;p5rmP%OD$v~|95lc! z%IGBQ5xl|)_|2p*;)c6+z{)ceSacEZ7ia^>a@STI;Pq)ViO zn~U$84Eri=MLII1w;QPZNcRL`VmSK;vTf;GPz*O>ia^fja!s+su$wc&!zTJ2&VwVn z@F8p7)p0{uL$}{t&Jeb8jZqGnm5aIViRxojBH{gC-=flH)ulf6#$}ozxj8HEb5ni( ztT4$7B7Q)?&}lzB?}t#lTvv$oL)f|9vY1{FXGEU%Uz&BGj1%|{#VK$@+95Xh#FBqv z>cyyxZhwfyeg2{m@|OXMdzgCYTiFScNbTv6vxCAJ*wGA6Vf|Jpx?|UUMJJUs26%bIb=R3e&k~9hPnAxyJY4o*LElyDqQ> zZ!E9FZEZG`JS+BSw_p$O&}MlVJcTx;3EJs}9MNgS)8>j5V`iY5!0owCXj?3NOnlYV zK|^FDbWsoA3dC*iTxV~;& z@-NOugDGjNr(?QD#Gt8^x`IPc>%-qJz;0Ym?90_Ns0-f5gFs&xSV5Qcw)LFhSbeQ+ z>%``roE)S~2u*`;G%Tn0o0N^@2;u(T71n@#-H~%87wn5gtwI2w)v+l!`W{Zlki$n&)n+J`B&!7 z+luL=3*tmED^xIoT_i7v>7Ypc8IV6t6MlPi%BLk3v82hh+r{~Hnqy@nUfe;xh*t%M zzVGRs#T$WqA{qsGz3*i`Q-N4S@QMi81iQq1iID*iXjR6gtTA!|q|_tba~3s`Z8Jz5ddXb$-a3Zicd!FD zBxnGm$+X*tR6Z@fW)r3rob#5GfOM=odrT&#Fcqw4rt-6--G1!f?_=G&7$NJ)5!D?v zh|3&>$3+?zpTv0kd0KYo-+RMZqw#PD{n;Aa?lUaP&(R@l zc@qM_DKPsp{V(+UcamMm72Gr|&pm(L_9rC1rb_HRJUT`?Ea1EO_n^2>+1 za)44VZ!(`CndgyS6F7C>Q5VZ}HD*-`ZfFRZ5e_&mIv@?^oFIN9M{pCt959;!X(#6X z#foc7r*P^tnY?4|x z`9)IO66&I*to(zYSX;*Kp0I~lJ6^c(8JerGvuMB-cs}NutIZH?sD(*UEcTpWzPo&b z_8OxhcUa(t@MIMIAbeX2xw+gYU>Ex->A+R_Pr-O};YTs&c*iw}k6P?oWjfr}`KVvcKK<^`wBk<-isI!^%Oa;UhdHfe}*pk?N6R%WTa&f+KNfw@}D$ zJe}CX#B$ltJ57ddaJjbNo+jF2U4cU#@K!Jye1=$(_Tf^@-twopRg31lO}Uys=wzM| zLaM6y7Ar)9SVS_xYVB|8j5l0nM?&@V)lbCf$xIX-|Ls=w1NI#i-d2(!s=(`GIXv~H z-=Pe}6MbL5tTCKaT9}9cP?+w(8!nqR64My~{*l~@BbXjNONLxj$ifuTTa|U|Jfr;_i0yPK<49_P54UBu z{dm`pUSNrHgBHDVw1j$!q}^_(d=0pz5r8T61jxKRh$tG{9? z+EUVvL&*j<`P*eOHK2zd3IT>lsLkk~h9TaV+HDr(D{ycPFRcU*{HtMjJZSdU$SwmF z31iTicTIEm|GqO(EB=`Zr-DlUXv|WO9~iyabRgnTJa@;MFN}vOg|87sOq? zyu;ovuq**{ikFca!Up1b9?nXdn?Qr4JFN2vE+Qd}6|l`6rnSbXW3heza@CEG6dW7i z`o(brS|^h0XT9l5#-4$AP4r9`Xu7nmps3W@bS9S~72h=!SqB2q#^agv;rCOwgO`-G z#^>S*%sRINf$G8&RZf%oQ&*n{RCFd0`Y;D(EGNjG&lS>H!yqa}2tZ*UR$XF_^vROS zHex~oOX<8vwz&2WYweA^_4QVlDn=XdssXAs{efy75mbe}r|LLDzH4}xcB}vOfA3s{ zgH~+63tsM)O`on=ZJN7xA-3|tzXwCJZIGo$NQW{1&9(QMftcM@9B}m|Q4*OWsYCN! zp$aSm!jjAn;|G7<-2?J;WhEss2=57%qA#xCKmldx<5L!EK^;5@RPf001;B{!U(25e zWfQn_TwhPp1sZuA0m8B382FPZLe)w3{zW|`J#Z2eNa2!IFw4z-;)pRD@lBVoKGtRP zUhW{}+<$&I$F8k8U_S1=T7%=>%9Bc_jvj&U>lS4_mqNVP20AVJ2iG|=n|V;Dy2cPa z^=_P~2AKdCE?A5{WmM~u`D?&V0yMaE4u}-hh4UOIA^cC<6^aLex2Z^07IpUn+QJMm ztvS8jpai0j9Q?1Yyw2`Grh8y5ayklXeAA;hN@`Zt{~pm8Bg-KZwiG!39I2|P7ro!I zqH%Nd(MjhtaDgHHeKI2G5U1~h=S{Wtw_FRxb?|xOkF2!J$5H9f<*M@r;Y*P1bQvz|UyJ>_2xaYM<}0^P=#Q6V9g55*d~EqARv+kjy`ue)6V zmK?XyOby}lMPr-DR2Bo2Y`b+BiB`3TV5z}56p!JIYb`%58}DL|vq<==hMCHVMFR6U zi#C;Xj!UOdKrBI3c;&q=X_)K<6f#Zs<}MzOIe2=-BxPKwb?(3Q+8|}l({cQ>PVbI@ z)VCP`N*E0Pn-jdOXPoy#>f`lCIpaW>eDF1$*niyVI=ALu6r0)__>r1<3(sF;2l-ho zh&EkIag^MhyIV_Z7>mNI3dqP@*=D?(`=-ZMbKnHxW{*};gDaTG(fzl_S1Pq6nGkM) zl%kJ@z?HYsZp}Klh>hW@kkZ5;X|TB&DfVAnCVaphTNGvHGCbm<*#r&gTS06Ryo^SI zuapC1WOko%`A`bEXnV0Hr1}V(dnmX?eGTGLmit=q6%%eqNpxv5#RjYbDZxJPlQTwj zaIeKz!3e!}r#eAM*HgY>-{MqS(xyAf+&aH7QsIEd50uNJQq(1T{Tqvf;^j=GjjH>s zART!U>F{q<8qfm={)-3aDMaudmGP~Br%r~v&h3Q%Upa67vz#qE3R-+KJY+*7e&@D> zGX{$Z*{HN$mW0YZ>mby_bG?Lry_gCT?U&d$EMGN*;v3ArcpjH(vF+sGaQWsS0n__D zQ1yy(0wd;~{ij6qbUyN?Cij+a3K`8cV^QXw=d6O6Cx%UfdkHvxDk6RS6<~=g)1%c4 zf6>|gU2J;wO!hA78w@ud*}r==oyy4diG@EtDR}j^p{9&oq4@+64rqC)BP73c-Zcs1 zr*1i%n^BnZdd;A#c-11-5p;hm=MB^-CpuVv*^~pQx zr<#}PWZBzwZ1I1s`Fu^!O`uXQs`tI-kE_&lsrVoI1|ik@^gm+lpJZk9>h8T{x#E@I zUzKpTf1Px$4_)XF98E-JW2IJV9iGV7))qTp=D>b9FXH#%2yQ*#>F0N`?5sehvCfz^ zh1B9yn#p`Z9)9kYH|Cc6T=?W^kq)F%LojzRZIqaA zH>T}St2@QXF>tY0>{9b*+AxZGcT&Q!4{ifPjhOot&bLOI5RYRK-x4tzn?itzV0WHH znLbYC#AF?qQjifyF-850=R7e zwG7@R+Xm1=8K8yOMA5O|qJ=`zoOjRp{~+@KxVIAjV;AiUMX}0x>#<2C>O{o+v7;6{ z`swrIX{y|Lr=agWIrQNP>lI=I0;O-pxIO)xm!Atlbuj-YsTOV(dotOEvk2d$-rg;@(7pp{V>6TSr-Ye;sk5#;exg02Wp7n#w zeP0Kzdf9iJw&Bj%&*RXV8Lc6+fo*5oT3mpo#GOoQthkoew)nQ@Ic>_h{0Of6grO7s z!OXXipNKZ(^o}3X1_6WXfbX33wqX9{566UH2Sz&P(j*oX> z>w0Ykby_o#x=2pm$w8uDHLGpD(>ELuMdJIr1k28hlW+!|3-*VEK!21u$_NcpiLG7POoDwCZ&qbKyLT zF_XkAU$qUP)Wl{<0m%11m~HBZk>nj2KlUyXQ%l~8AGX#=(1~xa7m5aoSd8?QU-}P?({CypXFF}KA|q+ zW_gnHETE0v0MIIJIg|mC_an3gb8I?-D5@@SB~!vJj?esWsDa(*QF6#^vqy?JVyEa5 zw~mIuH)lq0<`()e^ufm&U`-(5t%F3LMlA#qo^A-swmvCaRXI<(+HTVNHXmo!UV~u` zb|A{t0&nT71(_03JDf5XtqKkvdN+1O-!mS(zrA>T*Z{b(I3(El1V=1Ze9ZZ@I_R ziX;6Up0O1}oXCIj;h`Obb43x3tnNEs=!J?@P{ zWo6mysvDYPClJty#|8bt9a;3@!EAsVfX-JZEnq>e9PH{oC9OUR5=d!Y2)ylWoSRlB^bd_K)#g7_ZE_3>V_=4|4wQ(pxmF$+GaZGKEVdtpVE zGgDx8Rj+m@jj$IvJ3kp*+i#NI&q~8k>fg&}oj*6AZ9DF*9}%E9{*|Dc^23~)Vs^fj zrvGN@;$zgeuSb*`at_RFD_&#t4P10YlCC}4z5MGDb^mwW+z|HtL(M!?mUQH3YjW(Y zINIDk{gh>;#P1qoY$z%lvi&)DC!azD6h88pYN(^XB)4RpuukCK{a_(pGW0JO31Mj^ zB>7#-8*ZH4AiGy*V*hWEnDS^Y@#bmPvppYQ3*TvrUB1E-vCfu2{nPEoyNv6Z`@R`B zPhF%<2rV8vT94CyjG?m8K>-09F>t@Y*-G?Bu+%%$JPO6!EC(C*I4-kKHab|$zZJn5 zCXxu$cYz*yXZZ_AhsQh>;+6v$0hbym&weEp_*531VYH9F;3NS-q7`?bYMxsV7-;Ty zVL4@-vX;!zwk;y-^4Dethe_9miVS9dX4KPK`d9#g+l?XU7`jEfdevnxp4bhM+hI z?&!Ic_(aG1@cv?=3K0=TBGas<#|mzCe68eL=5kea`)#4MBNRM317(4k1`O<(T1gS$}J{Y@?iMDavE{ zT8R{zdO0umXQelh0}nR%u>J!%?iG2Hu9!=%&E$B&uj%9}#dpJsw_UmSCW%>1$pr2B zdPLN!VdzErHWiMxh78wK9Fty$n4YfaOAVOWA_%+xv=lI#=bv?<%Ev2V?FN(k?=RWp zUW6FFr?Z5_qiQ#uhUTb?Wyx+Eu%26eS+1(;r~PD6#7%7l>${Rxb1J{&`(7JGXD!Pn z8CPy<-#S@zZ){Jm@x{no+xOKUqCY4q!&E=}{&9gB0y*8@@=MB5{qPcwq93sG#ZMU~ zQM>2sB|2+-guGyG{xh=^Bz9c#J?2#c{f41w>nPYdE=S74pVk~W0!4n6M`IM?LWTY3 zn-%K}zlnu=DU0aPPXtSzBhWi8P8hF5belNKEFNU*Z4okk4uj2`ZEvyCr$1cJ?!JFd z>%j+lf&N1*J=fswvCVMG(WBYA78uRVH^s(!v=p20BpufXXgOwil+IdiU=?fOr`g2? z&_M2zrDe|dmAt*sl-5}jq&}N+Ql%UL{xR`D%yQNovr4sVAeyfw6%bZceilWinR9Rs=F3R@5uYVx6ZG? zAU9UyG0xTVj0X%~M;+p66 z`SKY8d7(@*@{A-Z?yg$x2ro<)6RX|R64W_LC+>8zELZ57tVzarpH}4zuEmUeMl3x+ zI5BFM6!y$M7sqei?E)1|6*IjNe)_mpIBbV2EI`DlYwG2%?pk7;FrxRa;v`;{9n(g^ zo*fiq65a_ThT5^$z4A4NR>=$C3U8SX40mGSF?zxeqn*1*9z8wGaxMG?M+;?5X+{K+nn^WKKp(K;EocUS+pO;bZ7OpA($+-Kboy zui&W3o8@&>iMh@fwOvf{)|XCkza(k)$NlAIUw)_|zy0QR%V*WpHo@>yQDi=N1N`2Y zC3Rl?a6!+ds_Db}oBA0Px`ui-08>*E)z|`B~W%^l8*(myFLvndf>gli)@Zs^M z#`(E9%}aAPZi?3%-i(kl-6!^FoluXXh|$e7Bb>X$_D#Yod*p@lWN`ijf(jsJ+VBmI&#Or$nAV)-U+8&Jqn&l(ur{MDmCsJX!N6Mw(9s++W%&tR(P4{Wlo->kV0P*I=Ju#v56U)1owZcubc@*l-)tFFN;vj<`ngzWS{;VCEbN1E&)+Nu^(Y#hVl{XQ@ za*fY@eV{9Y)BSV=G!t$ex5U8{6w^T8))k^dKrh7f8L0K9U&o}=-6Ybzq}}EdWk)?< z{+g~ppHXEzJXk_-p5LY`eOi^SZMGI&vff=tJb3P&B^XzQ-==DmZw`p-vc~S}F3eBM z{s_P^>&V`k;Nh=!fdx0qnLdOyI7thGAH1bU(rl&OwA%)@nu^-+G%Z3V{_atzM$y2fZYro&FG{|i}r&u8;61A(oy@5cKlX<$r+ct=Q{p4;|I zKF9sn9vbI}{~NM$nQ`Ugc7>>5)$IAAw`;mA745NNVigj(oji^M{_J`x&#t~2S+BUO z$_#a|uvhVFF5C`(Q7*HwGn!7!L|T4@LgSMQ=|t5{Tse<=MEE>Wbsfid7#g=SMjv6_ z4`aFJ=p6E?db&kGZJm%F-5u)!+Yt^s<_f#ECiFtc#0N?>w&ItGJ>+w}Ot{(>fxGpH z-do1t#|MlRjYGkRQdy{q$U0%8o6YrxuZ(a|W;hI~-*f-7VGXQ7>YNeIgF{^&#ai~1 zE(}<_gv69b!FS6G+;)}ciq#Wl<7S=}!b~qoxV?v&mdeF!4MtfbUf1E7$q>`y5^kMF z(!oA2&>?RvUebvUsr2YAbkjJ@$Q^`N_cjDad+81$e;9gmcU5m{z--%0Ic7UJ`aZx9 zzWxWIHjy`X9jU|#KoYN8hOVl;DE>x@yzx#~oQ!YQvha;APpQP~m@sRJL6^ehASol# zJbbPGsY=2Zg~_6r+0(i1`=SRG*Qi%KITJRB+IWVjcr<)4fNxuY^zbVGG{l+rUs}c& z?-K^~Q!IdWmib2u_&KdiiY`noevBe_pj$IY26!>dbo3yWqRi1gaThb~QHQ7+{EPtU zK&jcE4?$+YSf_REAaKy+GLjlC?aWN^oq zF?TqHNI*X-nf)PMt6~vST`!kEwDzq1$Y5{l&0}{&xGRbAFSiIZ-VK}9bcOZ78Zee3 zMlRaYx?&6MyTtNi!jHPZ#+|z35pehM$+XS@>3anSUOkjT9<9G0+8r>FQ(lJ%E_)F8 z#50IoFpEt&7_(C>|F}ZKdf_~>3U9WrAtKfY8%;`vzJWe}>pItZ{QMx+oCvBa8ZfqO zIj-1J1Vj6hzOFyOptnO?@X~2cxL>zEDe%>qM z{=GMdwrdhH(oq+mex<5$w4Yz&%!PDwqZq?(XX6#QCC~3+ShfJ65bL-xk%(lv$vlD7 zf0-0ETm`!O>0wAkrd-4Qsyf3H!bZJvF+p1so?We$8po?Eu%33UW5rnPo6n26byRuv z61n$N_ziGLBm9B#Y=2qkq0@? zk>nFXRsC31i&>uFwtZJ|cY!s+8q)2g(`ToTE$aE5m)MXeCtiP5B%u8Afs2EW0SP|-Ul5| z+R$7?Aldgxh!4)Ukg~MFvT$6Gw%~4BYUqQYnU|YvX!=L^vpg;fyp;TZ&hlN>h_GKG zH2r@(pi}R^cnyDA_;f=*5mWI)j?bpqv6yah@ii+a(IBoDX^l{PVaEfEqs%+)aDs^x;!k7gIDSYWd2Si<9igvD3N7 zZbS!Zrs+v6pSBzHwB0Dbw0_d4OI``g6#htnd`ikZj=|Z#?70MSgX5bKeb?@T?yjBt zDmuScqEmhOCoR>njzxvFfbt!@;?*mvDbt(DA+hMV;&`m#Csy8}5U# z%}4TnpIL#9ai78|X-pt!;JjPHZmn{rXQfA+o~F_{SN_1jb+cHPdD85T~+W1t5yG^k=6hT_n$TKsGskAEgD<o= zJ{p({Z!OR)S8LV(2=eSLTvP1N?MUQ|(-jB9*eiA5%=de-;}7mj4KjbVI5xTe!R(%p zMO{dtOf>%AWT&>$;z`Tbsns*Q!q)F%iUdUk%l?LO((P^6c3J*GehS~SF~|k9PWkfQx@yUhs31N!lCi+MG-Z=)q(XYc-CxZ%hU?-H9_%?^v!F+ zgE#uM7|0U9Q+LOARerHWlPv&qk%6a+jPp#_9 zeB#wSg=2vBc?W4gnM-_LFKmU_Y3t!TXK{(;`c#H1cTI<5wTG2w!K$5&PZ?h757xQ= z{2Aap8KdYU(S26AW;asDv=UwvOea}uU4W&{s`jhcHUjww~sAk}$y{*B6sKXU}{p^T`*CVEL$QgPL7TTC({ zpg-=Rj|z!YAFUO=qJ0PUSo;3XklR=*a^cDC0B`Y65EvhB;E$^Ca{ zZE~;Qz$$_7g=f?)Rr9@y2WJ(dIYH5>$!h-M=S5o1Yde7KYltA@8OB zR|I@ZhaZ0b<&7Y06QBFco`McTo5-hW#6Gef2K7M#b5E9nwK@S%N1a1itHPnQ+OoFY z#@%2+Cc4Agn`>W+<`#`hFBF1?zkuW;kdyRwu}e2J#qt*umlSHyl+oIRUnc(HP;dGt z-2)ZUw1Z+h(}g#AJ*^fw{Hk}4aRR#%NZJUf_l4@?N?oKY&q`VK@AuFLqYPb)aLIpb z3|S<~h+~(Kk|Ju-N89XB(7b;*rwAso?x=fj(HJLrqa(&Uxju)h%uJsE>H+CZ;;3zc z^mqdS_w-Ckb>*QSaTwu2DNB~C+_Omv_7;8HX09*z)}r9SQ=XTu0%oqZGN+j4)8)CY z@{_JX+Sw={h-m16K{(`}_TVqM*?_W3Z=Gx|%hoazFU!+X!%_$PR{eeetf#HNYjF{| zlpG}RXDeLRq77b&Jbq0-r3o5w4QsF+i8_q{3OJ>cNRLLbt@9}|G}kXg`H+b=W!A%( zzw%B$KIm7`O?(Zhby|hvFu(o_B?j3Dh_$xZqm4Wb7U%+F_CuTT+*kgyV=oe`rTRly zhcIr{vUUw|AtlvOmz|X~8PfLvP#hw2D4dDjL(i49ae_v;8f~0APwHkD_|(uUZ}q7> z1JwWY`lIk1cv5=3Q3txOIFgojr?I1tVPz5DYhQlFT7CsZ zU9lq8kfe>P01~V7vL`s8-Y3t@g%KY&vh7-Qz7IypXfXY+D6Im9=$P3w8I0G?&xB#h z#GIKF`qWv(M=E6bU4Lb;-^}>(6D1ro57vMNYRy6dFq?J4hBrBj>I=jd(-&AnFEKw& z$Poo+6%TpNcvY58&6$-PK!qh0?pI`cOryJj5jQIr!?>-v_adM=MJ}+f;jrMjVy(j? z4}wXLWw~;Rv6y?V%Qt%{Qb>9lU<;4rxiL{6^PSEGKA3C3i)Zpw)d^D!Sq_!q6#wgf zY0&$$U?6uOmxUw|)!~Elo4TT>)*P9v6D#Qo7SxXlPTAeTb;lIO4pyEhj0qwbl6>dF zC2i)k_5uF*>QI-beCx%M=$bXicW>_wvNv?aRra_})`|Xc<}WI{L|>0ute4y)B`t7K zF6s)on;y;3f19-PDQSFx_|nIpb~12i5Gx3f#e(H}W+!J*Z@Yfb9%`E>a1Gx~dTH|N zxuZy~VK07b6Q23X<{Y*5zEB9OykNe53)JAd>3pqjmEn=DT_5(W#gk9tq=PK4M(;~c#8g3s*tn?g#vbvc7= z-uI1g!%+N;W_hlzjBt;hH)(1nQM4E=CM+b}DuKNKX^8wW^TW8kl)6$&{nJahRSSJc zCl+@OLu>7ap_F-(XFw9_fBzV>p_Bd$Tu(S{H>TqJYX>dqsLyLryY7TX*0X} zO6lI``^P)eVjb#T@1YjdW9mj44JS33eQ)S zS{iW^`ndv3)iQpiXTut*H$}i~0bxhpw&L{4ZrzgoW*c4RIOK74=%?ZS!&wTfhFEmM z-Oy}7m7SZ9R8WN#8~j17B(Sn6Poj@HHx zBJox53jYHcHG1+g(&dsfLHBZ)KziNKlug-Xgd;vgoK*g0V+>s9!Q>hNX-nz!5Q*)F z#Qa8$f}K1={5kcX?qW_|#bVMU5#R1(vTLAq!_Z?nGSyW*w|z}G6?;;Wcw3&x(Mq3t zXzkvU7vs97w*GXF356KO?;qECdZfu$b=}_#G{7m(nSb>ZpGk8nG?bY{fs?Nk|BaOs z^8W4dsLIHo)~}wMH%~_Xr_fU_9mn|E&+b!$xXAD;og>W!8eq8nH4nYVhM}p(Y4JQn ziAI=6MN3NF`529ut3YqZWWRlIm=D^Ugi7=3HCi z`XndsNlG=vihh{5bFauc#56)v&^p1f{~XkO*UZB`V%ENv-%$!;=(gfH^8K)6&-T>w z>YTin09^9kRN!a(SA&YaM~~KJS)F60In&d?uwhJje!!+)vyzU!Qg;e$LsZi{RIdI~ zsMWP}DNmxwp85iGkhp;7)o$_2icZ`-XL_&D-!v&G?`Gf>fbzaWZWsLjIpk&Q(^^X& zQu0px+bW>Md15I#bJU_!5Ox;14R&+-C1WyzEgy9;KZbw_1`!%T$p_{1Z_82XBfUn!k~^1MBYzm9sA-x1(MdRE8EM+0)1}E6bP1^L z1L07Qy?5D{xhYe(SW_yIub}M%(T8M_-sHiVCs?19RffISU0^*%xZsQk*d(@mIvIh| z6q96G2G7Q=GOCXY`1rt?Fun5|iqd-D};nIZ{D1nr2beXm( zFhW0>*t52&uwI_3&E&qerVthV0J9YI2A`1`AwAl;t6)$i_a5G~M`PsA&jyAL; zlVbTA(O<>q-LxR)9Tf!UHLGjK75~Z7Q!<^9m!Y-Hgv$qMivJIGvX{0#mIo(Z_`&^u z8kC=sKv7=?MZHl*nythItIJuwLfV}5bfU1-L%s*`oI#nWEumo9*>s|AGWdHA0J$

    ElvAE9*Dyp*DN62+$kI-Z)y5^T&!|q?CK`b}dk8UYlxyf?299En zeU=FERaL_N$>oltk|l@tbd+AsXJST6o2} zt);*8g7UUnYKs{C;I{mWC|^df6ZeNnqAN7d)aZm4?8BO!+ohZlTQCV1?O+TUal?cD z9A_BD=~)mF_28%4X5q%TR{FOq`_?@wN33UNgh+p$?UX{tEAGsLJJp-LtvCF>LBIP1 zB;8Q@b5-U$XxuLUiN)x5%#WZxJ^*JswaVe}P9WtF}8& zvIYJ(ZeNOex@)pdaYnv2IPcGc{f?1`Qz87`M3ZZZxbZ@W&G1(o~XMLpEH`ou5 zzGw5rIuNsE$@Bg<2LhJQB^%+mj}+vKB5?O-h3dkjBt`Q0zh;qGSPAprxKFz%tQ`)=%sME@xJqoln4Q1m&TokKBbcI81(pi8|CHi~uKnCW#aQ(hJdM3N&xv z^1`S=K3`Va2=P?;HyX=v5mJ9PLE{s4@R`Z-7JD%RaT3WlO@?<3%1ivfsE)cYB_S@x z^_ji=)T+c$pMq_BpNW-<^Z45vB3%9U3OlILJIaRUFl>odtUv&PYr zN*dR@4V1Wc6wJ1YJUxCnKTVqWeIH~8&vpYm8i?mYeOrmQ_tztd$laIm5ydXiV$8fh z#u5j-5gd<+UuhEVBnjnTxkoJQ!YJ%=;6CB8GYD(5?9CoD>qHvgb1&|pL~fp{njKed zNuvA%=Vr*S=vY?MiUnlNQW@v307fc z^a}ZuBqlF*nN+V|E4Yvb&#) zj9&C5b2n*Y@g+V^y?1tS&gwUN*o1<{4L4S<-A<*A*iJkj%V&_z%#rq3@&|!djYn4JGyH(LrRdI1FCOO@L^Gg-=i2bd*?byv@-{M0@ItHK$X0Zh9#yz z85D&+mjI2Gs9D(QQDxY_m4pEO%5G2+*rvYd&IJE16$QP$q0f!RZC5^%f87-`ytX+@ z&eUbWU62BIp+USY57oa*pZ%_F;!SP>#%C{Z{NE2p7{xCE%!Zt*M+~08ph?hZaY^3r zQ{o(z8W0Wtsg=X@Vey5aLPO33%EagS;YRR~LTan5)d7yPa$GxVb(?@wry7xf7&63( zKs8GQRO*7YH0blc+?w87^s*E3=2{P#2fFSaVdtuJj% zt5EpnxXWKBb2NCcv-^1C+C_7|+9LO7@JLzKWx}Ek4-xIb6S;6%6*58(_+%v;Bp>Dk z+9=zw$<%)H78N9Xz2qtlC^NvgQ#S%rAI8YdB?$eUf84AHJ>Da*%Xi)uFB!{$YZH$^ zn>ji-fY=CE5%}c810|=-zRkjDb|enZ;^waN+~|V!4tNkR;EDf4$v~ca;Bq-W*9{D-Nu882io#C@TFG9#Ra1l;}ivaK^P-Dr=YA{_~Ik^+$q!vqB zrzZWsP^bL;I)ojkQ6TUA^*TgQgl;}B>OllzJt0Di!t47!LOmDO`MQWm_uI_^pt~NQ zf%u}6F5mv69JewJxD9BQPlQxS@w?YO-ttn?_M@ylelSE3sN%@&q@Y{mm6O|0pftP- zg)LYHyc(!UuWH{2t7)9FC9jmb@!6*cngFjz%CcVE8=4c*g-<3jibFT(O!}De-r%lw z_ap*n7X%x!Lg85ALKA}i`kX0Kp!6Gobp&4mxDARn0L|f0xF*eb1$~1+XD9H zx3b7Lj#p`xw>c=ql3m+>n%Z>BTVv?y#r@7jRYtmVJ^JKt&mrNqAC+qnefJ?IG%q?C z9`iql6KSFLH@t~jDv||FR*$;cmyM<{&1KyCnf!-ecBtYe_;S8=p}FIH1YLm(i|} zv6*SFQpVEU26y%Wy|`7u2K&OH<(}a3Np@XVrCN@y??QF&yqRqrSN*=C5wKD7wja`P z5D6D>`!MNUt13|KF%^sEHmzkQdjbjP7rSKqm}IQ*`kXISf<&CV{iEuka|^SZT^bg7 z%7-M?+dGv|w%>F*fVB;D%6ipnv#W7QXKOJ@^k2azIh?}($iWZI!ILov{cWz-7qRz) zZdtQQTfZCd93(X6m(vGeeflFo^QJMo0gT5+FpIYGc_6Zd;B)ZpY)O)FQALsVUuXbKZpkpMi^ey-4lQ86B_&=+;O zZff#zHJ7X&A@GKiy_a~;LHB`VGg=6-p300dM-iR(=`NA*=3g^mN4KKbkzxE#sys@$ zOmfmLWu+FjPtupmj*74!+R1iVmFo{7HUhgI)79q6=*4T4%i^zN;cik5R;pj~4y^}d zqE1Dh>V=r3=*1n$X53uESzm7(65J11nGx71sq&fw6)V8RnThtmJQVnO9|1D}ysi~X z5h4t=dcIXYoN{og^&163L$>XMpCj~fzDer+?EQtW>dv0DFyQ3; zC+=Cy!Hf1CuXMW;5+M7#PRlyC5016c*Y3&IwjqJXzyJI?%#;E_qqRka)eh=;3HZ%7 z71(b=It=xV5;OU0k!TBc-IR3q# z+DNcDQkn(!Hb7AZnXs3kFp(J4+)mn5Yft(e5w>1gezrs4V<@Tz$R}e?huezMeLqBc zy?FAeP5$n6@^E=x@gaxP2k2*%IWp)yxotnbWddqamCAn~9i*vEFYMFwu0;Tj^)<7* z1#SZ4B}zXjg0?s(`hmeb`9ONzzZrJ-gu7O%Ra4;?6%2IKi`D`aumKUgzlk`EP<8Nx zqUDhSfQ6Q)5URk)kbu*{m>co>GVjXU8 zVTlWvoO!Z%m&sZKZN89;sm*5!kH83FX_COU75K@^hngA7nYdX~16cU%;4hijzO1Xt z`!g(>tG)el(PCX7WKVy+<&T zN3;i@bC5$XBR=d6qyZR{Wj<@p8t8_SjO8#Ag>VtJ%N1?`8OLTO^IE!uAOPVM=6B3s zDre{xs`U6h%s&gap?6`>`>`+}N!rlxpa-E555BElv=>%X1fbe-z&}i+L{60BfkR?0 zk(J!MR3`D>@y1=ET{dGLOivr53F=&Xxby#^ss<}x%GWN&49_Y!LDqCaek&)H*oG6$ zPm58CIl1whFAjnOy&I(PkmCO7uY0Hd6!GjpcyU2Gm#WWyJ3;gFac;AQy@4?zMfp<1 z8G>o|bi@xr@A^PP+M>{NGC1FYA||RVxJ;6wN6qi1{|?AT6Um}X+gr4Lo5(M?_3cUU}q4FU~3-x4Y=H-vA& zbB2>spVu(!q-fMX_?b%;`S-taFB)dBbWtF`uan_I>msj_Y3m^Y@qcCQYLK<#5;U)E z53vYlI%25b^jN}e`{Zj8AN6U8KF%E0RS$(3f*%Q(4_`-NbZiFhe%SMe5qkN&A*aO2 z6;WssukYZ=`{);9Jwb%%`3DfDZl?-4#=T!2SSY2?snKmk*|WXAeE#P>zA!G2jUFGl zazlcprfQi+25i{s7`Ah0bbCnGZt9XDqKO?5)Bz1VxsP14E6Is_zantjG5 zuw%ir98pBPt-!j&a(gJgV{C1oPW$^QZ?9yQxTzkz!y3-Y8@m600fDWhmu^d{Qio&F zW;=#4l_pBFz$Dy@Fw1mgs-)+MAo3?bD=`axY2O#d;Ar?%Q z#`ceurb`Goy+eKmS8@cv6B~YtpvEvJUWCpCd=eH^iN7(Bt1~|){YXf6{|2usfRRir zTKqCGW!pOG#yf@yd<^=-Zh+E>Pl}!knqb1MONJ6Q zFplrsBFpc^SWzJ5?E2VGW$0fy`n7eYjJz|$C%t2)WnacPFX1De$h7-A`4AU-DUU5JOO zW~8HJnqu}rGU$o94=Pc-zhF6>-zdwc;pk-({xMlWv{E7siOF}yB!fc4!y zc!TT+FmzQQ*^n^nH80ECbA2cvPHg&(j^WKI6ede}tU7GikU{zPIE@5L) zrTiR$PL(`LIWTk<1&Qzd*12}^FvnRq*B^V>3MmZ>*`EXRe^`}Js#?51TV3)2LNSby zfz1E@{Q=q%bU!#9e)$Y8)=z@ftIznyS0Xp-8EV%QPk|8;r%Ic~?ZTD`U>-@^5^9?E* z5TOrfMYZ%TziLK{e%3o(&d6G>J_(rD|E>Pqw_|N*?E2aKYp$sQe+^)P36UD7ds(w& zQI^68dM=iY8|#$aPQc_zK+d+40K!lpK->3rEYy4f!mSpQ&r(NyDO&V!1Ska9!?!}6 z#jA=m68$G*!4bCh4qqHP%E!{{!9C`z#qsqqyrC^wwkd50get;+u7=TpZJZwy(ujBh zV@wV7qw9^fpD;$84TV)rMTljBHdHy@1op&jbN6i8fkCy$B(mIiMLLu{-bFW_ z?{xCQ2N~E<-wi5qv9f#_Q#R8RcQ$||v4cVK0fuAm%6tiCvv@w1sd|EjAav*h;Qj}a zfqlK!Mc|zOMAp++gb39M9#YS8Jq@6c02$&=q16WgCs~2pxe8(#-kx2cpe&}=P*adq zcwyM`jBN1ph=jF9G9L1j{BDx=}32SRh-(?_pTnMSzokhG!Ez?=%PM#g8&eDw23+ zEPbM3Z|m@IiZ9K10$9&VmpF>r< z31DUs8`enNR*`z(vIxVklIP@u{J`0?xX?c z627%Q&$wKM_{62S4IVjQT$8$Oy@vpOM)Um$o3G-oU%+em3_&Fd@8Q}IMWnUsg0)uW zZ)9oXY#YdHw_W2#%g`UIpYm`5&r1OrnfEaq+=agpikLqWdOusYIK$7e!iOr+lRY!} zY`WGgcBrLTcIFJeMFQsAH_8T?O6)gBF-=}u{Z>b}dxOq%@>H<0vY1wd9xXlNlEw#g zfjE|h`&Vi2NASrvjZ3K#>|L|szlSghpxXJfoHz&WMZ&Q1UmREL70;d?*KSO{IX_DW zj!Q7ScW_hN>&r~6szpezAqVaq+QlGsztE*3gZ7a9619M`1knHjak=PFP1_*Jxam$S zA?&H-D*`l-uZX7jIxXV0V$hYgp)arpUhNR&nZL zbf^IvTN<@{gLssqHol z72$oj8%urhRDZ`S2(QjRh~Guz6!mwpgI|P^f?SOSH{;L*&?;WYJEmPdRTs$qU0zYF zN?fRlU-)|`rrI*fGJKZz7nYs3t>v2w|2$HyVF&AsHz*Fju?gIW?lM=o@(RIOzxpWP z&d)nCl>ku8`eV&t4e5b*uza%oCFZ2TbUPnos!GTB?aWhCw4Y!&BK#Dy36eLvk1plZ zmxP8{i9u4dR{eJ~mc$k+l6No~v?omKoVKnVr<+JZoPrGpZkzu)(DT44Azp@m0}4>A=q zvbZl(7WnT>G6zL;#r3&fX>!;`E-Y;>*wWfWJ@7X%_pp?__X69Uq7{h^j}b3m;ZPBjM;%uUmkH zXcYWvz#c7>&riB4O<$FUuJ932=bY+s$v($fc9ur<=ZCMS!e zT)YGjqnyOvn^jIc|2@=?9}eF62q!)-hn)p}SLRp9Q_#oC^S%cxg>{&Yu;;W0JxoeiS}+01sA)4Cg_R$QP@?cUi2H+i z^=F^NzvQ8;Ubih(mXGg)#|xTBgu;1Z?!;87CV&9}$)k{Wks)fHAyO0<{mIirC}Z4t zVliKs%7rTSy!#&KE0{IavsMM`-M;W>YpDIab2-|$Ew!zZaATO_>(p>6aKtJ(7kuL)|j=x=KD zt2B?|=zvPQqORHPe}-09^%ZpKuu{=wM77a3JX;r-h&3Yu_e^yTjHrUqc12I!MSKQs zwu6NvoX0#6x&hsxHKy*L?lm~v+6Vw17y#4&U5j2zrb!N5Er|AY^1IiUGG@BT6Mz7U za7;dqV~ZY`0Z8(M?t>Zf?la#G=}G%g6EbB_8+->Q&{mOYQ=C}o?&{!5f}tm{m? zjgDa=BqchbyVo)>_gX{>#ep<95U>vpMk1X%Z5OM;sF@M*-}yd$M0t?g_W*#e7X}Ef z5}g99T(Y1DTUh{OYR+3qf@@^JJ)5$GWt7oV-{Zq<_m7O1yXC;r0ATGD*&brxu(+yx zkydz7OeE8!7E#4yg}Q~AR+!hD(kM8zHH*2LbpG$>vXNm&W+p4Pt^mW1WLSQc6vIo- ztT9Q17rG@RYb2SMA4xKjD#lt?UJCIR(m|Yk`m_jNRu&+pl%jq$`_n;!KOno((CNQ) zr=Ol%J#>-;gL*wXejoCxizU~?iDsuoDMeUrw7||kWBw_;N7f(*ItQ}0wh5@ETADq5`!JgNooRFdV>0~o$XbLEP%=h15$0OJ@fb3B3oy{e@nKITB9tN`6thL^ zMWfLM$SuIyQR05;l*|XMvo=t@d}YYj+Rc(0cal@rXVA6%&bKF48mr>R#I<9Bu3Zm> zMNi>^Ghp239Oh7-NN|#ux9D{bcE;n4hSo+#Oy_&6fmiJ20m#=Z_#<~2)Ucd37>pl# zvy))~@H-Ci$1r9U7%!m~fz;6y&*#8TN{7?q5flcVG`4|8t%0fL^?q~t7)39vbsk4Z z)^IXYp2)H<#-0aZ)<`UJSvX&wqT%jPI&?YO_NHA?&l3x|Ao`tO0Daj0h06tdm_cS; z)A;SVCi0&~Ogk~{z;<3;(SM~2U#2LOcT6#PjWTX6$s8o@%Cwj1^SK< zFzzR})gu0g(C3U0Dd*G$v#CB$Mm2kS!Hkc3fja8+%6>&UzxLhUHaga?_){!edP3x( zp_C!b@6hc|z00-lyMYm;$%wURUfP1a3@|x98hvR>^#{CNi6oEdsWPF11$K8>^_9+df<&a`S0r!y(%sPEjbdyuj9Q_Y+2e9<*cGf_8B4MBz|a z34oR5Y{{Q>>OzNCpud;|#Qbvb2l{}t#PeRavhDW;a;xAveB0^#bFL4DfBNzuHepN> z{nGGs`KDHv7^2|>>>7o8=^fT8-7it%eHtn^Y_UuOr0ogNUTqp5XCPB!&)aiJ5sMy^ z1CL0?3wK)ESXvjJx76sh4BJjXX#|W5;A>RdCdxW{Da&FTD;K=qgWdghd}9IxxXCr9 zJ@T@{SKieRI}KRoFf~;@m^r9#|EEvMu&QJ(6nh8eeT0`_)_o-L!ak07+@Td4e!Evl zdi%eO4m8JCE?9AX%@Y6&dW)+D-PV{U4^qxcU~#nVIjXohg$>%-gGoO<_=U-y`BSId zNLUd@;{MMtHz3og^@HJa3HozXUa}mJ5&dqhFoM@y=^L)#LlAok*s&bK$%sh#3Y|>D zF3OgkT}3e#PQDgLS`rj5Asnw=kNj%mMbZNL9bWU-Pl4n)6j~xUm|YY83a|FNd4g0- z$lj+>L36FV=VWDm=KO(doy6Rw9*EHpvxDLh3_qSGuzX%2^gmq zct8kwAC(`J0`pV~SP3&6P>$pfaDyuI#~rNGO|3`5FNDI^3Fi^nhLYf+32f2ElJ&*C zP?0rY$?hrJvmsv)$t_K6|3)!3KnOZSBZ^eDz>I68Pr%WFM$MiD!CvIuM~Ii4oC zu)RQi?z*&Kp5m{l(d4;RGMI|#GyL!hull=BqvSCE+D=S8Fk?!oVEG_FhiMA7%&?Vh zYj>^3zm^tZnV#JX^c=ygGQ}Xe*Rso9yGZo2X|MFxGd=p)i2oCA{9!Y6A8mQH9s!=w zI|fHlzyu! zk4Pz`3|etY2VS$Vmc7 zXs>`gGiOm+zEL=OREnZ(Z+CRP(WxpU7jkeOut73!OjdcmV~@`NEJR}Bq__ux0&nU( zuGMgCen@!1e}SKV)yB02(D(;z*EL#}XpTSc%==H`;V*UKa+hrGG1=skNmca-u5)jD zaK~st#oigi7+WQ3A+Rw$1GNJ*R$5=w7ndgNsYu{4<4z$N&%q}mHV9DAqHLySK1L}W zT#q~|aCGZ39o^W6z~chV=9iC?CCcbSk?J626%~$Kx{$lmIAAicN%q5vf~bcZY=1@M`NHn7yEX9;5vg}> z=f=uwn5Mnryu~>u*t*UhZoJ^HsmlIzzIidAKr_m_Ttt3L_&knO*9_dg1lli26>P!c zPvXI~5wy4?hqXlCi{tTJ4cmRIWuW46++HdGp0-SaF&y2@oHWe)wz_s0c@zeH2vE}h z8Kn+~BS3TP3GV-0L}(ddZQTI&)d5_OLM{`fO;VyWoLz5Qt!`KQ^`zt5QGRTYLmd#2 z-D>DC{Z^r@qe$ZHcxQ0n&5frYPVwz8b<05{D2zsa|Ac za@vDcJ&>7_1tzqWlJ4X5GR|ceGwLmAgv^gm@!M<&PmY6O1?sQE3Y@*A=$b3s=rmT5 z46ELyS3oZf@ zv(3{EBzfQ;_*V+_P=q`V45z=ArQ14^B!Nt7`wh5=f|&E%W5@OFfVqY*@KXu7Oj=`> z9g)XGKW#0CITU1ev3ceT%plOim=#6rXBIHe`oac)9(?fPsF&PQ`2P&cG%gtjP$fz^ z-vCV7_Gd!pV>H0Zje|Orthw((xH>bz2AWSsuZFUXRzQDxy2i2+4N1@C9#V=Wdy=+- z11j+A0UbM?f2R1!@Zwn;wys&>-=EMpTiJcic~(z)MA!a&JQEmDWoNJ-PQ+?EiFz_& zX75DB@;7KC8vX)xs!s!0coKp2;-_FOvy;(t?ZKjrqdQe%{L=(UuXS^3md`p{KKq6-!0&8FzZGA9xNgNU`pSWe#kgJ-o>%D*(DGELS#Vfkq4Mzzk4~ zqfdvB+gs#X9O}b^=X4O!cg8sNWJ;z2Jf=zAS6Jc<_-c1DN`uIY7tul9tzbZnPBN}p zG6tN3YCV{Fh~G&!={I$#MSv{UMZ$e=1jxSK8G9J4*VyVcUK1Tnc_GrQu2w0~9CfF7 zS|`f(M&c_Lh-(Zv_=XY&@Q@dBh)~GwB(gB3ZCLgXyBZI^?Y|O_%bw7%l4p4-WdVeY zz~2YhFU{Bt97d^gYXP+rf>wclWdJ70HFQ|njhg-bst4%tfi^{6xRFgAX5rBl{$#*kzmA)U&v%m0^kNc_@N7e^Zia=IHb`)}wvbP{yAvQ!h5Jk8< zv4!~X+-Sju{V{h+_2N{v=;on_Zbz9X*ItPI4BFMZz3vIG1OZbhxjCQN2z;T#7|Ef$G&Ic0rnT0O-87OpForegRT{DweZ@mcHBXUVNtlj@N9CW9Ey@2kZ z5%2g?qY5VA)fDNT5(ns>qi6(;AX_h~$+#NGYp_}TO2BSIp3q39E2gle_Ly387=6Bm zKI!h^r;c3>p7VwaZ;P^$>_Wd+U^?FtSJH%<5btBP7CFNnrrju zYk_eX>=*)RIA(htqMtc2C{Oj#qRacuo6xDs*Im!cl)_rdhd%Oy5NnklU=%6F*nn(% zTJx_c-;lesC;^!|ytYL=<+JrZ&;gzP)g~>rOTSCd<(#b5?dSmQ-|Koi6oaa_wiO6y zwk&=8t1mSOp1L@F$C^0>=K4%m%mlDLr_x4YOGWZBYb%}I1RSD18U}DQ=zk>sawnDn zDnNBS&S9vgMFNa|Gi>)WJyQQccv3King<{}a?(0qBcZN&60BcK1slKsq{@p7lz4Po z$#^Q9Tq9@J%`PAJsb33$v@Y7|VH)sm^Vi@k8VHB+9!LmJkcH6J_KMEk; zBY^iy(TnYx6$%J<+4k@Ai7cnmB3=dT)s13v&^T53=_mGDeWJZ|0)!2mN(>gm6{(Z( zN$wgjSS_7FAV8y%YwS}04-uM41Ae)WuI05uCBhg5fYqn-Z$$$WAN|&D=3kwtqggb< z5XRhx-uj$c_Eus2$AktOyb2zv#r|$s&?K2R{~$AFz0RH9qhAScV}W7Q!hlwI6WJ!l z4M+oK%l9Mo3s^iI!4x$AOGIv}N61umEd*A7JXji0k>J(-WH*?c`;kB$wGkX<#!jXp z=>hv%2K$ZAYdjDYV8vIT!CJ%r{h;9}Nfyb&Hl|$$l?lJU%gT3$EC0{|QHH7DmY)7~ z)||kK7PrUZFN(lqgkL3D{VY?mdF3A7jy_eDy<49uksRysDlJpxfp&$aI30M;46v}k z`~RDq+zXgWaHTVym~B)out);8iZXThJ~Ok0T_<7NPHLicbo?i-1o9daTgN#+s0f3d zX}ZGv?EY8W`Ro^Ig;aHWV1a3A1V`_!HlQ+6W-u<_i&n^Iz-r9@Mo8B{eWLPLE^2`( ziomLmOkB1(EIK9)tXae$H)g5Fdi;=rblr7VGYAbh!>T+Y%n1>(QIld>`{6CTJ)BMW zS9`?iHp@zfj#J^)h&xZgiksi|X|FltsRIc*c2J*Z|53m~$OUh|BB5|&73TV;H=4DG zA4oQ^$~EV$qTjsJTaq#L$K-uUV4+{Kl%W?=q;8$|8jG6%z40S#A`);-HxJT1Ps;&R zgbvt`evsRy!n%3fIF?_e0x@a>3BqDF4|WsHV2&%R+%Ei^OYetx!8!@2IeLs4k$7-^ ziC=3GZ4Qg&zUHZ#10vC2_v|x4lWuJo3t#wUrnT(#$oBUpr)5v1J9w?7vWDcz2kATr zSSkZdX2iZ+B+bo`1goCmdS7T?zj)aMKjP11yd8wJ%1TGp3GymG=xyQGIZ@ z7SS(g3?{^ZCg~}g#1FO!AkL0%su_TR*QaSI*@kMbTlU%4>Fxt7T{pwG)zJ+Cxv<0o zD48IA1r3wRd`NmU_t5#+8ImQ_MXmRb6E$dA>Bc-!ns@&9_;DyuX$d;O_T?E))cJ{Q zlxhL8>Dvt7*zD|`c@?{K-a~R`-@{3qUwd#SG_4Zvx#x9yOjHA`Vc^$@MBnAq3IyA= zuqnRhMqp)}Dw>>1#Txa zoaw&Bxz$%@XqF8_-N9xCE;L{tf24u|_85f`7@(FPA?POsMZhi+lY;8*ZK2Xg_>(fU zUE&l-cQ)68uzLZe5*On(BAW%#ZRJjj&eYHm04p23_?+%AbghV z-wVZaF#Ynf*$+{|$-Ni$vrO=0=-9iwO==}+T;yjW@kWsmSVIOXwNC>Gh#*~8f(HOktqS|pAH_=q=p93;-(M!hCbosUzbbmt>np#I1bJ$Of zk3mak!kQrst@*L$ywxh|LZT&?T!UjxzR8E-7o=I?fRL2~Q+A?vpNTV;U~`sWZ$t7elcGhNiFiqRAwzBl zQ`yKnItptKR^&oI!k|Uf2pHxrlk1Q%mxte|<@c%T`5No+i5^ffxk8k{#=5PcIcb_% zB1r2M@{XipqFzP4qW4Jv`{D%~HgSyB$rRw%bN+=#02T3>O9zYkZ3JecX7l z^XXRAUlc9%|7{}3<-$>$o}z0Cm+~cnq3bXEZHUW_RZiEp%Ijaw{yCU6#mCT1t*UbC zl3)KZLjA2`*`wD2T>-K_mA@VVn!^?n&N^>|`PW!n}Ep%;2t{;oN!vhn0EwBjmvyBCKov;E=X-X0ydJAe@JvelnZRV<7WpK0#ieR zT%hJ0XGU^Y7Cnd=$qA#|Lzb28Ad+1I-o;m{t4kx|{^g>-0q3jQNftYl{OM_zi@E-_A3`_P+aR6|Coqku}uo13#aL=4nm=!K_2f z>eG>PtE>G|vLt8-P46-X9*UN5YI~Rj97vwQ!x#|p{aP>lNo_MW4%Sp8@U+E%ssj)Q z=o~<~?qcrr1hfz@2rQiLxrd%8eUJ++jiUCAjR9aO+P5*&t5t-ELohDXi`PFBV%f_v zl5zy9R{Qjj>bjRnsLkTue7@lJN&k8O_|k> zxzCk4u{qMbXjsR`kizL$%}l=8YypAe^9OwF0tpN9{}G^?0lECf1JSRd;%(1v33^G> z32$3#5xihqYJD@{+&!qHebw4Gf+4kSgMq%$hPqtLTzP`012Zx=YQTN>kU}|Q%`E@| zHX;LrU3{}`K-3R3#o9LW1dMO}Jz$U`NyySY>FG40n|I4gy!*>~L=adx7b+iD3~x99 zuJS`=&?ie7(8`WHoxFV+4EXKnVXgYX1yMe0-PLhra|_&alV2J89EUtBEI5Jqzygl7 zkN19SyZLrDJh*=kwX$7YzM}fCU=4RgxV+UCowGWXCIMGLrSr7LjY}CUu*qQ1eQ%y<$*n|7COLiZvZBITSWt*x~rMOc5t)q zT~X*=T%iC1ou(HSd%CjQPm)d%e&U|8#QVUlwD|)td39z!^jdSbQtxF-LLR+eY3YWz)C{_ zuzu#l?}$eH>nm*qY00j6R{+7JxNj|A9bZ_y=Q{ z%jX=HtgY0A=&OT`PU@5e>KjWwdjwcJ5qZZlAPjUXy96P+DmnxsX0vj&UI5OL&JoTf z*^Ql)0HYrL|Fu6J=aC;aQ;Mqr#RmT9g;fzKHmd(tY=WOXkei!5m<0OaN;@u*pT00B z{Do6_}WHbtD9#jF2}xscQFD1Hu58l0?2bJ z7L0g!t&8~zl3 z72Rrn_DH1aN0Cn^kivwiX%@DglB4HbmG+r^K0uJmR5#gsY*$z=&sl@G9qR9ox1BC@ z$+s=9Eve9H*mLv#qXy{8O>}M046G30fau;=p8K)rb?)mUvvKAQRruYWI1?4)Ih5i` zW6R6}5jB4`a|AOp4kI1}!yHG?gSDm*fBI_B25vEJyeVaV30XDW@8^zIJOJl8$|l5o zzc2pqp%YU5E6Clm)}j$pUV1a_Z4u@dWf-TA70}HRLZr{q<;zKUK3c<{1Ni!6|~ zX8hFyf}h4^P)FC>2en$kL#Ou@;$Gc@qp!Z@8$0!iueL<;okzgdkjqrtU6TfBkNC!< z$bD>1nPVx*-~3?17Vi%2m__D!946b}J>G$5_x!_AtQ+gaYicTqw%)e=zK-?%CtBrS zY&-A*t^C0K2Y76^m0sN^G00BdNQKgeMSAe z<0x@j=y7PIl6;d+7S8C$x8BmgwU{SpQ7a32q1Q94*Emd5u?Zp5Ur<(|x8meAaeo<8 zcrwx2(vp5=7y4NO`cV{OA^{x)e&I|hy3`YNKZ6V&56o^FhZzpz3P_{$74TB~ErM|w zb#!4876F^pDC%I13l|8bHto0v@4%VP948EpSPhvq=`J_D2H%xY9g#Qjl{UXU8j1 z-Zy77zQ1_~^Rwy{t-S4{BWjqIrlhZtyt6WWWrxZ^GC4y%quubM1lcl6{SRO1Hj=0$ z+w@rFD}kUq?+daUG5fAI4xu*h#nB5vr9zcu-6syI+Y zd_x`e0LRIJfP1uzIYYoz+7fU%)X^8<5hzciIv9=-M8Cac0}huS_@1T|s>%cUnB)4) zQ5I)^A(K_YAFVI_s*em_aDr}mIM6m85qJcANT+oR2>ql=W5qNH{AIfQW$GE!LO+U9 zxQwv{ub2*0`+G^xO0gwf;mUv**r!ZOLbBAOP>U}v{}Fgl)X+Kta`FkaP zej!rliSvW8;3&nxa)pN#5^qgqHwIeg4Abszmc!n%M1`aEQ^fv2>h7 zj5C!P7^(vQ1#_stVMd}f-QopRf=qEgCR16c+C!UFHD6XOD!MJy&@KZab(R^a7q=jZ ze6+UXEBnzg-1jo4T=>&p{jm(~Zie!yC%CFK&yca;WVI`qzdL?(_M557mn@Fs@+LCm zMn!I(gqG*;rzO4aL7b^&FJZUVv7s6H0#7CU+iaC9$BOnkn54$aiM&hDvX;(F3wluV zgG8RLOO4u$RPG_vX~D|E?xsT9xm&JWviokHD6A=7#*7=l%4O_lQ*hfsh`1FmQ{{`O zqm*+^U@Lx?R+ak7Lajr~!(_Q3|1*c_iRb8qEAeLuxD0Rw2{`cG6y!L}9K-OpBohu3 z(_pEO(Lp8W=>&>oFKQJ|6*Qh)##Yv(SXU^QQkoxv2wdaHfV>bnG&tOk|K3WmCl=9$ zAJ)uQ2f9dKXwr=eyt+z^I~TPBM4dPlM8FYKPaS1Q37}iR!?|r6n|GV>#<6tYljd>Q z!^`R1_OFh`rCFcmI=d^RVl?Ua3p?`G5c!V96eaUp)pz4Fr)K%nok3_5@a8JV?6x-6 zP@_PD$=QJOzh|tS%0JFhJUpCM0S`u956jGSf-Yr zR?%E|&^f4n)$Ww@4I3*D>9X$0=>zy}2O7b)YVh@irE*twVfPigm7ejQ;tK|SAb*FA z?{X0cruL7_YTt~ zmSD&3nGM{q#Re|lECFq{3;n1WvCs-$Lhrk*v&QMT8S`wTE%2S=FyHDWKacS?ACkP= ziM;9$XiHXwrU7du@LKpCX1+X;5d9V7cIbiQs``QCR{ITHu|nMCdvHyd&Q=E5tMyyE zcH$X2;r5LU+*Fd!J5X`9jKiKR`iE;;Ee`ny7f=vYw=CBSRa;sV;%IU!H3R!s zkkdP8gUoYluq8Vq-#Fyp@g_v61)}$S?9=_p>yznET6VD>@H!}2X+QXdrLpBkhLytA z27`BZ=0C3e5u4Sh`;J8=cltolAHoL|k8slLv-qTv6tCGm@HnMGDLW^-Iv4ZJG!L3( zf|A_aQ85)a!qz?&ThhHFxlzV=YhJ_DA>^Cq6MhokmQrA~R7sw6i2Kgx`>8cGHk0U}>mIp}8WrNo?!mV|0K)4to+qxT0VA4y-j{vH)lIIhnW{(WVA6S= zgRIt$Dk7Yf#0)5_O{C~)U2sz zUQ&^hmIR#N25upyHPKk)&ucIB7~LfPGlXweA9unAG6SWQJzZfQU1xd2Y{{SB^!R*rLSSR? zlPEj$%gnfiv`%G%3e&yk0KB=#wjxsL062t>3Hh?$7j;rE{~i5+0?mXXVn-M~$x;l# z?{_!q>NZcI^M>&&64Gr0m@S(SQ6m^|P-yvS;2GuDOn8Lijz%mX5Qms~4ix(ZR83Y# z^jJ40P5L~m!bPqf*I3Vb2}QETIb=!QTaroOY!@DAKfDFrVO<_G2>_5+9V|Kl-G7np ziP9z#IW!rxBcn-Y*%jXM*}vnq?>!b*2`=!ikYWkhA+(Mn483}5i2)u$Z|_r_t(FZq zD*VWbHT?(lPaqUNa{!&V&HiAD>x=H~DOIjl5WOTWqZPN?M^}&K)h|pRSlQABLVWcD zU8)1O=i|QKXFjP`%dTu9@gE66U8bog;g-un<|3;PFK->JRLM+h5fFU1E89>Z+9J8D z#ih);>CCEdhgD;_CNr=AiHf+qRaQy8mfC7*xL?D8wA`|^Hojar50J~S#U^@rLqb+C z(aq?{GA274tO`H}yq8}AW#>D%s^7;quN^4!Sny9$9SmH5aEXcGb+F83%)=2(Hcn_a zT9mP}(ODA)04XPS88dGT{fu$GdTV3YYMeE$P$AB2n_dRy;WLA2t1rrPXSmzT4UDLzNkL?nK!DBm38BL00Uh$D?BQbeN(h zwj42SmEJYALourF#R`7q&7-wFRNp93Lp0|0x#fyYP4l)TqRu_9q`N25$6qB*AU-E? zpjojTpA7C@BM9E(CWKEF0=$&2Mf3HI08lZhP-q3zpbx6&=$`HXG15VX#oB^Qd+)Eh z1MYh61URB^{yL)Xo-4#nAs=}~QDQ0HRZ(A`OnIGFNxKdV2Z*2@bnj-WC8d=UTpU0E zte4fittKzqP%ij{3q8K`Ci6cB^=w|{TZsKR=fE=D;l><3c6eaNVye=)RsXF=J$41B zu)3aI=Ip)+5Rq1B--{qs+gV93jvMi=A5}2w?95Q@U*Wisa7E4iXP|Cd%5J>jx)EQm zy50uD>?e9-XJDD{gGq@H^|PpI$4ww^|C(frUY)q&5*zFM#8JYZ|COf0`f|(MT2_y! zKLCP`iJ-J3jl+i0&e92$AX?b~@09OMmN$3%95iVNuJx%6oQvU!%}cmz^WX)7qxm~j zWX|~=BYqdwtm1fW3mkbJe)16eWqp>0*rAeF-YJI`6b%V%25HgnHZ0M;=vS<9pxS({ z_9;^{e2!Z$$8ZJ?saw-MuWsPF`u!MQVOJUR&7(pIcl!Hug&Nul`0T$a@NI!NXG@hf zl>Ep%p+lba4@c%Y9(sX3?WXGX?i_hgbJj4hFP_Y-BhZ;QTL!LOKLctt~=1XI8fi$xjG; z;%;2b+6<%6^h;7}Nw>I2lWe|4`P8W7KL6S`R;kOFHOByOZpxN1DMA3TZ5HB3(FoA? zWsCg(0X%C>nz9&{gV*TWNYvGAz$s}pkBq{dZUfsPWXE@$nJT>Ha!OlAqI!xg6x7!hUV-f+Chwd(v> z8Rw0J<&@(SJYCWy9)kw?LUPutF;i;oC-~sx&-qE}Y|2qpKQ!y9tcm+dmWnpl(uZ8w zjV=|btm*Cp&o__vj$JTN5mOBCZ$fmZxm0ibC?+9^f0kc+0`3iHu?}q(5Kj=Wp(OCa z{VsIB3}^{&SyDX#P=uw7Uz!Afo95wBeV*!BMMYYW0W(p?pn5FXoQEhJru#iExAqf7 zahE?jDG(C#_>R&`z8A-~f_88EM$}g*(IJb_A8+i&n7`_Hxd5`C?2<5k_E8YPr#-0e zEB&4uIP3pM+LwS+xwdUDL)ej_Epyf)nNl)D5o;;4B=Z>U%$as58JA(J5SAe_m!S~J zP?E5#jb+}8BoP%El7wY!t>wR-)qdY^|GW1;zN7bd9N&Aa@922n=ee)@8qVvy&ij5M zJnt)Ydh!t8yJG59PO;RO-{Js!or^p0!oy3=ikXp6>q!18)ssd!zsuqRZ}=O=ijRYG zb2?n+FP}+@BYwrXt7(jomOdO-MhxJ3A@@N&ty{R%_T0NCagIu7nr8$_=ku>)aO7Ag zC5UC-@TWo7HntrU%lmYme$h6eWTxkV%Fdiu2TTC}d5gD7_RIB2j^=a#K-qYoEDN;5 zbUe`Ia3#S9bp0J@=8!Jse}^jtocBhDIk6F^yP(s3kP)eTk7F|W7-42&poDjgcfrU( zV)N+r5JfALVixSc(72`IpR2sFNLjJ(#ImTitmVYyZ7r3gQ9fiQCE#?k;H&pqV#HF8 zVh6UGT5U06W!$G;8F0-SyTSzJ*ZJGXz9sX{pJ2y&5$LY&%=Lm*$iIyVzZ7DAI zfTwx&THpIz<5Bn~bWJaOs5)^exo7gVpXTBHv{xHx|6*wVZ;T=xk3HFib^PC08rm25 zlyrpYx&m}9Ta;o-kpsna@-x3TZ&SzU=3*LQC!zWn!AYf<+ocdS*|zZdRmk8YbZu!w z3p%2?bILqDxO+b;OPXnz1`YF&9NgO$I?~=(KyuOx^rg(YvyN{=_hf^Oe6@Ha!+YDR9e+uJZ5lrkL( z@tJdnG`Hi3K~_&@{LwXBk6E))$CIe+629J?nL|ud3Hdy`r)_^?)OK1wq~v~6m&6~| ze!~fM++c(5ZogN*f8IZ1{7@zJ?1Wi{d3xllKu2w>#GbZHcTPVQ*nOy&i*(SD(1p#< z&%l4$0j}4g-t>)$Sq0{0;C=G{1CYSKRB34JryZtEFW;H&#EL%YTrFaK*Iqf-K>5}0 z*Lvx90+LTSCi!>BFa=*1UKmEKC{-ie}<; zviFe}i_+2Y0(^>|wI{1@SRxVfHO$f}5dI$WBz-~9*GuVyYD z@)@C6YG?nv92Bgxp+{bv^M5!NdK7WR@9~B-?S>tYF=mj`s;VdxW6;}Cq3B)#z=l9O z*1z|==ezdmkaQZDi%nxOE!Xxl$7!mZW^*V`?86L=4WmC%DLqeDSy|h+0?0!H85Tg( z(B6XA?W;)=$;4CI<&&nd;pcV5h?#DD(W7>C+%9&4L@1r1hJwV;6^aCQC@Vt`=7TqA z%U_nR-7EgE7lX2mk6hK+i+~L3}@ z4-6|GVAptrZdfyf|7-8W=8JAEKO#?9LVIy^-`4s^+lOckHmutbH!BAHqE1|dDITc5 z^RvfB3mWv#CutYlu{2M|pU@Q~ww9Tpc2Xb2SM0HFAR5nTIsA27P^$gNy7t0Gre{sz8+!ifkwE4ucx4W?8P|_wmTTM(7y)k~*=RV4Db6fOm!KMGk;*t$-HjT`I#K-bXiJ@G04?NB-{WluIA7 zg%>`{TQK&Q9wP{ChdXlJm9{L41X2>T3yLfQHr|cBU?lj*ixb{s`Kb?7WQLsHxFefD zt0g&A5z8AE-}G_%QpZ~~@)J67Q+&~3v*2*$9 zj9iOa6=J^$7=qjI9reOiigv7ww_8=m;$yw~&oGH`ouT0-X}eD*O7pAv&6 zcIA(zY}?m1+7GEupT=&(bmDrai&2w3v4Fo?tWqqO;!GAe@8PFwV=A}4jKs|U;!C|U z-h7|K<(wE1s3`e-K)a7iIVR=Z(-9v;z;Cu0i~n)~`nM`S>q3-^lFZ9Po3E_Ea+B?7 z0soW!Cchc~*~#(Sr9=3nLRQR!n%o!&_<*+l?0W?*b;O`ri|Wase`Hq|PRNw4rfnyHlm6IC z{AV*%G?O8%N#Bv?l<5Sk(Moe6W~ah7uGH{)1{??valcRHZ#nd8Ghtk_z+aHa7>k+y zALp9}lv7AIClG>W2nycW)OP}?KxPM*e9VA)n2m=b0jm0w?uS+9oJS%eVX>A%F<=nVPoEe>){sF zFL7Ev!Yf3K2o4zfls=0CBJZ06^2;+d)U^mVx1BZ$G}X0UUeuF+p6t^K_y=*jbMI~& z{;3F^){#GbI+~6K(Jkk_s{7*@Z&<&R-Z-E#tipa5YI^sw4S^+f5l4JRF;?0y(E)+M z)CeqP{X=@?nrI%Kt^hc&`%vBR0f8Y5t4*1YSslvx{CwMALz@I~scQk$;dnWt~VFy%f}9 z_Y*PI6_Y5zb7qfNuGL5|^mcd|@r z=c$8DQk!18Y$a8jslqYy1>|0{1B_YLZ2k@`icJ7f9L0z_u9yIJt=>+Y?`aDbMLFh% zMVjB`s`J)ApH3xx2&0g?kO)TE#zk<^0Si%o!7{0^D)=Tf^*vYHur~95U4d^dr;gjw zXTmlKj`8DxcOSlD4mx6p(_Xrk)gYpzB&pPeZN`>RCPLF-9t7p}qSU{rPI|^W@&R47 zOJ)~d&JJl}5taCj~k>5QdDxDp0UPD*hfsUDw!eqZ#l*``D)AT|scAWM~ z*v9VMJGZOexnH*fX=1(cf^4U{tkmx#~hDJ@*+YKF-Ztz;a>R z*jX@An!IPqXMX-!@dIlWZf{v^4#rHlZv*H6mCT|cVgFRc9Qj?rpP?-ab59M1Zg+pK zD#?qbn_pv(T5s)6=Bv$Lyxe+miG}j(NeV5ICk^*gK5-(Udvkx18D+};L7Us7F3*X! zYH_puo!Ihy@g?2ukASD`mfd=l2WhQx-FZPB=50W=k3h9GO@hfe4AF{eDIcFKCC9x_ zUjBf7-kTYM zN;&!L7-6szcbhM|TaIbt{oBsWt%!BIAPpTYoj?QK%pw%?%@hhIJs=g^8SSA*3P5>0 z3|#se+Vs{|r#86v3iKF3W&ec>nx~H2(?hmYXYm)fN6X zqw3(VZQFr{V~T@hv@#*}4or34?@nT$>)!5J}P1AB+5otfcVA{i|1Bs-=<6qu`7SRo`xp zGd_QJ-%Gj8M{&duXFjVt+%lTW@qZuf{8zNemtsK4l=IWWKp^k#TnSoZ4f-g}V0(*O zVtOY;=3td!n<5q2Mt+}mtb)VdFl94yhXzgUdH|4p(yjOdNOh1XSbvcB^kvJ& z9jT3a_l6BWsV-bEfAr`llgYkzdU#TbkBJeTu5H)4of+jVZ^NQ!%eJ#=tN~`3jD%lM zH9XVq9C^uLk#+F@!+a<8BZBDj+M5?)6#kR7zV|iz)24i9mP1ok z+bMTX{$!@)5BZHx4zw$Fklp0AUQs_oM?oLqAQRgJY}>b%%ne2@GFt+>@T0+*pX(pLnzz^Kyp6nkV-{G|E0KG+RoM!VbMndAunrXJo#-9BiLfGQi zYhcMh{XMUc+S=`Q@drtCt){@Gq)^^)Z-#PNH|rT@x=NeqAm8fu$F7XCF&5z)&Xaxv8lc2{K*h%nzeTuDSR-ACw=c5|u zhyG;$_^tYxfZ}tT;VoQwci+F#E5KVSfeUtju5ra2+7hDrJojQeHgU!Rg7n#(}VSZ+@^rV+rYSV6r=NxC$u~ zD7KeIi#g|GOJ0q>xxGHfI|q4A+hvhAAnDxex-w7BhK2HU1Ajp zcq{-S3pW3W#sYB63nj*DIWsla?tS?1weNZI>`n$^EEeN}RA0EHTNbJb<16Up5_fn? z^lc&)`1uc3V2+ivBdp5$=iW{G(`|b?DE+iG?2zfrB-EzM57u2)R%)Nn$x2hfxddomB#3SRMHJ}*6=H&`DV*v00!cJ#(3RgoA zOc=E!pI5lOZyzelimiWAkzmXlU2&Jqg#wW(>7xVL5eI~-=J-)P=Gw*Pv?ctr#B9ikVL0R4~vD|B-ZTJWf z=o)I!fvE!uv|DT+3j$363>NE+V7Mp(N+?K>`)KP$K>OAG2P^~CS{-r7#uo+iTm=@g z3^JKf%FsN#(ZO_i`#MoV)v*y~W$Q(`Gs{KijU@!K6}SgR5I%!N4Q zz>hiPr8ctD2kFgR)MI%W8r_y2v1gqtW_lW)nS19O9%_}0^cfAbD)y>=7j&VO60hm2 zsFC^EFL@XKQ|>;Rfc)00{h(&aH=~_L#AD?vdsnn_1BXjqET%q!GWqD0vsL`omgm;k8>jqYLk6N0*1RcDLT$1ru}{%@ zeAvkzXq(1;5Uw@gaw|773m-Y}-qPsem56(hvaew40mSy^vrFQgI6gV%;cPRunnT?H zbP7($0H1|NxQ8oM)W>GDin{&VFgn3Hfl<0S%b(uD_{Bki%1ns+eaKWuu7UrU@JcF{ zeA&uCs>K=HN+dAP2^9@caqS18Vt&?U$HG+xuME3&K@r5BxXCHuW1W0^Aq?&ER<}q|-wL zYVx!1Q2Jy$ven#EB)A5w@h4o5 z`a~N}`+|6>Fj#iM2_!W)ELm#2#fY~%aVoZoJHs7xZhzR^+T>!f-&$I(T8e$Tde=K~ zsmhVM;00i`;e;5G(G{Z#H3+&tipxboVj}<6;jsCktoPIgpS3)sTahPuILE(FpK-3g zP5v1t`h=onNsjxeqBxV1qN;3XM$rmCx^NsK-aX;R>d{g5S*aE&mI_QBMO2vXq@egE z3O5;8?=kb{bQ+sXYTYHw_}anAB|xDdV<=;XQ9v)kzJgW%Kc-5x2taBc>(BMZue((4 z#lSEKAd)A{BXfa13@ADmKh3hSkJ^%B>s0XucZPK2GV`VXWj&lbFM3_q@5SJaS04D_*2fQA18^xS z#gFoBl5Ah(BmNlkUm&APw2xlFe<33~qgv1ejX^IXN%zB@jx36%P-B~@hzmYx33L)J z@Oc<<=~pY1*~vs0PVVE2*3Jw+ar;paVmJQ-R7jBXThwJ}n?XzKQ;7nwRW87Cv! zxB{=BIgZ~49(MaI#~KPjMPGl=3-`^Iq^->s%`CHdWE8K{d%>G&@m%;K)wy#P-cMSD zTtQA(^2pcwebbY(^YP+$W+tQ)K7gp~Y44gOOgNDUKS_^p7@W{MLWq0EeP*&Wn>s|u z56s~x2&+fY`vBWh`U=UwTP&7Mn*jDK9J0;MffDq>jIsZ=B0-lonzB^+1$^*HBVtQG zgzk`GDy!u#25>Wi7WoZrj#$w|XQLe}^I`c8RDb_wj>%11S*tj^Y<3E+(XP*%{#{%UZKJpDffc1-OvaoO~uS|e_UxgRRpcHKlSaL zXm-oJJeDvx>(1jw18(+J9HM6`!u}5mvTG8{} zI-pU5D28HE?{or~eR~+6Oo0sl*NBaFZTiG+3}AfKZqCnSQLcxyY1Wv^b}p8Y=k#iG zuRkBi8`VeDdcVAqHbufi2+He`yzP>klv1I``!^}&*((kvb4K?#8M)fe> zgo<*hK{svS-TP#5C@WWnRlRC5M%i!8QBZ;^(s`qLq1Bm3aut^m%0KT1DSvn8kdC9V z-jD(4xzAQclQ(JX(cKgol}vXH-B^rHVe(!5Ji+VX(i9tc#B9Jp9JcEYe2j?6^~aT6!B>P*!Mi;-<=Hru(`bjS@XBFOe#tA@*aF zkvl3>Yf$)(N3IygeajO~KZC%)J$>*jxg1TiJ?Uy>NPcqhtA1_p4kL-^=^m zkNhtv29(VgTPPmCE~7OMcVRCbT%W9xUL~w|%b|XfW%@~mxy**eOixUo9Bg{1wN~j3 zZ@4eL9$3lK2?uMKgG0+FEDMA6+u|4QIB@%?I_220)Et70c1}$Hfg&LoDDCx?ye})Z z?guuz#W&~dl}WC`#zriFP@$zmYtxJ9i(V=!Bb{jWY;`~u(UnlCL;r{A>~wt;x;#EUN< z4cPat9V6Nz(%2`RyMhbM=%ggnm?$q7+|BitRCA}%olN)&QksEwhPa( zyD7!GsECdEre-|$aT;`}W5D69H3IATa6IDZBib-)%-q(xTqamR4;gHI+>2pw#S|SQ zNM_R8br5gmz7V09u^!~TK zH>MF4nBxzszy=N@#7G4ACZoFC)7biBPI))8k?LeX7p&xv8z(kmlN%`=B6y z`d~clU`E#(Z>atlqNdqkB)nB5+~$w2Fk>_m0WoUPxtWZa<+5}4nwrq&sGSxpHA-?! zwhy@{3mFM2y_gi0JJKv0liIpEpsOBvTst#;!zUPxM^qp?lS~>{Kp`82%5qI&TW%c}K2IHj} z8Egt3dMnF{*WB~Qe{s>+i+M_iaaebS}J)izE)jF{QQIycdP z2Kwsro*yiZl>;VI%H9^h4Y<%lRQWhCSDyy6d37+YEWs!Xb8qd}89Q`!v{h0@@L#7k zjc|t$6|;pbzIVWU1wvqsU_O&2`HtpMf=Al#es(Mc~8dCIt4?2vUDtb`#{fqF<425 z^*%@vZ;!U3#l@!~4?NZWNq0W>Qbeo5HO=I5$tT@K zFlKDzM>+x{o>{l}wFOsg{F{VgX`+qwyS8?8)6oNOY*gl?;UgkVw|ATbsm1dy4fB$; zf*~fkqRdezkEqGyqK@QY4rEKRe{f4q&h3rG9F*K>QlWd)xqc%lw4t8g>R>0Y@EiHY zccM7!y7T5%`%9nqI2VsxYjE#NWu{hR9bI8X=PbQHAt(7SW?8qYixYO ze?9nUx!zCI9gZXH0FYwCvJ*%F9LT~E|B5R&ReR;=6Xy7O^PN_hXZvM#t&h@-4I4!< zUz}yc-*lC?o*_AH71~-e5G50EF8djXZP|_rvo|KWh;VcT&T|+?2KqbA>Eu)X*D{q{m_hBIoFCFdI=^$5U35uXi zUCKViViq8#KM&Jt(9bwA>LnEVMim~{@VYT9oI=0 z-7T1$1a)Vy4OQ}_6co{$q6kFF4+asy*XJ{iZ#Q-rPhJT@N=n2JmXzneMJzSC*ICR` z=p=h&8%Wj@Thvm{9&b8Z6c%|vT17ND|E{>WPwz_5YF}n#dM6^hF>@9qmU2s!a}-Ov z#%W5GUtX0NV=d~-DR00^(*QA|S|=7bNesm%UVp77sZVfZ$+xA0 zky{6o$d2Qr@F<(>6x_gNY<7gl?UKL?>_|B1jzDV~?~kbmpKlB4SSTQ!s_N}3dbcsm z-gxZWu0+FBe*LbwjLHy`N6y&*Qen4r$mRH}fqO%-_<&zSZ-8(Q>!&ZM-xG@of_NE5 z4zF&UIy5Hp`p*8Gip+pHSV~v#!A@NH-p#|v3ht%8dpMdC@1LY*h(nGNyhZdu3#!Yg z$ukvGBjP3P+`hNQy zoVN|ShjOtK)6a0l0KI#!xfUHEr&DZiJFSGXA6uJ~Mal3-Y2*6@0l};J`XFm)U}fxq zk2Wn3?Ut^P?sHB_BjMrvgW+*sk~&Fyn!UGW=-UkO3MiZ;&*Yt`ewVMveN!er%fee$ zNJCgh`*Hp}7iXIxPLf?~Dg%+?OTYnE7!j+E`HV|a$I!2f4qK6?jRqaUL${tW65!;Z zH@lV_GNU4Ct)J&j@pXN(?aX%E)HHo3G@b+4^j&84rZX;brPyv$@~DfFVY`40dI1Fy zauJ*GV>I8z~v9_HQ0VX^5UEn{@NSE*-uP2bDG9=7pf&`)xOJnP|fi*Qw0wRJi=XD77@ z+F3?|IGh4h4BM?}fMp0AnDU*evjfueR8fSC9%;EgA^yVt%JcG*(oAWT8Z@jSyiMQ- zH{kh7>bRcQlQ`!Wcej-3vfW7EnUZzmr!|JvQ5A_1QRVT&rrttA8qc-0C&TVF)wY1jeRAX|}O1TW^SV!5&LFPdRVN?T-yBUW)5XhX}UNq@il|M)^Vq`?j!w|I`puU9t@T@JdwyqzV>60 zaq9y_MzPQ6q>$9!ZG&Pg1k?%H_-Mql>ZE|mswiQ0$vQ^(qDaVw zNWUI6dZ|8Kcx}L;b=iizVS31Vd<<)iGP4#V&TK`Dbm0n=R%9Y~&!DB}N)#K^by)oTp=bLdMWv}ISrmPfaF7@-LyzV#Z z?l)R&*ORCxo8`kX=6M}|Bl!m=PTE4dRX{+WT&17XVIbdHRj+@NA-l3g+lsdP!LA7R zO8Ptlb@M|!np@kCH{(Kj6iyS_ra)wyyzBn9P4S9^!fSiM?S!&rHlLJc7d|OG$Dj{0 zMdw(|4(YEqy6HIpSx~Ec=mn3i>7S4odh+QwkA5Y?j1czzL~h{Hav(k7{Ovy?W1$%6 z{-SuII?Ks)Co1sxd1L;ZDBV6j9v)l#M_Cl`>gq$|Z@92r92i1)fuX7*sA^Qk@TOqy-n6f z3>Sqj8_2XuMz>By;6izGLh4=3Pr`%u!$Aoy8HOx5<}7=b{`6yn9T}0@1+1168_mJ5 zZC*a?T}plov(fEZjBtDt`pXE4cCmU{?W?={3l7zlK<w*Z{>lt_Pnwq^!3n#}Bom zXRv-v)eZ>{eGBAXlAlvP7sCswys3Q+yeH^Jk>Yp3+Z6Tq53aX|rw4=2^8#G|=kwp3 z@^;(V6nvxGz*OZ_I_Ha~Va&n9`zPY^nZ(6+78HhwKVEkRIVC9C;Ba|`4XOriq4=_V z^IZDoA?T`SKguEQTzu~s0r=J{Xe`gHZhYSdac%r~LUGSFOqxt{rZ~y#^%qp2F0m)C zE%d@Ua$%qGKVRaeI=Cv6g6+ZWT4w@y!R?4oyz#$sJFZsi3ld|Yp_gW|t$|!8Qkq?A z{QQVKlJpSmk1sX3N<^xL&1E1KlLN=50Qawh9egF0G)1XR^4T-*lZ-z=N1UG#o&Iyv z*i(j??eZV#DBz!O@Foyu^*htzP1zW`%-6-l#VrwYUwYauNss25GYmu!B0cYmDPPPL ztxD_*RmJ~$@Rdv__Hu)zp>-GTr6rqL`W_krJ*s_lAih6$#>+xm`*n`j!lx_zq2792$3Esk9b8-`+V=^2vfudneKPPwO)S>wG_jRsJNJ2=6dD@HL>a+zV>nG(>4i^~g6>WX}p!m%_ z)p=$2Wx)Q9T++?1@5KV|Sa;O|C3e&Zq?&6rblboXvok-l9P z|4hgg2!j6K=>GXSB>;)Ms_fg|lKDk5&Q6CiSJ!|Zlq}+KaRcJG8ho)>MyJ6?21Re# z#1mBze*7}JF@9DmlJjbF%fJcJ^xl6yl28v&()+}@lhwA1rN7>i$-$&v@fR~DU%-fq zD`p`_ofFhP(sR zKKM`z(m-1nQ_b#;T%FS!ANR~Jp4|S=#{;qg-SUa(B7xs7n35qDe0o-sIiGbM0c>?Z zj=2mdov$%c@7i0=#k=qRX!)d88@*OuWkUA-!^oQQt2|}hddEt<=9p!`3fwfHjy-(~6hjF{mpRBE2-k#w#OyekEQ?iM~>XusV}f8iuq;RFj;U=V7t}9#aRZM5bRJ6yC>FX2a%x7byKSxCo>D1SAuc(X^r=50ZAKm$C+O-cZ2~ z#1en{_O#6YEWY{2Usoso&+~08fGd}1()!Iq3%S1{E zWN8zz^cykG$uY^e`I687oN}=wahrpWOkMne5f3wv($STF9YR3y%)e}AMX4NUXrVU< ze}9eLBq$l$@K^l2VY8R^Vkg1$;$6_7pAaM#BD^ZVrB%y-z(C%naaZ>TuC-);UrKFX zB7fuwwV;)h+C8!pfS7?#Xzd8k*(ptFi z;Xhl!7ugi#Pc1tb3jXk2Gq$DWFnZ(80iv%o@9kLz^X|iJ=jvgb-!VrBo#O3B{ z#Ja-IDQNvwbgU-so+n@eBX=R|} zvK&b`pT2a9-p_D-Va5(9`xg6|I&MNXykTwJGM+rfRI3!9I9`E1tRh+KicJUP?KHjc%8L0t=+OJdYotw}&X@`zff$MdG z298$sCOH0Iy~&rY+8}x3i@9rg(*o#E)@x0InBQ#MGI@bnbs@>7Km6$W#-$h&h)a!rUb z#c3{&#ur{~W)Fb=;o#SC{?7}QnzU*c?&1LjLO={Ap&fTILOHS~gc8%oFQER>-x9LxR>MyGJ0D>xG&1EgZ$dMS#mf}4vf)}Er zpK2gET3WuF&K!B!{#CD@Haj~KBE&Qs#yz>#!=mMTK^fFfL#*%I_j-y5qEgh#3{iXd zsJ(7C`WFlK&>4fjKle|wtR#8agl0M8R0)HSfwt!(^Q^d+2U%(|l~|Upyi1PyM0vBW z%XB;JeDHYNC56qh#blioWw!oV0b+v|0luW5zVBL;_t8hYBdk)}Na=}-8h1!m638M4 zkwuOQ{QY6b??_JG*>$tb8KVISgVf^8(_bgGRQF({+Hji!%)uHg{g=31P%-F)%{1)p z@n2E%+6DH$!fR^>&?rHw0C7o+V9&oJI#*!p(c;|Vjt%{Iug>!F?eMh+9ZN=m>Y24e z&v~hh-(iLu<>I@Y&hUlDWy3Sw9Pcn;*jcn5i!u%O>}C@D6GMD}9Ijs&{m9c- z-tggJ`1<y@%(Tp{M+ z&8L8yQ@7$llh>d4mmXYmw4JQ-?hozrdjXht`RVq4cvp znR@dHwEG;m$UH{h#2M2NgUP`@LPzMPwhcK5piJ8>e>yW+INrlyPF~pgT`XOU4?N0Z z=9JDCZkq!hr#sp+F7iim7&Cpf- z2LXMj7)*Tti`3J}l#YhBismZYlU z2W2f@+<`?Q~nP zrDbe^5!myyyeO*S3`g-IhRFPvlcW?c9%{c;G2?!ZWDS`RqN|<5M2!|;^WFN~O7+`e z9hpr?l{w=RzVsH7&epndnjq5#ntCnj(^OK_6OU;>u4jEm>TBeR7Dytwo6pu}0y^gV z7n8*jqbh>AUA|g_4nVK}aL$Cf;%1iD3s@*+s-C8^hlD-x-4ibtonX-dYm&>;m@w{8 zq@>`xpY0f;<8v(nHu#b{B{yKAZf2S2v;3S&VIYX@h$bIpfyq#6+lYt`HX!k#IKv4X zIrPRahGX9`6DWt9-~PwlMxcxs>EU`gqdytLhrH($2yfWiaQC*rc1NbIEG^05*)gV& zXoDv&QZtjSA-8u5AeOL4k8@$s1``#KH>}OBDm1h1vb&DDT@)X|rF68T@jH?z@`S4* z8zc_pyAQGI9?FdV{v0kt0>s$)JVB_?6Qffh9UI~+wO2KhM=v&qZ9Y731$X%%TMg_e zd01b_Z-u)JDx|5dCF2dwtyA5{{*%Gls=_S8qwL9h{rlxY*50bWE6_?+u7Y&fD}=ID zV>!$1;yHxemkV~ADJ?Jm5yUrFwSkv7^GsW%gyTecyfKMmmm-$CPwCIgl@kC&%}NhH=E zNj@uxB5kwmSZ6(`u^c`daBBwrT`Pr3?~uOgHda&3^&FjAeCy##M~rIGZmBs}Zi$fY zJ!d#v=HMpCzQgt9<%J8cIF#Dh`|9x<9#2vF2?_-HPyr^}gKYgC9K|tOgvw-4Vd(Zh z%31z;pN~p8M1+#6VRg_}TJXtt1@+9CPF}oB-U~0|Hcbw^ernsFiG7@WNs(kV7R6PF z4Q1F%&GFHXJl7iFPFc#v^uy(3{zQBQxYK0?LR$=GKMPE?b^6zH8fT`fv@G{#-emfD z7q!_HU{~WeO!;?1vq)|FtCgiWa)rM*B)EByB4!|D4=B^=FsgqVLzHO4(b@r9tt=-Z zUM#!WF#T{NaO)Ck())CB6!|Dy|B3*yjoS2WOOIY&u_Ft59K8P1naAZbYx@BLJ^u~@ zMY@*r;tld%JhHs&i1gj>nAgZTNG1sMY~Us!j&5NbAn+r{q~lGStUO?gQ{zV}X(mHKEc z!_+1>CQK!(mQYd@S%IzQ*}qp#I~=l6u&uC9OU$yPb^3R5&jR|Ar^N29hVNa9!;V~X zA^VpqR?SV34aC~nXYC7)&bTlaCo2$C;i1l=`x{r^59=2A`C3})j5jr?tOO-Sj5YXZ zzVTB<^`GOAaHi+6YhVBq^p%2y;zjEWSF)EU_s41Oa6UUPOGOGpcg!LepJDsLH(|%$ zw_D(eVyn}cJ3n3UA9a4igia{mqFu&H7?_uLF%ZVuak?r13LZA}%rcSz6BGpbs<%+z z`rPG=a^Z?rM$@4^eEVfaDMdMPN;&cZ4-=-g%p zp1_N*oY^KsGk4&hAn`jbX<#rA@QK38}}-KvttN$RsnEp8s6eS-3~wMeqNj0+KF5_}7|+eGxY0w21?pAR=GIR4s9 zUDlIl#hp~Sra%BwS3MSHZlKLhd_h+JF^I9fZ9U>eiRJ8i%bjgE_Q(hG8IC3X^Bqvv zEXdn}ZVeU*Na;z?)+x*EdWx6r$m_ZmRek$5g8(r<2JG_Hqh1shJgC+Vufi<&J4*jF zd3ef-SBHE$w<#f_4RUTnOOP+c*|aG!%4J8ivIx_L{{scWzO}Vy5ai0)&%anE%`Bgi z0?(U54Q#R6+ZnVk7<~6G0wv^#ioKc5CYTh2)OAb*n{c6{_<{%2JoR6`&~@m(!Kn=?i*1|taHe8Gl`L`bII z{`rnh!4*4e$s#nWN^t8;*$i6hyN6el8!qy{tvob=o|sGS!{U!nc&H;O5}s`Pp>!$3 zfh`5XJytF8Hk>bQ3PW)S*w>}Fd9rux#rXcsjj0TE8tD>uG33+=Ey88^x*bQfLjzPX zcs410Jjh35Mte75!=DuZ@__9^sYOk?&HZG)!Hjx+f?3Ml4<|E&?P|0&jYa z?i0d*F}Mr{;+NwK*|3>{){@83sJo?w<3$|i)RC*S^WW7N+z`~5I7iqpfs48j{^!Qp zVn(J}afV5X0@qmGa%*-wQq4V&veZD2 z>gm52wtYLI@OPWs zxWAd2H45Ln-POa6X{?`IUpSsxtZ)&y1ODVl7tZL4P>$j`=vz4<35bqy!e-nq z281)6H8RDzHpUs5J3omb`hA7I^8$y27x&~WX;mIlcVoRM=P^+WEh|%Mres+13x+eQ~bI^Y)nU<_~k<}23lVlAd@FJh*wVxrs-OgvIszefzkN0YC&bX*sjrgqa$9LD1Q>Y6L^T< zkVZD>uFMXH3qFQ)Tc}V19+sX!DIdzipD76d5cK^km?5uV)w_O$#AT2=^=IV}6Gmzd z3U5%4Gp1=rG;l@@s~s_4lzNbEHB{Z&3V#I@?;|S(8t1U68gCAlVklpEqDDtMTQb7bEYzPk*f%uD$!E{CQrT?u|?_V@vRH>d zx^hcW*QCE+s`>48BeKeTpOf$6eOa9E0F6`~Nm;X*rj>*6-J=q;`yCLy3 zdAZAHIVP04BT`P7$#xB+AG4S|?*x-Pc(~X0=T_kfnnkw{38KmpXu12#ccQukATv(x z{%)Z7JI7$=g0@p(z1a#zhb-OpLTOXXp#T2sOZS87mcMd2t&pB65MpC6UH~SiG5Xfd z7y#YB6?pnOH_J8AK9Tz5>*w&)nVBhU#V@GILM_6Dq$oK-=HXZ4?8vJmbmdLhj_=UbFw`Z>K5(cl!57{D} z+pspWf?MCYz?nA4hvyydep|l5tj99z8l)aM5#}RUmYP~`j^b&sZE}<{*p}uUmU(I@ zGb-8Gl=ofV{`x%pr7epXVWuPMY)d1bS+!IOK3^$_DfZM=au!5wOl{OBvf?S>Ysx#s^cOY8+@Aa3!^CgRRQ8-R;`msQDLMWge%m~c5@b~iC4^E zAcVXqnnlpXw2$d^)Kt$pD}Om2I&-t{jB%AW+|%)58}{`|`*eXY;tqvAM_)lg>2DR# z?}Jx(d6doHALTL!Fadl4IFz+e_#{_Xm&rrwz=G&JC39`;;!^>AAWXm=b9Xa)D$uH{ zp<;8U-X6X&_6wM_@EriiNy(|FBu?4U+(Gc^1RzU*l523JxzY6F>&oy6w-Hv5481O!^P$gE{ zZdTY=VbJiGFDlhTLRg+??TJlY{Jtf+6l{B%92;yq7{f;@5;|TbN-4bp|8>JuiOLrH zEy}y|E$Y4&&X^snTE3OPz~MgxE@h1fT>J2TDGk|&_Y4F;jiwyYasnuND6$$1RLFJB zSP#r-7ucrxv;LI}Kl3qk$7QPU|EIF}wghl`#?YgXSK=WK&Q}MEq*vhX7&LIX<1gFS z#*+Xj3@Q*V$6%)0a8`oMp3vKl3mDyD41i#L!UhDYnp|c`ahg~c{tSl_xEVJ(cM^DsVtMwB3qIq zj1ZEfLM0>Fl0t+S3@IvEB7~w4MWIpFn95xSNhs4;lPwG*+c0Bho-;%D_xto7k?AiK>_0wZ-{N6_F3U3~H6T?V`cgzEM z!Y&uUe7qI<6dFP3hkMXmT^6Xp4V@a^P-1fONK@mMk|6(=i1 zj1s^l0c`@l=8DP!10YS*g|57iL{J!gAdn4kMV`)dQy!O1?sygwNz;C+xw|hTK7yTiy8x?E}WaT9*Z?pd< zv>O27ZeAk}8v76L56`41;SUkMd&zB>x+xvK`RS$3~<( zx$CcCo$_iAq+!_zQY^ool?0;9%R_k{C2Ll)QN&89^9}@JhOS>dBKx0Nfuui0A<+5d z6YJM#e_VLp^Jg*i7HQ8vL#2O`tJu^o_+cSVazIsWK$Klt$MxlSQAY%T=@@}9J1WdF4oU= z+Iaue@rXA-LUy)xp+fFm5DY_KfM!W*X_*g~44`87XAF~_EDDq z$nzLKk*ZZ}Ds*hG+8LMe0LHPrtOFq;%Y7sQw%=4sHa>xpmbXjJBI7uL}b7KXYh7=6cJA|)3AG4tQuP! zhE4)nD7o}T@Jw8`E$h%}pQgdDS(f~mDu4Ec*+CCTc=*Xa&NtHOKcyS&uzS6t4nK_2 z)q!FN5{gV0L4wnxO6$Ar89>U~DE z&rcF{WhwAM)_CyjIvxbrK2%l?hzS-hvt|0>t4<>v=fp`3%Wj2!w&jc%^)zCer!qHy zi(Y_>c*U9x#rpK@%^!5}-q=4-Rg8kuO`=2r$YxjiZe6(tQqI)FTe&dl>V0_zk!~87 zwcKVmf>4JhOW8k$f4y`4k|C2VDT?RDL5IrKfUAeS$2 zze!wT@pMyg(TdpDs<8FK3><|T#Z*v z+xfZfjxs~dH13i;jB2BeFj$THe`(V_aX!jrPpx^B_wrY}FCDWjtEdP>IQFZ?e$$Ix z4xM~AQH)K6M}v2|jE?RE$^;#oLQIGOJ|dA1rS~&q8{_`F-C4aWep}H-JlNEf^xZ^1 z@8D zIB?1#zv}dgEPsQN_Y-NOXAoIzHv@bOgdo~#9V`FL-aoOFAE$!K%%|R6K5_}t;B(Xu znv6;FHCqsiUQAB6Bq>TPfsTRn?L9_`s}~bHhE3m+xszVn{q`u%u~&+Ig4_;m1KpSV z;32V}QYqz{LLr~wH-FYzE<^9u$aW!X&2-){O-Bv6xEn++|q$HH~7dHmy*vL@w) z4I)q)f>~2eVe63VAn@h5Wyn1u-OhdFn5E?`y=F3 zj#wknT%mwy3S6)dyS9WB_bTtVhd$5%)nv8#Nk6AybJY;qW|QVeo%6#(?Nz~hUg^bd zgb?StG4-eIKHJ2Risi*@oFTruBN1w@r>J92CKO{Ac;K^1mYPPBOM6!SA`<$!0ur`n zUJu@^s`Dr6Go{2hve#A8(ltoT#?oz82Poj@fe2=f5oRsw3d$Lk6{#27?V}<%aZXT{ zLG@C&Io-Kz1IyOC!pl#?1L25)%(96NJzwRgJYQy-Vq|IgY;?hb7fR3(XAq6*5sYK6 z9^VX>R#h6BZB+d2+#%{)j?O>2e8eunl~uPk{b*d)OFvdiO+C!CZiRN7hpdHV49gk} z+aE;125AtZDmq#(F2k|t*V$m@jMU@Z*KNEkr0h1-_A%6l{HE7?PquOBhjY( zdcG;BE4R*~Wc{ETgA3{j^yP*l^<9}n7x%#$-E38UFYj9D%qly_c~{_Y`P|2h#u8Us zUbH1av^}t4ar7nQ?|kPx{jCQ;IB(_Nz?WRH1lQelt2qZD)?UCk_oFnQrW(Ij5qvU< zpF2CITrLy~_APtXbEL__=VfU-K>YeJ^t32xhRAfERZH5L{=-_Ex+dto*{~O)uNK}- zKzFscjj(c=4YP_<{au3*v;K-l-? z&O8-i1Qbwl{L*%@+mPAjU7F=TiT%PMxBO6jb)5^x{z6;IP*0?f0ho=R=jOK|J{|J= zfwuColcrsIzumivAQw^0@|t%m6>d8^Ulb=h)C^jqt`whtr!`c!rw%CD%i!=1h`Ef$ zdP5^i?eL#oAQQv9xs1`pd#Fwm@i~gy`;WjAl^DzyD74XS6uvNHXUCi0G3@SrNb8%M zZI30te`Nf#@nBrm{`(Lf?NGr+p!uH!x?BTHN3lfbnB^LFrB?-mRZ%a1k>3q3O@1ZU zkP~qC3cJAvjy7V5&jJ4Y&FftxFzDsIiO~@)zp<>4&>K~&&G*PM4i3ev8^+D*`@57^a)v-G-WO|wQ*Xk#M>v~_pI1~xo)bF0Jl zUK?8xE^_5SES)afv5x%!=^EHO^t(?tK+zUA-_}xUqTObZIwd*@G>rkLAS*_@SUd`NAb=2C6HbL&(*-s}E2wui0uyS#YX00bA+wCocJ z1FDRRR#VxIrDc`JbMyITR>A-BG+P-#c=`M*=hi?>#lj_3IcInV%c=E&_;NI1Z+hO&=y6W-^UUly1Lg7vw@!&~g zWhXm?@U0LT7ON#sxtQfYe-*(L=ki)CsDCPc*t<_<*Tw&)HitAR9GUOGyxzld2iFJ5 z#&MrZK}9UTyfiBhWMnOIDKPHr&^_0l3o>FE`C1?jbI}35tNYi z$Q!}%XiH1WyzaAR#gOsbK)^0`vL$Qzo>u)sqRMXiUFcES3N=;2y!Xk0{klp=vS-y` zOUMG^v4I~$fQdQkO5m3_3&9Yu4ymaoNSOW^Je%BKTz75Mq3qJUqYZxUW3y@uG@SMP zdJvmKuv)~!J4II=AJr{}S`PkV(ttidW2M&KV7mi_Q-Po36M4T$lH+f>Vm|)2tsX?c z;jG!^6FWQV`c~#jz!yMFj`SAe*+0$>mLzXNpWt;hffSezTj%iRWpg<>J%b50K^HIE zaM#Pyb(!?Q+F7Giz1T;ba!|Im`iIPOVWwRmoeZ;B~~01b|lRUhjIB@(8Dt}22%#zAvq;^2wxe<$6J&dsBBX|}QFJ9|%} zKp8}y*d^Fp%VYWqen975X89Z53kZ~B%%^@HgpQXS%?<_y7IVOI3U}51Kn;E^w4XY^ z#b${56J@EJRkG%)UtH|u#ms%=7<=VR&ULi5urh6680!Rr4>bH`jwr{FFf?>M)gXHj zwihYOKI5o2rE4+$<~_RowGdv#Y5aPL>=B3$UUYth5J~kD?7Ybq+WDlBFSh&#jhwNK z@0BP^*#2^yF8+5zPUI>-iLBaUK2i}|cyQ|B!JmT)i`UTr1H)DgURQ^906ixG=HwTY zBB{eD@R0wTEYG94tS3q1nC+K9RPuM{5L#l!VDhzoLT?=#7qE&#?t1p>*6mB36emLhf(ZKXli^=eR(Y~kQBONkZ$R&nN%tU^9cVU zd?cK7u%8FiIYP3 z_3}G97o70Xb2V#yy^3`=5*-oI_?GAZOxyEAq|g31J>TC>(Cw2GmnEifRO|FD~&F@LiFlMPJdUQUUaVC$g8c3mZY zSq5Fk} zT^+gU{>i6g)UBLua)e9(s}<-o(e7+A-A*|4)!6i9qrqQ6I?;d50Sy~@5fBz)TwQ3g z-*>uG%OhMnMHn`0kwfQ1vp`Fa*Ne^TCT?Kgl50>7e}^Eo^TZkYd1y(xax=OWE^S`7 z@OIk&VbGpq0FhJK*yK|ycgr;qH=D!}%GpImHJi|zaoYS7h8hm&P=|%#WIuNn)9?F6E<1C$ z?tbSZBsvdu<-7=Nrn7@#5d$LPZU$b=>?9e$k$!`n58(LPrnPwg_BpkMFJ1rl<4>Cb z9w&F*&BbaL$uLdSoSTSRiznv}YM}XpwVkXI)mZ*8=t(fVv3w2$<{rNrt|tykIevgH6OJd2P+z$Lo3Ig*ziT1pAVTeI|d( zQZx|BV;F6gMv5RVfgpZ|G!pthF8IGS|Vn(a*E+!old! zKH)2u_V9Z_T}{ve3TF*oD9ylcFtY(KXzyCdvb9<2d1M94{b91>!pk=Q+X)Eq>oSrt zSOdF!G0WsrsCQ>zV-K9rHvbI^W0Ai=ZVQ4Xj$Qm-b7VY790Sp1Tc2qJ%7tf%fAW7(lx@Tbr9a` z?%xHy!g;v{wQ#Ny(QO>xs?J43TN{2)t2M0Xo)>>SbMlTTnExMquXEgXiU#{TPhq@0 z;*M~nz|0>f0ecz{$Lsp7>|}$#Uum)M>Hj!(j<@s}zEkiBzT^k@i1#I~ow@sdN9)Uv zJW;2oy95UCyPuWLD`L9g%LpgdydnP1MM4tR42?e6KlN9jOWvWtT|Z93QG0nuEs&P% zoR6T#jNnjxkw2qC&j)k&q=B_h6Mi&u`DrI~fV%hsxD>T8w1orOhBE_&K*2RlH4uh^ zPmDC-;5^Bn=mF~pp4c_4wB)=$9sX{pOr>PkV`aNxW^?6^bqw_WsYmf#8~VGt+WBJR zr`7qryhQs-I#E~dZ9oojJHlIDdCIGlVKdOXZ^moB_q=u#Z(FU>5y;tn=nKIeU-S>7 z()nWFLA(ocJ}NHRy_un{rUCjx*v+p;f6sdHaDvmjlRA<+t)V5}EN4=8ZjyzIG{UrM z{tGu&FpuL7oim^KP2>F5iiA9M-8xZ(aluvXns+W8Jp_!C~^% z9Wr{3e)@leIPWiaU;N-b$bC?{OV^TwCIKH#1?BezSLAt@IX;;jKxQ|jt8YN8BZ(Wg zaJj}d*ECoJ3=+{;mw{I{J4xrIvHQB$GL};n&Nqh#Q&4}wxlIUViHNESO_R<|8da;JR($?LT3n$9hl0oa0KRV@+ zZ33Hc)7@$eT*+f&#Gt>X-xf)ZAI*?@`!~{$K#W*DnvLYSk(tx2-8QF8lPqyW$(|SO z`vRJ@4oLfO%D{5zV4b6*!*(5-gp;_;QosGG;9T0kV>_pWzm1 z%^Ud` z&zK^`^~iNCiwI@eJP&K840rdF*V&yrFLc7Vj;Gf7MIsVm=}*%kJ~|@d<~Q%(aRR}g zQT1Ru<2%p2pl||C18d^;Q;oc`t-*vnqbBaee(vD2Jp4r$;CXksO6h-{GADIy242G~ zQhY(Ds^o^vyX`*evC$l@=^e9Ae-E7yKIrV9;UEYva3~7mc+hNDhFMOM1Oz`UGHGeoH z$`*Qtv^%m}^BU-5lB4s3^k|zJabt*}0_b6XIHP14=d)W0sxi;u`yH$pB~b5e;L8(saEStX!R_ua zh#m@_r5t<&t{iOUi~Xb*yA}z0-?8Ssc>=QH1<)9N)|cSM>A3NfA9oOz2sBjtcJoi7 zQQ{ky-#v-AbsWChlg>RF3~(a_Fxjw+X*j96Fj-H1@`6Pp`kfjOG=>xeBBtO6Qu325 z|M#Wq5SmhRk2#F`o9r<~WT`Ricb~{{oce?FejK0TT~!Gz4q$bb>_}J$j1Am&w|;f` zM1i|x=PbP&*D_Pvx?8Xr@&nlAD)vFShN6JIS1#rOwetI%70HiLT2B-I8B&uALz^-g z2CJpy&yVANSLxS*{E_IR(AGi|Q3TT|p6_l|x^Y_4xvH1VKjNfqVK73ZhU*>$hOk8* z?>BqifRp&y1|gQ*anpJS=k=TK9j6&*RMUei17sQQc%0H)7gyXks zqxy(1O)4{E-=j@el9yTXV-SV!nOOJlaecl5W?Dgy)NX6^77=laYD;h`O>qJ1Cj z(SPw@2^=SKQm1^LsJqzV1LuCE6JI3;M1b)B@qoGzewt4IN5aulk z`62V4FMe&Qizj-Zkt(@Pj2#_7CfcXkm+jz%bygd-?rry%=#qJ@@V`cWMY?C+#tD)1 z)hkvc-zy?=;_Hn#j7X2kSs!O<{vAGOl43PxOj2-1i)buW{fX*ku|bV+e8-2LYD}V( z-~_us$E1LJ`UdBw?jJ=Vqbbhxgw^%(h_Ty2l5KKToXowv$F#k?k@ZH(JJL@iJ?!N9 zXtNo1s*JntmI*V&kNN=;SYN#L``F00!w;$uh|dn!4-jb-xsH(|IU5kkF>IgGM9FH*fRx}4CvlP_Qg2Lx-|HVttN>@M8hodiV|VJ5 z4kJgo`_RKs^rMK-^AX98d3Hf~5---enFn$NF6j^F@dSbgS2ym_#<<({cy8<3bv3Lfca`uh$91V^ z`+|A~+%$LS-#8QRT(rr-x6!L)!^mHV*X0*7CK~U^UF+UCncon7i&9zF`If$a;m%** zJTJpR9DrA6)Kat&j&w|H4O!sI&ONBUzG_`#yZDn{jCb!?NbU`LeN%~zkDQzexM_@E z7rv2MQo8yK!g!Lh^fl`y_D8jJ4ex4RoEH>0Eh!fm(WNDzvP%Z_SI=(!(zLa!m_lne z>iK%8q>s0Y4yza#k=qNE-FnnE=B*ryvMF3fQxu4#6{KI^tDJpzhK}OIC`T* zI6JyfjQqY5+!ySJjo)}`aP6w_&`X;t$jA48ZCSk9CB-80MIsNmmfeX@GABwSywqxh zkxx9)q%b_wo{{oYTcoPAG;p4&Trgp7{p8#Nw22K4y>xgDyMPgU)T$q`uVe5uL(PXi;_UPg9%!ZPE@d6 zMZf;^K51`>UgGshCDw-j$}tsG zUl?b~qnYe5I_ExHlm9^*mGub|TU4NHQjp1onD^cMQ|O9D$J+?1TVT)y@#;d}&RR&C z|M6G*dT`9O6gSDpJQpv0FOef@L0zR({=5@2ZMPLp32b%wFh*N{btBrX2YcIcS-1AH zFQWM#d8@`;QtxzH_x;UWzhK;5iu}Za@9r6KM$-7uMnX#|swl^?Q1ns2W;M};1c`Y$ z&^I^NiNtJM2W`j2G%UQ^S8Zw|*R=DCM0afPTkYRh2l0x}2WPFmk`)O=Ezy}V3j#T2 zS`c?*?iPi0Dqdx&qfmz$VOvkit6ln~#m}(f;-BtNgU?95ty{@Q_y~ z&+XAAsHMr?;-t@^Xbt|5y|X3K*#$Kxy=OF}X}Snm!0XX!-H%ml*~;j}jHukc91^#( zJL~eUMHnsd{^oe?E#EQ4Li%M>uuc3e-?L6ZVy)(Z8OC!Rd-IDD^i}~ueGFm9#!Bu~ zB>9YBx6$ zXoAdg=ip0UlE+i;WjYo}kF3rQlX$N_E7%i|SnIOSO74~P(>HfJ1td08GjpBjA|tDH zauz*r)TVRkgU&53M>ui_t5X>yNP39W6Bg&6c)WlYujoB3Q`5(74%ykB(rFV$%*l(` z4Kh?>ErkH0MM*#9j*z-8&zHkE>eiR-f7dqY$3FpF128X# ze3)A$#Fqv^^-5jzTVi$J`ZdBP`M0HAJ#z{R+*Fjm^(EhQLNxz??&c5>22Af#iLXdieiOyJ6VOCVD3kkZGNku5STC-Hle&6|*z@SM8;>59wf_tpiCG}w)9p!l0O`O!buNuQ8f>SS#o5Fok zwGmlgRbsoPbx?iOk(d^@EepJ_n;0isK?mUA{rOa|QQ~k{g6HfpMTwcZuD4a#Ow|fy z(i&l79moKSBu~#B6`H$)_V<)SKfsMOk?pP@upWu4#+>qQcPf0Aqh46}pwk&p1hRNV zpj{wDVmB)52PW3;mAYtO?JcApfo!j+={Q?ch182)$4{VPVyTQ9#_8+$@knwJl^y?m z-9jx1!TO7LJQ=@N$S;g@iUUwEdru8U+kK7a-QcP*5C0_QP_mQq*@!8Xyp{YR+nqjO z-4eyD=>&Z*+Qk^E&O@CZ@5RBrO4H0nhnY9Ltn^|`CILet28DxZqFlf9JhMl~#7OW@ zbVZoAkY%)T3Y45TAiTO&VjTpoP}j3BGTs>m2m!hLRKm57vbcqyy<S>aQ45uKq?7ES)bFA>b@-Ixl_) zFJOnWZkVI(+n%Ft02#t7XD+SPeeqq9B6OmHI-Tj>bMiWF=nO%uSdDSlav2hH;OB`r zzpKQbz#pp~xc}!q-^}ni%Y5j% zU!O`E{Uq>p2O?`|v3Q1HcOQ<{x>lXj`d&n1_kpi1rt6EysnfOYb!|=s(ia5DZ{3~f z*!s7$LrHyHE;)l=<}g!Ez}gFvh8^ikF9@a|T_{l@+5l<~7C?)&=3Xn!DHRjo7?>V--TMdjuEqo?MWbaaE z<(_rlQ+87mGMzLoZa(Ee*;=8>&4m}6I=W{_FUuZyiqFOIAPo^)7DaKZV_X{<%XOq9 zF9`n2G)^-^RGEc5+bF__vNWgg(A5%xJ1&ZohLo|{1#g-)nZubL0wJdww^w7zd&CIonn#kT!Tnmoxc;*}C4BFk3RFiDI#XZPV|CkBXfVs0;v%T-pu}%V4 zRAI03IR^5?Vw@`;e zqyYUTo|x{I^;et^2|IDM8&WTwaCA56=UIxIvCZ3;g$fi_YnbPKo0~W@D>*8w3`KD> z33|(-ZgZsbU0C+ZQ(s$vlRe|{*&;k=$WI@W?=rpEP$3qbb;N&sZqf~j!76H?`beQ@ z7d*=%VALS1@wE~qXls!RY9UMmz7-k^uN3wr5_dFadC{wI^kHb$>;Cx(Wm=-r9UP9>#Ai0k^BXIEoNT8AJ}m_wHjlkDcbki z9v;l88FDK;<}1Q67Kht}nfc`8RND<`o@!K?^t`9Xd_C%@3od^Uq(9@mf4F$`Ayt0t zUNtt^>}#Xk*UXM>648M#sOnkT_I5LGr~NllmUk{=eaOA)HYD+$>XU`FKaMGo%C|>FqgVnV+qF=A`TubZ5fxTsS8D5v zuY3C6H@5DH&F*7Lsf*U!qKwo9T&unvlUN!4VrxagiGS{Px>O1h4Q;P9UImU{qn)Vx zwdZUPBXt{&b*AsI319et2Li%(9M<-D)*OVIXw{>E^!B>nf2fDy&vlHMy~i%) zikg6xGc7B5SyrVBb-O8CWjoq(hS8EeeqV9nQ&jY3^b&c{$tV)@6Xv71ph+J&#c|M{ zO)KBuT!i8r_l11Ri<~O|bwjyNJGi{`sOBF1h0pkOjXD_lLariRYoO5Dd5y5!{diXG z{kOqdCui0-=Tp0~w~z<_x`rerJ;*tc;2DEMF_S4*EAPtVMqQ7V7A*33d2tyIhUX1` z4o#;raF#QFo~DQP6GBqdMIDpv(GfyRfp+bzWIvktHaVDN9?TpbT`kV<)sBhP7YK1A zn;9_bRZtY7<)bD1A;;1;F4*?t8nXYcmB1vtu`l?bMD5o^@yx6A<=&xfkA_b}-Pkj!Yxamoa|cPeSGDn5 zaLJTwxVF`lkwX=4)qjQ37G}u5o(u95B!wdN+&AzO+|Z;QpiBWRwPmi<^!H_ho}v{I zx_X`9#JgueDTFw)5M<2|S}Z3}{<UTMkphM>)PD}^`fg0R?>?`d99N>$IfKw&M`z0Xe9=c|>t zb+7*;A9^_odBPn{YDZ!YMI;TqOxF_8!3Wb2u}%@8ugZPINvR+qHa50!quoh-{@Dg* zyKrRf*a?b)!>sJG3^} zVrSnExj}EHD`GEw^q}}ZFL`G5>{%S!AAG^;!OXl#g3!kePPr)0NG~D0#>74f55314 z09LH)C&j7G%R4B(#A^f-+npc|KC^+Er%N<0NWMNLc6VEai<8UyQpRoiu7%5-Y6$gO zy+$~}CPmw9MUMtQkDA7I<|vY|`fW*_y&n`R(gW7=8z%A!vX1GY#7gHE%BLd45-Pi1 zDDM5WRU=#&^yzMpcs4iG{AZPQE9y3eVg43IZqTj89YfKPG*X9I61b$FO^_9p$ z&v<}qQqo0eXWW{M)zTDqZb-V~`7Hn_efw5j6v-s`Q@tKGdIypQHF` zo)b5I6N>g0L2623v&q5vf#XTiqf&??XV4^Cw6q{MONZ1~-L4`~X0?_G$9GmJd=%%u zyzqgs^8Z=nK{`~rSkY!oA?^4UN2M`ik1tJJ@srO+CvDb>5L||0U_nG0lKEw1hqD}TK517 zIX60GkCqOcwg_l2$SOcp$FgjWZAO=^6(`s|C@}ZA@C2p6eHoS8zP#;~+Tzoa&?oTsD&nW@{ zK$NKo@nYtF!U&3{sAH%-+7u8BIM!5~bShjSF>qca-L9Swq}la?gc?L_{NRGWc0@bO zcvw97$_3dT?V_?33obiLiDhlSU3GP^(DdSQ*>_ii0=N9fX*!N{%}LN6I&9YVb;VmQ z!v)<`#Z~?=^{uAM;O-CU`=&46q|bVgH4pP{5&+*CsWT(KbfQxw_8R|{JL~zm{JCW$ z_6zTj*&}2^%|YW==Mx7wU@LuKdWAf);6205DKd zo=KDAjMFj8pj}nm%`3!OoOWDz$h}vADOkF`H{7K*5@Q7#r(eN>MdI^88*1{-B1nrG z#Di6o#uYhI-DPL>ok+oJ*O z(y+=ah7`D68v72vIAT$d$y0OGH9D1dnK}Nr)<-C8$=GU0jeXuMu@PJv@dp3Ms{-nG z@)lgfWBsSJ%KQVAk=-T7J?zeB(A;|DOXejMDk5gFU(Mw%G1(vXTnnm7qWYZ7D`hBM zoZM5*_b6zRsO3yde3_CHR%SZ0zEQE2Sygo-njY}f&vxNNAqN(Z3!rJcAbae~$jQ1V) zvG#MfJ4J<>d!HWo?4uk1h#9n@KVm0she1Rb)%Qf{SZ6J^yUfs*Hey>zbQW9q(LKcD z?im3IiU9n;5THYm9ljhVNP20H_C_r|QLhpU?AA!pzLbclduAV`n&NK4OuF&cWg z@^;k{@A|PJZM8+h^r9dy%-`dt&t5U=@TVuKXC&P|5e66v!Jkp~CX)iLgPv!0+S8h#9I_`2N z%bNQ3Y#?_?#gq#tjC{wGQDw;TxXQ%UKBLy_?^Fs5teqZvqFUkm$gt9_rIOmE`CeQ3 zSz9BYy{@XBFELSc216&{R7{_G7<;}XH#=OTKg=MI{oE~Fi2u^=)7(Zta3OW^j5BSb zvDym+tq0;=9yALsK&O~DRNJwCOw``f$2dbX{;dd*dFAb30_74D=ks^{*yyrF?81q(mWu7!OBGBK07u~-35!|d# z9(%Rxe%=gLbBx$pJm2Y>+1ojnyI672YY=LjfHk*21L-a54prWEk!`rKX|T>h-dpY13%CLO<6~# z**yH=T=(<1v+Z^i?W#rL@PR9(Q8;O>j|8^06Up=xwKQpvlvw98W9mKPY3qB@Exr=_ z$WW4ea?kBb>4CLASY-EE*2&UZB^7}u#mc?xv^<7){}MOzO$6M_tDa^i!|WrJ1n2i$HyO-{x~rXYS18Yn_a-g&zw}3Qek=qBUQS2ffp4W zs~yfG%=Qm~3M!{%lLOCntwS8~5+_{^1pvjRVK=N8+I+Z~TOEIDFIF{0H-=|sYDPY? zHc#j2v?%2-kK^9Vz1y@)w^z8!8A?X@o$a$NxN%vEI=r5Q$?`cH9B#d z6TLz8Obk7YitkmO@ee9Y=**M5%BG$4MWjiefDMj2HrOJQ;*qfi){ulxe^KyFwu3slPaB z1xU0b+UhiI9HAQ#3$tTqNq(;jXi}{PC!1P+-B@~Ecs|=XM3z5f(fTUtV7O^r{`89X z)HX%Az3GaN%8(y2y0ES@Mw%A1lq?dq;K)Ad!hICx8TY2wI`#SXCX|;>gj`xYJuu2) zhBzs1Xr1otNOxV<^m;li%rfXgip=onq%*OdB3JSCSsj*KW?0Fbi*ly>i03X2LsvsG zAooEsj5Q1;DUV4n*#TNiYW3b|7|DZ}Gt`L9BIC|Uap;Xz4SHc1Sc6E0&Il^AMS!+J zR*X3N%@Gu0F`qAW?nQT1wNlSWLwJ}ji?B#&?&!H~@v~^2+Lo|#O@T=`b$XjzMSh{_ zOx0bR7e9lwoXOAcP~Yw_^Ce1bn&D87O}m6Xo-f*4Pa11knGrRj9RWz|vCM+w7vkV6 zloV(C!^){(q$4AA#L8C)Jhj+{f65+>(Itp1z8~%$=33 zM<>5+Zmim{#7nydwN&#G!q``FF@`FR?1}57;hYy=srD&5S7b@2^=JHp4l6OYmkG8% z_N$Y1E$Bt_1Fa4U!`OJxzpS@Xe6HCN=#Jz%U-{(qY*W)u?a0$=J;nY2e zakj_hpD@z4&)}6G2NTy&`PSd=%#<_OK*nX~v9)p1O&{q3mffaQg;&yRZdc}eNA6-| zQMB*dF23OOfi2X9)sV_w9v_3JYfC_R?;B8weHw~}$*}(=nA!2-DBzqF`<)2P8BaCB z(g#Es!ELsN7fM19N+^9Xyu#}`M>^~3Vm^2i(#4cEwrL)A&!Zq8=SS`mUT%{*5U_b0 zEuP9qh_fZ9I2KqgvzV*OvZdf0+?z<)`g{kt87F8p?4nisuQ_vUVk~p{&Kmi~B#K6z zq9s2qqj~t=2oL8tlfB?Sx?9Yod{k^JbysIbBv7vXweZ}w;v4f}yp;G*`)4EI+?2$d1*s!Ft+sS*&mp) zXVd^V$L{UtFQjN;cKkoh$5Sf3o_@rRWFHj!bdxHjxN$0|Ace^u$Uf_Ke9~&ttvJE9 zZ>>|oP)EjXNCZjK+I)ot%Rg0(itHnZEaxVI8jUj?PZJ0PrG@Z56r>ZEzY zeI&Ovp{S$!VxcJD=Q5|rN-{x?ToEI#`N`;bGL;R2H1E%+l#NXPo|S~iQz82OyA8a9 zR!vK9({LsiUZrNV%Hp0KxXz%Ig%GgI6w4f>>q-zKzAm4 z#ymmlwE~MCfFZpdJ_S4Y#D6^Ar6oM%1IX)@F6Pa46$?&(K{?+{f1S1nL#@Yx5I=M> zZtLf`KW02=3vv=G(`y)|KgQ!VO5|-QhR>iAP7s}@nXXT$)EHPhN_}Zna4nVkmXMUo zRL-WK_)_4PhY|S{OJ#50c*?x|PN$zKDgWX|2VYy$ z<`eo{6#W1w>MptDNT4`rA5yQFGfCZJ-hk7+?DZ89yNUnG-r3s8DYBx>sEc^{Zn3Lt zxc%2+PxvWuSOigNzLRlJxgy{6`hK#Kg*Q`sSoc_dnL4FT>6{sXoO|^#-mdvEwNka@ ztV_Ym0L2bRu|%d5z4rN;fOJbv*w68Gx3wJUF3WlXnlp#H^JtR|ZW2Y2r;Ow2FUi;F zSrlH-+?QHcF2eXCH%Pa^Ih0o!+6f)G<924c%h`3J4v93>=`EINP&V zA2TDtAIAzX%whrTuRpdE;rI(OW2r9JxK7d&PH@N_2#_D9-5zLlRH%5YUW?6JnZXV+ z$t2Lj#ntV& z@zU#(WX>LOu}=0DB}H@fv9v5Ac7>~MA^*Q+HyVt8WZ2#~o2y$mqti6Qa5_8ojqsRg zlwuSA><@8%GLQV$%-6omdb-k&6#0>@(P%%m|A8c>^2ENeaq0WFzp!2O(od1CO4 z?ExX=+&AUmyX-ySb}r*-x0r1$7AvAxr~MkA?v!Pouy<{mRjZ;h64zQ2r=4{gBu}lK zru~!`m~#|+DNk_w4d9^)Z?5jmwomvYm$HOI-pH(g?rFz4wpRvL3a9X0uqPqB8a zVddNDEF%Zs?u10!Z*OynAGPT^FZHJhK+fh|e{sJdyS6*y$aAXpbC+LBBco^8Z!Y?V zim5o0OJ7izXk?dZOAGC-Y0S4@Mp0i#Ss|)v+nvRf9T+n&2CQKbaDB%w&f+lBxUuWx zL%jqXgb}T?cC4&9gO!%g-h)d&ix&cwkZV07v$pb{?XiWFeZcKy(A=8kc8C~waZohY zkDoh>I^u;k_KnJM*1FeQ8x<<80sXHuNQFIi^C~R$o5tc&NoyeTiD zTCP;_dU;{^!KPD017t*<6Bi;=79f&;M()BQM4t4fZw3VF$9|#PO0cC4vtmd@f1%#M zXBbni{JK z)KFR9FtM6oDtCJ`DraB-!Tp;fan}l0t#Evy6_m$)i^pDLCUs_N|J21TXItD#rvV=b zksYxE47v3%mZ=Drb0oju#mmk@W!Izs6)$y4+vvGfv}pgI6wZw1hcALKvQRd??we1i z=FI8N)GCdyB!I=2?NTgf0-&Z2#SH5zQ{(>iwnw|}M7@py{Ft1h3#@Y}OS2}E$b@`* zUfF97*ca|WUw{jfMN?#XnF}u5sucP5(0?6Z8KqIsG}2c%wfv~>ebdN8 ztrs_P!(C{~2sj}r-<5}xXHVNTXD{NUx*wj9V0&yVu~XW6H(@CdWzO-Yk2o~!w$`uQ zS3u9MWoC>JmcNQst@!xJNvu?k;-*=0cCh?QAM@fbkVL#E=^FElhux>y_oA`Yut~G$ zG;d8R0&vp*=g!LaM<@G;fitj#$3HR7P1zKKtWiM9lnc93r?d&bddB~6`*%9hYo33f zW!bT+QXlf~+yed=tn5l1?oOwzw07A&^f+B1k zqW<5tDun8C^^p_V4@i`fVw>j9^Fk@ipT;{sNmJCfZ>-2(fc?-Qlhj|Z-@&T2^0g>C zI;|~M1I#4i!TE+y%Xi9GY+j5ZhTCV`jPzjl0Lc=<@{Ty_%X>C2ir}lJHBF78i)z#9 z{&14+!GAAdbR(KByfhj3K@-TpV;}=h5-S}9jeUb4c?%r|5wS?9xAWa_5dj8SohbcP z_#DIDZR-()MS1@$W=8F8Ghw9S!GLgP`PPcpLazDN8KEw-|Bo}+`g(lOlg$6;OE+J& z9|1?;rEM_mYbk8qGdxH=nY1?lO;Ihj9=Hv2Z$-46!6vuGPWy#Dr0q?vdiCKM61JZC zcLbqH)nI1FE_jVS^j$F7!82qktBw|t5!_z>e8de$;@TCiYT@|9%aNFc6h3WXCiMbm z3s~u>NU`>=Tq(4-`u_%#suhXe?N!;-46h0*`)>8YN8&|xHP18d)AgL=I^*T8>d+4O z5);-+3Pq9feO!AgU3c+?lW?QlM|pCiMA?M9mb7@GsU+ySab52KKoB%lTZP zmb--v=35{!RVFh;JA<|c-v>)R%iOIzN`t%oIITXbTje!SJ9?O|gZUpA@tDkypYsX5sSyL!ar1@`prO_ad zQyg4-VQPOoQ={VXg1-?ZKn+e?05$NNfDNHQ^`(7g(Gc#v060d%OKbB-KkuFWSritI zKQ9pB$Z0psYC!47<5!so5a=I&wSS}Use@s1hQCZUbQw8u*gGQ0kX70ACx=5TdrIKM zkyWf+-mu_C_I^6*cDGFa*!Bu()9bsqW$MPr=L;D``baj}8)EJmPfFiFekM=%_!s5J zxZljk0Afb#d&Y;>2oIHjjZ#>dseR`kZ~+)u2p<}{KNAMg#-J^-NBZ-29OvNTKGrcs zCgrp%W!m;6Tqm@u!Zu+8!pe~hT;?C?yF)<~#Rs7BaYrtLnSU4GZEY9-EZJ?}I|2^k zwl|zkR6uIl{@L#_{w5H8~&6f!Vd-T5%6Dtwn zD+BiX7?yZ>$mrM|isrU~Q*DPDn0N+tVxBWwYdIs%{t3}?m+i6k_RN`CftT&Dv&B5y zxNvotFNAcVL-M(>sX;)FnKvhwh5@V!aKL5F2t&*n#Zy3PAdU(R_Lji!pAX62Q(cj3%bI9W1gof8_Hkdf4V}5ky(CBrJAtDrK6TANc;F z@~?ONvR!zYqcoU(tZM^hS^*@dg@QB@WKzK^NbJhij-Xnr&qSqX=f0!6x2XJ(VX8N5 zq-t@u`Bv`3)3a)EnHm|@*pK=CaHkgxXZCzl9PS=5s}eK%kHwDAh;Z$#s)r>USpJ%Q zR}zNlava9QX2KA4kEkPvmPQanyc8|wrYPsf%tkaBsKacF%MizEg{v}mm?gD3+UmbV z%y+*IVJ3BOdjIA9T1f*8*=@9_KWQEo9PEZ7x8wU(i+_5(J*8Ac=~${N)2HF#;R}xs z`bsB?PTSEacB{y_?FJD*eJ3Gr+iy~R?%5oxA{UKVAMmwZ=m8PgbvkFc=>F^;YuYF& zrdS_SRl5gT5@|t#BrHdgpZIgk(>t{gj#{#^%Kr97~ng*>tr> z%K%4aJbTOxXx!-l73q#`2a2Mutau9N!VCQJ0vodqvF_FVI!22Kvs%r7ZO@JT?ta*n z_d{ax2YaG;4d7}}Y9M&Hcn)zthp)mRNYH`Du{~DbE+$CcMLbhM{2#*JJRa)x{U2A( zDV>Vc=Oitbq)n(KkwK9)smMN~PNeL+%oxK_)KT`OWT|Y)GDWr-gHp$CYAlmwPz;U1 zFqSdK%>3?QILG;(^Zxb6!FkNhmVRozl?=oZN7|5R}Q1pqoD)3r-+BH zFoN9OAf+!Sl&x$*-FutG#?5Z_=r_-K(d4W0aL|D;JY(rwQiQlEe8ml~GR4+Hb zOyijJjGsyoqTt=w!mWCsHs9EHKtK0P*{d?eimycmpM{I2{F(hZ;l2o+)T0p78q<9G;amW+5!0QgrtMV=N z`8yCz?gJi)so=j=pu%0MKJ$jug^j;gLVh}c%{HCxlhmjPgd+v&OI)~)U0e;(JBL6H za(eJg(Ak>7QWwN&M1S*>6U$9E!-(tuQ2#9G*KVKK-S=fcAZmpNB~ETaHNICyq)qjj3K2Yr(D6oSj*@6C z1)ugT*Xk9$92j=)MMQ+#6(VbV+qmRwwS&YbHueA}Uk0L-J>7Tv;uNoH`H3WMTfpq; z!tsKbxKo};obg>$@-pCzMhtV$D2-Z+ER!B=m<66;I6i%f6vW@C7mz(k&K!O-DQ${ zSXU@P_(B_lE0kpW2H4-ot^;I07UA3-oOO0UCZB0nX{7o4zTDIWu{{5S>c(d_p_kzS zYD+mwa{(_St9HFi$LB7uBha!-hC9iN0-C^hMp6{FPAmzGhp+cS?yA26hSv9Opc^lZ z_NytIaHqkr?4cwY_;U9dRMdlaapTW7c6;|vM&8&(K$!ILL-zK@Z#TC#{*B?ifZ?^i zU7re!=io7NSS~yc*XJEE3lj`4UnqOrrEGoGt)W7D2Lt-HCiv+X@k|oI_cs!-h!sV}kks>J>ESM>FyOhAV+k z<|c>_!0h%+M8r(;rIrj$7H^)`h1)-dig@sDN3CWjwF8N6^{Ca{sFLiP{;N&ZOE=MaD^(tyy4z{%0?6Vg&(tY)v$(ku%& zW|;}}T7umrnZ@0sllgcT$FmHO=@N$vBDk!SkbIrklW!Gxyj>wNM={JDph4a{kMdr7 zFho%}#-RdDY0G{!0?X7h?q&Vy1vzbB-C1$WOws%>mSHGFd8UeDgX(&S zO*C&bwXiCJ-#xzF3C`EV@Nzg!flP3+j0!s6phm~W)@p&$z!_ZH{{7W4z4(BWY0(^SWv(tdn#u<+Zy4R`eiS1O8ThgquL z0MuH*7#QJ$63FlUC$HyY6~k^14N#DuFvOb)MZ`z8U2Gy~(Pu;64qV@m-82zZam=># z1Z%ccx;M^Gj>k-PZ^UpF8iao1gV{u15Ogn%^Tmkj0cgCS}QNctE)!Ls@XNGZ2@0UA_Yo= zy((Zh07%@(zWa$lAZSu?h+Vvytwoy86b}oGf zu)@wUNafHLg1s?C%OJBS56I@QSD z84T!Fm;VeV+|L3N=M#CeXJd9(cF_-MmA3FkfFnP*=29f2?fgP{^HO{$a_^opKD)Jx-ApP% z*ek?*cJ4w4D2SKH*sYM()=%V7)_lF72SgxCq!l6f^L$c0yOD(vesNLOb3l zXs*S4$}h`=c;uX*iyY;VG5wx*B5SA&t&qMraTN57pMrCy_oStIZXE0?0W+#G6D!BD zUR|7fzof7+wd*TP+92oC-e`&>;`~5+m8fZ;`d~}HqGhX>jGD-JkSphSnRRrA8wf43vPMn7+WeX zE*(XQ1nC9=x#DgT8Z=T~fo&c1vXo-n!RXcR5KcX7$vY6d9EY?Yvh8;|b&JumcR$MG zf>QdPSZe);B38k@NvOVJazH;xR&8Q%teaOz;(@pC!$mwl%n|5l(8%Y3PID+e9i{Tq zP${UBi~JPezpEY$TDkFjcLuN#H0|u;5Ty-1=SkAF6WdOn6CSQuFZwDwndv8yg=%9&jUGn zL5cWgtr-`&eM4CA+0g~q;lX1^q6mkc(NxEs96gE<7PNAbs;|-pg8=C{#47+!FfII= z_4AWm;XD71C#v8Wg zhWM{l*?d!<#VWp@TqbN|h9?1y)#DvdU<*W3t-6j!gOhLScLAd40Ysske#WP~(Owc} z2Go9s>al3nDU!@F#j&Og2edTbJ+{Cnei2ymIbELX;aluF3C)QSYBq-e*ZEy@7Q1_Y(Sw0TT9xlHlp)G_VHh9C*r zAO5pfdN$&o!~M{BUcF%jO`0O|Sars3BX2=#sDC&XTEFMdF?h2qHu{(h77t>@xBoBD zCW@{4o%|0VQhW-eb4WE{Ziqgm8OTusr|{IPK)Yo=M9MBu1zgPm=EIly;;;n}HP7wB zh8{4ArK-2rZE-c1+I{S@sn6{C&!3}j3+%4{O%VQ3CR14`Q>SXHN3`6RG5PZumiKmM z+%O6m8!aqs%&&YZE`geVNK;}RI<@|lTF@fAH@|)mymyD8$eG>p(0-}f^#O)diEoy^ zT$XUl`Ch?i)CvFT>Mw z(!Sp`E)j#?`5@2gqooJiqx!Fu9jj2_r%3}RjK~|4|9DV;fgZtK>=98|#~hs8e6BCZ zN4lP>AjlM%T6hT3ZgSE8EwlgPVaWV#@UGA;n}?1RAnpyeGs8?xeaCG7`*PQX{5q&-DkyPYw5X}$>MvK;2!w|NhbgmV)ghw z9CB!V^i)#F;<#Q?NafJ^Xcg3=+L9hr@Z+cJhLmr58Cldl_Lfp6cStgOb0$!AA^S3k zvH3n+s4*NTo->iYqwH9NgiLmel3VJV@HXWxQ%vHcq=~npjrjA0FI%kUqA?zlInJ8a zm@4pKwC89YEq8gF0x7*$neVefqd8>pJHDDd;m)nr>~q97X{7~7*Y`vz{8TZ!J=%xO zi$YFT@F#hmn87E%+@>sS5Z_sEYRwR;JB;wOpv)eSBcUwfVD6FAs3cHz?{LUuxtdU{ zHGVTDIw<;n*lhmQ0#m1Zc%&kP#~i&V)Y+H6F`ar|KP+EbNJ^qgy^eys{BRB$x+V9XxZMNM{T#> z_>mZ+;w4PsD^;eYJkA*Q!!A6-cZaw8vdU*MZiJsFq;O&O@l9HMzFfMKyBKXMDtaeP z1vS6$%}6WFSGrzFL9lCzFC$H0t9R0~mOp;|H_A6%o{-w%uWX_ImIG;kErSXE2mO*@ zrbPs{zcOX^V4m$yglo@6demr))YD1%E`(3^`97$}mq*wx*X>+ei~m7O!m5mNip_$) z0_-}4SL7`AmPTaS%JZCO+ zqj*lG(g__nbj6;$4-1;x7%Mn58-7Ph1jN|p%;+UfOc0SabH93SkYVholgBTPmd zU6IVO1W7oM%;V`|e|Pt4fuSz3-yc+)3xL8CBS6mv#cM7q{vFC*lj4{-j}MLSLABI z&hjLbRI*I`^Qg|+I>IMo10wR>$weoT0*1z5JDa9(Tnp~H%9o>#z0K-9bQdympp(E> zKF_qOzxGa}Z4`s-g+o;+>;0o)+O5FcERsB&`DK&K4DMYlTgDB(?KKckvly)}h%sl! zoxce~h}Rp7{XXU`4$Pc=6dXeb)Woe&lLV+4eOVhr@RckmJbTQ;1kiJ{{eq@xR4mMn zuQ0=vjo!ogoj$bVIX;6YFJa1b4?DIyWFlNMF>aD&995ubQ2zv&UTfas#huH$95_{a zBa;&H3drHOdk}ZlL~)(!%*p5^J0bdTlwF!)yL8Fe8S%r25us{Q!`vH-2|(TmKm|ATDkZn z<}|~u=8Vfl?X(StkfYa_>NA=sz~A`uy}Seznh@t9u}n>U&sRZb@~gORvd-l zrrwk7%}a`b(N+m)ezCJK@%S8QCNV}eKD~pl z24MM@o^VT^4m1HHZShC3(5QLmG+*(03BZB?@%mb^-xt4Ya#?qmSn+y=6}F+EXqW{o z1XE@Fu8&m-6Nd+t&m>1(7K4PVR?qZZmmqtO%@80T78|#b6A4J=^Qv(QG9+gn*br7F zU@t*t@_7qXz^>9j!YK*e>g~~K!xaovQiWb&(qy0?qnbS`qI()tu;qI$lk$BwWRybr0i~ z6oDrXWhf)2aik4YL+WiC8GN@D-1ar>Y4*m~Ai~H9WJdJ|0;}Lm-t;R6Nef_zr+ED{ z&A@%=XCPD9(qOF#8<@JB$mgX*+rsu>%<$yfIc<-&pWR;0_Ki4x$dJc}-5-d?s4dkqH~ z-#}6tfx|5XYI*<|=){zfmIh$Si_PcK0AA!N{=@{rO2;Ag@HnGioIlHKI=jM`OY)G+ z+nJc*=Y4ZxXEQhV>aaAv-64OEGBse-3OQ_(K9tb6r#Uw;JM|Lg(2tBUnjZn8e4f%K zXVu0&eHBx_iIN;;9#r}cq(vulinx5XTyn@=47LQ&6syRcdIo$8^T+wk zmtqEYKaTdH(RZXdb{R9%x-MaIbPwY@EeH#b@;1+TVTOSU_gsMQdukdG$xn07q-N2z zZ-HXSxvF_^Hb6mu`Qv1CxWZ53NO64(kBGCkCVF9ue}dw^XSXaW^}t;}CU#rmjbzBvH1p(ZZlS(4p)`j`7sXv~(OKSAuc_>FqE z1z<}Rp0vY?AKhJlGvo2{3t@KaZOG7Tg);{{q5)|*FG`&mfqn8k1$^ZQPG!!Vi7RE( z&=j@3vbN4uNfUw#M`*5Pu@gC>M^Sy=DV>_dxzt&DERV4D{yf621)<%!EN6_c-YZu6 zI(|s&angvy4RwS6C;;~qWp-1xLDS^Tp#(=n7g*jR^1s-KS zBEI)DcCL0K`gza-XLFnpqfIDFMKyP(@2gF!JGy|9{3uc3c$$N_4C(9GA(D|yJF^w> z=N)8g$1J>J7S4K=b|u_b(P>oHqXAGyOcT*hA%oz zI!NJh+lE?b)saLa9UWLI_7ESNYFw>Fr1K)!d%Q4x86BS#e8gXos?aQ4ReKICI-jE1 zO^?9nO%CN>dJ{IXvbq*4z%;und+>6tF6dzx1O*1lJ z^Z*5vX!bs#Vt^+1ji%tZgIWmfRpkTtok)w|*)zRQ7YaE2q$eL-HE>KzpY#qUbj z%O?eAf)l)6Q)_@?;BZ*9a%>@k=i&%%{lsa;!qs#X$^r5Nzj(R)`4@KL<%Orq781bd zPA+UY?8}unCe0&DjW%)wA3u>LYKVdvV)}KBh>Yvbm_C^Vd^RbQ=;iL)*Js&QBA(T1 zZ$lXZJBsvgFzPK&%V)*2zltU7(xl|jUWDPie5!;&SM_44rzda zfn}=nDb`Wu8qfUVU`@D=0K`oYI%fKK@&W2@_f=-d2SC#e9*+3Cb9*F%l9OyV6xH3A z;x0_ym!c^OFzNW}$3VIV;!A7?_|Mfub&Fg!7Ms`VjI}ADCeT}fs?lDEHdYN~5)e1t zeJ6086Hf!!<5dX>~g|VOI zDatw3YFx*oD*B8sz;MyoCo(qGz0f$Dt*fQ0ZvO?#HnT$M{R&i?<%RBx1M| zXb*k3$G;4^p8ja_If=?G_Tih)5dcAyqRtUTnk6511rEkZ=%2DqMSX2oAoxlYC=^9* zyrUBQW@h6W5h}lj84+*C)B7gBbVF*rE>UzxW(k05V~@V#yiP|LiR;$+>pNJTF{UPU zN#8l%dE?~YDIfUuKN;B5bc%AL3CQpYPv7y?V3-hu5CAQH77GrX>gc&!pfmKj7sAg_ z1D9$n2yE zpmEbF#Zn2tg!IJz%$Vh^2py2gbXK=!+IC-qLm1}XGkQc? zuK!myy?;a%!ar<8KP^F_LC2dcE!sj;1 z?kICH%UYQ%qPM%U9_rm<#vRgN0`IxkE{^2bA_mU@a{wf52f+Bz?Ktc!V(F87h5bYv9Rqh8A;B_r<4p^6Sm^1 znJmY@NLyg|VAFBP`~~#47X)fWS#qW(!FRVTlwYtFfVmeeUUn1}1;sxO)}N6C${n8_ zq@qA(uZVg8xa5cDSGomiS_pyG{HqBJT5h8_SVD&IC#8=(cD)V1=`{vxAJ`g*=+5>U5+OMSWBff)D_TSx;x z+1tCfN*{xK7$N`(6)7%z=$2xD1Sprr3%+`{yUwQAv`lw33KG~#=P3+X7#I> zQaycQ`Lh}LM8U9XnRQTSr}`}a4Cufnph*y*Ne_#mg;QNi@v{Bb`%)&h8+f=drS`Bs zub7|F3QX>&gy?`*-F=>@{aV9pgZX#?6dx~f!|U(Jbgj<uLDcK@}WWimNEW3g8{N>q94H*a$XsVeeTD?Rcd}*!yV&yL_*2# ztb^8};#tHb>d}7foP>!~(MBup3q}~4ZeA6VG%?~PnOEg376)s?b?8813p)-|F#J{C zRF}|e(=X@@-D7?yy7T*3r52B%M1!@<%aDs=3Y@AP)T*6he@q^+~9OgD@G<0P{{SCSSY) zV_Bs80wM-t0Rq%Njowk8o&5Z$A&c=@$idF*Dh2npEZG@dg4htC2>tqJ_uLk5eRl!a zL6VA0yX^?%tO0{0`uc`@jx+q8Q@Pt69!)JBGV;~lpt94)XVB-*AQt!x3Y;G*LB(n? zg?y3+1bfgi4|?NQ5fPfTar?d(6aAj9GEh8tckPE;U))|zATAk;pHyo?KLEZKK)_65DLUT7Si zGqY)}KkEYi%sD>UW#6qBn8jfP!jMuW{$l3)wGtMyMf>%a`z;h}30dgKGC^a#hTy|a zGfckItf?)vi@zxHkf+b&B<|!h8p!{StH3tUdpDnhd2G_hXzZtV9ph(b0*`)s)oa`7 zBOi4c*-5?FJwBW4@@jA3vA@GlAOb`oF87k%_ucwD@ic*HhBndx>9C4Sy!Y_yL?7C| z7Yl)%uiolh(iSxGs-gO3iZLAW4Odi_6F2cx)TwGZjh#>7oIT&d zRjTpRbVgjnd#p2i(cveOvx-Wdi5S$TLl7OF?M0&)N$xc7=?mb7M{vQ#eJMOJ zzzkl@BpM^R(%um8crtVRrA(GH`xj@7pI$C=!~K?*B&}kC+>-M>f{5E;NQ=OA++!Vs z7GH7tP;%z2A3m=+Z)}{BiMVx-5N_f3RO#*T_;jgQFXRAptdKwj3h%C2Myew-y!i}M za4c9nen(Vv(}+8VlP9UT4&?FmN{T-POk@4079QBDI|o$o&zA~p?*wsDMmw9esrb&> z2cyztcFdLTtx@^Ru*UZ$nT*f+l+aDSr#VyDc7@93m*6y~;ec`yj3qk+%sUyS#@L=RONCJQ3);2hYL1+I-Hf{HFuZ zJu#adSL7y@MS9+W&#mY)EpM->HpUD*F6kL@h!*FWUW`*=apGou+CyANisN;xV+@0E ze|#ysq^8~(CYsa8%k^6V`ikRxxcdr*7n-4MvudmKs3IJUiLUWJH~4I-w;bjC z+&L4?;}ki<4m4qC9QwH34p6>~+03hixK?WH7i(S#1+)miDn7MryHNf9S0Y&fI`gNR z@DR>O>{pl!Fhn`p2Cw}T_M5Wg=`AjdV{{m^vPTgpS4TyvGY8rV8l$R3n&}m%4$dlYmmcu=-DqASFcxtC_-?VqGGmP`?7$`(n zA@Wr51*KeJQ}4nR$8i>vX6^#|*7F=+H4DpK7zY&ukE=-`na(m^G5IT~mC|r6ywR0* z{Mff{l#4M@Ru(!x+&w;Z^5c@9iD?XyJ%-yjXC60^3#c+AmWC+f!hk}ZvNt9o-6_9& zVSUh#F2|)YKw%;Dh;LP&JK|i8>1d$y7ehFbVIDVUgmKGg&!qB&SyPpW;gTC>wmE^Y z?hI<0VTWYUIMg!Dp^~JKG0;Q8qZkUXJu$;89UFl&&zgi!_Oz?^Io|d^SL@xb+WEZL zk9{rd2@k&vb6GgKGRGq@c@hJW7l5zv!^_aJHlM}LEQ}WvvPjt^33Py_yW$~|oJ>3i zTj?WmutQbBwU5If`pCx~t=>?OMf7)9rht5*2bd7wCwfTqG@YT`Xa^wcp;0No!!S?; z9cpOO;?OZoT0u;a>W9P&L;F{XS^{St1GG?j)g1lWPy4FfelwQb9in5F;}cuB$cb>e zRT-!$0>m7T;8E96>Fl*(eBotbkI1;f&H`#7*#~@U6)1h}PK&``dm5ot%Ec+O{WU{F zsX?lgS>Un}ZYAt|V=;aZ7wm0yRPzB4tZ*})%gNINE(!ESH!28LP|ioA;GFwXc8d$H zJnd_+R#>@?J-FDiP4Hps%ZdIw<$EltS-V9N;SWPfhGE#Cynyh=_jXx~ZQh5|eL>e? zu+Qmxl|IoeKKZWkrR&D%{=U%nshWYf|MQr-BYK!T@O?b1E~9l8FC6H}Sg{a#;I z`V<1&Kz{vEIl*5y^0V9X8;+bE+QJ-9O4!=iQv!hh{Gv(aMqV(UT`Lyh9xvVOD&0A!{GXt#j ztt|g1c3{n26y0&q8b;(*;A=|zRYo}^$24i&Etz;mKekZrP|`$AGz2n0 z)UUi!ceeb7e|;h|0{%s;|OWu_p+RyU)S50_9E*amIvY#4}RU zGf1kIRsEHYuBx^eJrE}05q|L#dWAA1szoe}it88}F~IUx5jD zouTNNEbRZC|wDk|)A_(*2@gwYZK&$Lmc^>rRu!8Mi1UyI*YS zWS@h}>mH^eoG6@KFNQT~T~?Sw6m*JjxFMR+=LD)iBs{)9kGXQEQgAS~Q6zmQkY~)r zPWo>v`S6xF2}2!sGA=5kWY2Z;4M|^WllzQP>@WskB;{M*>-QjZ`37M4(o0e??2w#;d=tH%nX2^@1>PN$C@!J?vm!h@pRZ_|QuE5W_;id#7yA~0=vRMTUL$E`7| zxr?Z^u!AhRk{0vXO_R8&O}^gd=3Z3o6SuU{Yf(xb#zfC}uP-F|?o<@{Y-?S2!PG&h znMBgWV-Va1;H#`fat`IG*Geehh7oxifK zL|w1pDE@>f#kb#P_DorKkV%0AmETIKX$4;ULiG$US_R)7b7<8>$M!>>Jb)3{fj7p( zk`nyy{m3A3?Cr?Y6CDKS@-ipF4vJc2eBpRQi8_OD0g|hXQ$WaxS*Mv}RCHe*9D!)R zQ#WcjoUVL=QUVtJk=2=WEGuHgVk*Es?=J1L`Dw|7VjQ0q0a)E-Rlh5cu;7;0Bn<_& zj$}djW;%TBnr6nGx1*JD8VI?h^Xl0o|7c^(EA?X}G2p!J;q@7ZkeLW(Bf+`4%!yav zIrBHXt-Z=ntjZ48jR5?uUtAgK5f~`xoblK{Y##PKyJSz5P2c91F*8BmdmBecd09jc z_l}%H-H`N33uNbQe@cn?i+sjSYnYdLCo7(SJaL|)tbryw9;UVmElBLQI_=QU zXQOTBRR;HViiEH{&$%G~DiK|E-6(m&d{&&JT8H1R{EoMt%^cBZGgW2D!K;XNbrmq@2d&oxtS zfNBG9XQ``sbLGcmiOU~tM>&ui^zN++c^cZ}0h}Kz9vQ!)y;n>!omHF$j*nH12<1rt+3WmW`SV_>7I-!Bx6uQtkRWrUKwxnumAU2qeCg+(hK^cFr{ zg#|~@r2S2S5=7oOzJX?*@xp5o2DkHsQTkG#aQ2)zt`z|9VOoNJf@Y_eR={j`l#Hdn zaLmL*QNwgktTGARoDo=>qKgrmGk*-1gEqyy{-VYYaVN_G_92(B&)KnnWklf%Gq|T@ z?*Q=82ysV(Te+XOxvt6h+)2DSZPz?N+ilQFLVGc3Xi0d0(zbE#(HD$K3t2zse-uY9jebo^i~nziP@i+na{lZD6>5_vuc7iDD+|cM@@b7Cr~!K^qVodO$dOIDJ5vv z3wSDHuN0{`#YTJqrAA5n3O-)e%|6D~rhMmz%E$i%ihGu)xDV9hOBQ4KeN6%Nx?~Bn zkE#hFUXJZby86W#zcYz3fM8CtOfX~cAH{jK*+q6@8(5sWy$e&&j5Gb>5tNr6l z(#f9~`Q2Md@-*gW8!V)Wnz@I+-?M^5A7i~E_&;eS>crRmu)SGit%ag$6IqgoOgw%U zESv18fHq}#OPqP?1Ii-FsWudNq*+TRza%u!2$Ew@o^UJ7ID@pH9bBc0e{~LQ3Me5L zQnUj`zBhMog(`$L{%|*@DYeRw9u*sbK>BsR_}2+lGT>g?$7EQzXyftmXIVt2cpoV9 z3Pw!#RnQ2e&U2HH=3%@XC~`i=U90wXHYWP~t#OANPnsvxKI3g#A#VJ86qjAi;Z_f$ zI8i8X(Rykze>zjZBcf9q5nx@h2xipBzl^GY%6w5aWA{k3+sCdfqPu$sZHo&e6H^)0 z>n2i_R7kb&oPj^SJjb|`iMVlZ)W6R=zY}lKo1J2slQN14`;1r22o7uBv)?9?e ztc~Kb4g?#O=PgFx;>8$EL;V~kUIex{ZDJlh*CQ-Vx0;8CEl>qTJen{;Ioes7NL z)zgoC&|?L=(`+cok!D+od>{3^IBUZ07XuN;C56y&!_C)TkirfZu2{THK4qQmBMSxY z69eq~CNfl_Fl+p?i<_y&G)xv3gvd){f1a@7>BGS+XH7$Sl2uc#9=FhBEND68yi|5ann2v60nM+8W5*=T^9FE8xra^%3&M{&|udbUm7Pu_#KBe;Ro}MiYc4OkgxXz0oyp@4^+VACNp<8XiIMJ&!@VSBgmmtj+~67AX&?t?l&nuUg$Smi}U==7D* z-<>OxW0y8{EZb)1Mj4c zZ;u>587ZU4oj>05NrtlfVq(eSelb3W)b*&}s-R|VFQ8%_ZukVwJx2GqyT-K@WvpU< zUYO2bDD1h}UFZlBRhu@d%6X_eD*X~>qwZnkr?-ht3*saLCcDI(zt+3}Dvh2P|8>yP~7^)DP3C?9@PJtV;ozH?1Dm_CYJl?62D_oRG z^oT$C1acI|0nTDiQKHj)ab{OLd!#1T<)=Rl7{tEUQ@~M;>y!Ogs+TVTHCNL1i$E7| zEb&A=!6r?*bsPQ!zH!w;jgC2#_r3t}Pq-{*bngpN)$2b&p0d$MxtC#)s~Iu+a8Yz!MDDY8>kGNmU0!1iWOOhW3C- zD}FXz{(4+CW@d7z&2i5?+}4k$wQP8PGtNqZGk>Nh{VWvwaJBY5c@gk%o=y+HU?i#J?HlvyTVie~m>4c4>d^r6!o9KBDqgl7f0L>Nh zO;rj7(R&+y>K)A)dq6DdW)_0CgI*^V`<5w=$WML;;!DMZ+XUlGQj=_f!EEED7PH?) z#6l|1{MC~yiC^c9z8dzx4vLj_$V&evo9LA$d@aiE`_zpymKa44sj+Sw5dAYT^*^tp zs6|~Bv#J(+$8w{?FmEgpVJy+ti~ti6e=?RFk+3;gQIQmi$m?VG&M|%eMu%CV7qc#| z3*k|=t{VUdyN&!^BTr7&3p3NJWmpOS7pN(q@Mb_f`v{nG1}D>8R&VXWJf z;@c zyT+d1=lif=yQ4SpSW^b7O=4oVW557yCI4v!nxm)TTe^-Y6Mh>j#6uQ4T}{mt>7ENx z6g89R)ll|I;zE$+75EdI^K74bRi3eH5unidtI;PdCHbZwOarF|{s`=L3B{JZ@6_A+ z#ZQ#yycbm$nBTTcZJD<3BRz$fFhstzff@S#@g4IccZYs8PuwykqT8Q-?-J%oxp zd1^`e<&oHpMH_<5u^MzoK8^_lKXX-lkr^(PezIp^bVk5cECkTl9G3@>{4?0HvTDF8 zj_}{j|6y$@r#V0GqdGn5w)9MjqGOQX8Ey6Iz|*UWwDt*8(21R#_vzYTmJ@EjCll=8 zq@L}fC!$o%b=DBwWw07Zt$plxYL+c$%HY<%fpMO?#tbSo-M``Z$T3N8HQrwPz!Dg# zXh3gO&JVu0(cL3^kit7P>k}EFITtaKxN$X9TKkv>+=v{$JN;gl6PJ$3&A=@f znO1{V-}X*b(&JW}3~QJB2$az}@DG>J%(mKm{QrfPfOt0OQG{k|k}IUt*MRY-!GF-X z4V?6_^iS6xIWA<=LO5smnC~ia(;c z+Jjt6*}!qYh#h*xTOagoxR4Wm4WI0K7!JPm5ZpH(ITFeo6epus8xw1vJfj0Y?0Krk zgEr$as?ZhY;y!y34bG(0I~S!oQk1UEHTgX>!sJ|vULAi}`*@hOoM!ZyL{}*v_+j5V z7hh6XP7cum6zn=(#4Ic3GyH9@n*WC`Yv(6O>g?S^Pn9^2Oep8!L~F|U)0+F&i4CQl zl(fx`D-L??iq|ci$s4!n{Z{YqHZXVE9)jZlMX@Q}{F>mHG2}Jn7@M{B^ZdVpp`a`? zIr*(?0|dJ`xVI~;Fo$&xWY%K%_4FGG9Q73(S^F>;if4w@#)R}!q}%9sN~Onox-(hY zIy!Ji>icPEd>Rq?u|JOcRV@%M#FS6&S33?Q#D-37nau`q> z7(Kq%qpwM{3oZ|?7g$X&);<}G2TFAL?%mSO(gf|7DotYLV>f{E|E6A{lSdK?FNw%KXG0u$|Wi2%piG7SDI33&_&uq!T&JJ$>%fM zz5$ImnG=4#siJ6WM0I_%n`n%mCnY>ZRV<*YTyE`Z{J#bcbvBA@lTefDB}>xHY&Y;g zxD@X^f@zK}uxMkEgI6m=0+Xn(*o+=bf;==sDRoZ`($!43^}~tzkf$de?73{$K6N^> zOg5lEHfAyJkDCILyEoo;F*(-#&HHrvp6jXhdhAdi5JBU9x@Hi<;GWjj1 zH=FBs$&H^@{{0c~`+(-c=f0VN0n?&IZ9RMN40+m^*i5>ZP;({G>}+wK4Rs2+5Y+dPD1GKTQ?Ek@jgjR2pTccE1B%N@gFbGEue?~E`q0v z$c{E?!6_qlvF7>Jc5So(O8rjQ`hT~*vUrJYfp-&8x9=@@-v%4lm-Mrg_1g>hUu;$! z?;4V7T3iw&w*^{qr%_y!zz4-MSCBRSDBU*Hq1aR2iGg=MEqJGLdeo%XJhbvhdBV)~ zf!dX)AyT^R_VX8EBKRZf~1hkJfopDgS!{QmJ2PbbAS7-Ki0>v zb)EOjmw-$#$i{WaDE+z=X{~Jhub+vf7D2n-yy!pF9)5>Aj`^3t@E7Ukca1riB0sV0HE}QhvT!}>nzb6W)~AkJAQcPQKa`bP zO9ub1H}N=nElRTk8m__UXDJD$Z#|cOs7dnx@-2>2H8v>Y8l29a4CD?|iul)hc0^7QI);pM5Ypb+z|V!0Y!)b##u;zZNS1PW6~``>!7CQ zzizB%J9rHnS)nm>26CJE`bMjr)#8<~R1=~Ftt``_J4j9zx%Co7!STVbYQN=vO5GW9 zF)-|3Ulc5xxskJbXz_gwRVM6=4d;Z#4v~qVc1|54r=vP)PbNy^NC)iZv4wg4yhUX- zStG4s$^%&`+}RXK1f{ybq?A9*@{f04EW8#pKr;e3`Tf-=N&j;5Jl_nmWRy#FiOA%% zk)130ZBn2*;V5dWNyGN&05zvg`tGwAr1W5Un|uD<2Olg0FGSxUacN&aNkW=5hn>EW zC2{6;6mCJmF`+MaU6mQJQF?QYc7vwYv$k)4(^D+93=pl)99fxNUrXSVZZkogg{_n4 z%=f5k=(fgvkk5f{tf6^agpJkqmp6MjuR0*(3Dsgb@f_j9tQK2eQT+wl=#G+qH}{8G z8`*tuEykA!O?V=zx#N42X6bH=yfUMGa0D6stPr8mA5m@8UuH@lPsuB;N@Z6+-gK5=lwZU?MH2)@p_W=F2PJ&`Kra6=-GD*ckg^eFVIq}=KLvN za6ddN&6x<4Vbu$7-%gcxnj7Wh*Bfx5|M^-T`Uj;eK(v?-TCEqaICwB!tT^uldp?x- z2iXl1j&jqcUsXf9t>N9PP zPv7hL>^2aCqthh%EueJdIQP#-_)pgy38CHpt``U6B_>&B$lIQ954zm!`_C58XX4?P z`zt;rp~imhy^^=cs`EEb3UXvs$8n%`^6avi^Z#My_XvVPNxQ2^s8%^K^=2>Vj8chM5!UnavZTh@0+s`h{Qj|PBzfDTGX1HOHumR*4Ht=(q|a>LwE**Jk?>%M3~ znJzQ#i(Bw@9gZFU#o4Z-n!Su08H$)6g6Zh0gUHW53yjWbs|F=RX9LU34v|oK~v~6CiAa*dZaeb}1Ba6L)C^c@_w8T+xfz1{KS< z?jBtKwrZB%|KDrkwc||%v$jg4%K={O>5=0`(&ZDCdL(5NiAesH9RFDUNuxRQTa}2B zh@r$C53dD(;xy?xQxAm_STtUM_*!Qu_Mdf_UH;j1&=)xtG6o`gZ|?Mt#6mu0AA3hoq+&09!HiG z-~wyuQ!9wsdG?2AtM|^}e>}7NXN?sAY6jBMOP?;(w0Gh8@XVXrEz^}Ly)Xf^a{>yL znkXyf?aLVXw0>nwbM0%+)Gc#htNw&wa$7Y5uKzBLwxLNAULc_12!zJ{xaY^*I3%40O{~qiXz5?J3+9*1J(L>ZB0HF?e46@l0<@ zySYG}VKp(ZR=HQDQgOKayMO8b=6tKfz21$!IjFjRtdqdIsy_YDS`#P5;6Wh2{!1;u zhZt(gRTJ^QI&!Q2OAx9{g82G$^9kKOzXyIAaNNfeq8$(N&ME`HcKh804|bsEaB&=m z{lBfD)mq@>_x0g3+gw^$V|#%lM}Q>zQU**Gc>#;AqukbMBr&?5k&!eo>v)2F7WeO3aWRXhkER70 z^IttCRd;)yncq~hzPuC0^iQW%hAp;ARtTXLLF+`rq;#cnzm^M8y z_U?tA>hA&bss90#n?RsVXPIeMp%8aIdrC&D)87nQpd`fw{=fFlG^(jASy&;QXm8wWK4*qf`S+f zlMIqnq%NnR z9Z6FdPqdHnqxlR#_&Lwm3&K3*Hr#}Gr0~L0e zZh147bFgKNzQy{tp>Ma5Mj4J!d!CbuA@c|v-e$ef(oJi%LWEE?#G2p5;Y`Bf*aTHE zal~&&p8kYj72EY_49hn$5gK59#mQolq?~&yyG29Ld+5Y`*-zmY?l^R5d6jH=lcLBt zkrVE(YaRz9=X3Sw+Z7kC$cG1ehSyZQzD_{Tg6=~Iqso)zWL*5gbK#FVV8_Ejj$H6( z{(jZco~*!5pN*!IAcXb^P*V_CqA>!h0M4Lea0a7wVT6g^YTxdW3y;ojy5+jRV%-q?!bF|8t= z^TgP|3RkVw)G5ytPK0hNdRA{3OVqJEtrrxvyPN=fYu^bItnus2FvJjf-s8Jr6a99h zhCXwk8)c_w5zbQycbi0AB$@9Yufh0{%*o9y@txaV4Lmz>3e|QwWpZ=rm%Vm(>cj8# zcg(||DAbY$Lw{GRhG{gSjAk0HJcgcL7M+J?Kd=4>gyVy_hG1Ag0jdXZYBTKNW zxUm+s$D%88N9p~YghT<%8^AyWTv9!hT%FHpG@Ur+{FQVKon3f}pHWafR&;5JO9 zOI5jMxZ-R%pQvF8vp2YPMa&`WrR};#T+N4@L=bovQk{fU-`rH3rb>Fx_plD3>MO*< zyk!CLuAD7vER_M+qsM*nsvYG@a;;Wg(0kWLB+Q)InSF-=Vc(_0h%4#cZK65qhz#`o$x*g7Ot$^U{6R{RNIe+OL4I&hA#l=IZcnZ&j zrn)BJCAs0uFYt#XKTvupg<=U}&|Bjq9$T+rqbsa|X!IAy@@=4k=08F?z3!V&O9zX6 zG!#?oVf%Ts)~J5T>+sb583dw(q#lMDqusRsM60%Wc+%XiSuM!gr(o)7@H*qU&J#%$ zdfpB4)10?*8<|0mc4ht8H!h~YC-CQ>TF%I0 z16j~-AE~z>OfuOYeJxA>T|=m$5`ImDbqjFg$x!#rF=+PQSKc@c^JV<{wa(xqBueD z7mbJ^`Z5G@{sk|EM?bdl_|eVB>!I#4 zUL$Y6BJmIZyOEtfkmkea$%T z`OE^n`e6unl>>tnX5gGVX)-}T*3M@QcxdMcpsZuQK*x+hG=3mwoXh2#sZhIScctK$ zSwGW?W;NrP>HSYZAIa(kXy2MSIkw7^_ED_Wtw^{GEL%q3EtrRTgI!;30TcJd6)D^A z5yq*K2-{Zcv$41$4pd-InP7<-gKC^4So<}DoOm>J>l&p@ zg?AgVmHsh^)x6y_!&s|47cjK1EtG)1!#6LKgE#3t+6nb`sS8GIJ7jcgN2M~#9Jpu= zWeV1sF_`u-f>Clle^?(i%>lpkQVhg)(ev_{>8j1?Jf+RCek(p0pmA4PG<)o(eHLp~ z0~I*f*Vl=jgFJ(^s!!ge?gYK=A5CuBafcT{t)|;Reyz-)Hk2YX>HqX2#7E!&0Cz-D01Y>*D+^aV3=(QFI$-0 zEwerlQY3dBdDJeWZ}#dFMHm3j9Jp}T?_xZ4p{WkTe(^p=*Wy_y9G~+GP zBX*HoNxvru(!!fMEK|Wi33R3TNj*Q?h`Tw-6k7elHub;JeuS&V;nB1Va_tVnO{@P5 zZYK#71hLu=%Ndq9DaEa;{CGt{^`3&cqP^(*4^Y!XStzcE=42B>sDxXBmODL}trE+4 z5Euz3QhRi5nF|+rE9)J*tik!zw5kt+r22Sh4RtCD$4@UV;sdD%cSusYytg}}1s1PM zCOcW^=5uLvo;dh~v&cDtXmxC`YWXo;(Cjx7B-^KG+u)sNrWJp7q6#rY8#Pepf^QrM z8B{{j!|_f^ffl>BF9y+@-}VI7-D#=^=v&^LvLpC|QEO95kR?;y_OxH@{dIvweIg?} zi@cV?;TgJR&z$r9pi`F)7P6nU&N#XiMLEy0@UHS(i ze_smc!H14pt&Z9hq>?J&em*kQNu}KAwErt@SHHoCHRu(B_FW<7LrEj&Uu-99Kaf{Q z=^(bj1WCA^n;dsujx^ov=Av&l*ljOOtd~qQ;2O(A&Wy`>Vr!)qBr^!f_)yz;UG(Sf z{pgOM9X=rl^ycn21vjcZCyu8#`D+N^XB6z$@@Q}F3r}^#PltBi&E2aZbe@6E)xK#G z?x%w2F-W5S6;wj(TRUN^c4&J#wEcZ2MO((XHuRWN#D$6V^>w~n;I##=@CP^7px#kh z3A2n9^z6}Gn8+3!i$Oa4vq#ZAKmd!ehfa-;bwWVt(%**Qvs#$UCJVQ}y z6krlgwNDOTfuN-haNsW%q5BhdaB9RVQ;FI%Ldnq>#M4xQo@@Y;UkoWN%L8^N@{2(N zYU1ajk~DH5!B<2wvU=&dpsc!BmZ$;F*>6Mc)@{ zA8YVcVYVSJbFUsDhiBrXJK-&nO=%j`6x?%S{*|lG)ngkMD2jhDWf<0Vw;^TsQ7HjV zqltBxD`&CGtB&^Xfz;oInB~H%7wRLO1*i{CH#}DCs*z*;cCsE;Uwv7JaQ12`T)b)$}E`&cr%p;$0uojt5==aF7PU$62R-L2vwA z3_lrg;%eXFK|ILv%bc|6yxQk5^VJpq6&Xj~zOoOfu+i7CvAW{WDUz?nUt0RP?fSk$ zwfk_4xQ(z5`Mz;rQRtDAy|4e=y=OR42Nd1YFKvu}Y7vFLssjzTHddwilL9&(brXAM&#($=loQ|XC&~K!zH_Ap}uZI|5a|*U))vqI}+VCodS30#%Hp&T(7B| zKE^t$6##Y4+msi&P19nd76GFj@SgP5+#BmYX!Q4`u;!j0Z9ME^L&=~P2(J#D<4sNL z&O&VpO77fIbbs5^YQ7h+_3_P2O7>C{)Rscin!q`4MsM2&-25B}gALAb-8bf-dwu_(&72Q5qw_b~R+%g; zK7Bd=Gk{A?xt_rNxv+={${QO4<|`0dK^aOi~SQLfDyn5 zU<5D%7y*m`MgSv#5x@vw1TX^sF9OmlTQ>f^{~Tf+({aLnFaj6>i~vReBY+XW2w(&- z0vG{|07d{KfD!no6EGN++PtqKJV6TnweO!kT5Nn60gM1f03(1AzzARjFaj6>i~vRe zBY+XW2sphA*M9%r!ZM_JnIbAeWz&rl?_BuqVC`>oXPvcL7Z@PEhx BJ~sdW literal 0 HcmV?d00001 From 138e56984188bf45cf6565058fa3cc071fe5690e Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Mon, 13 Nov 2023 00:26:13 +0100 Subject: [PATCH 33/40] fix(ci): update devcontainers, github actions config, bats action (#928) --- .devcontainer/devcontainer.json | 85 +++++++++++++++----------- .github/dependabot.yml | 16 ++++- .github/workflows/auto-tests-bats.yaml | 14 +++-- Makefile | 4 +- test/bats/test_helper.bash | 2 +- 5 files changed, 75 insertions(+), 46 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 31270ced..bec6e7a7 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,43 +1,56 @@ -// For format details, see https://aka.ms/devcontainer.json. For config options, see the -// README at: https://github.com/devcontainers/templates/tree/main/src/kubernetes-helm-minikube +// For format details, see https://aka.ms/devcontainer.json { - "name": "Kubernetes - Minikube-in-Docker", - // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile - "image": "mcr.microsoft.com/devcontainers/base:bookworm", + "name": "Jenkins kubernetes operator devcontainer", + "image": "mcr.microsoft.com/devcontainers/base:bookworm", - "features": { - "ghcr.io/devcontainers/features/docker-in-docker:2": { - "enableNonRootDocker": "true", - "moby": "true" - }, - "ghcr.io/devcontainers/features/kubectl-helm-minikube:1": { - "version": "latest", - "helm": "latest", - "minikube": "latest" - }, - "ghcr.io/devcontainers/features/go:1": { - "version": "1.15", - "golangciLintVersion": "1.26.0" - }, - "ghcr.io/mpriscella/features/kind:1": { - "version": "latest" - }, - "ghcr.io/edouard-lopez/devcontainer-features/bats:0": { - "version": "latest" - } - } - // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], + "features": { + "ghcr.io/devcontainers/features/docker-in-docker:2": { + "enableNonRootDocker": "true", + "moby": "true" + }, + "ghcr.io/devcontainers/features/kubectl-helm-minikube:1": { + "version": "latest", + "helm": "latest", + "minikube": "none" + }, + "ghcr.io/devcontainers/features/go:1": { + "version": "1.15", + "golangciLintVersion": "1.26.0" + }, + "ghcr.io/mpriscella/features/kind:1": { + "version": "latest" + }, + "ghcr.io/edouard-lopez/devcontainer-features/bats:0": { + "version": "latest" + }, + "ghcr.io/brokenpip3/devcontainers-bats/bats-libs:0": { + } + }, + // "forwardPorts": [], - // Use 'postCreateCommand' to run commands after the container is created. - // "postCreateCommand": "kubectl version", + "postCreateCommand": "go version", - // Use 'postStartCommand' to run commands after the container is created like starting minikube. - // "postStartCommand": "nohup bash -c 'minikube start &' > minikube.log 2>&1", + // "postStartCommand": "nohup bash -c 'minikube start &' > minikube.log 2>&1", - // Configure tool-specific properties. - // "customizations": {}, + // Configure tool-specific properties. + "customizations": { + "codespaces": { + "openFiles": [ + "Makefile" + ] + }, + // install some vscode extensions + "vscode": { + "extensions": [ + "golang.Go", + "jetmartin.bats", + "ms-kubernetes-tools.vscode-kubernetes-tools", + "budparr.language-hugo-vscode", + "GitHub.copilot", + "GitHub.copilot-chat" + ] + } + }, - // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. - // "remoteUser": "root" + // "remoteUser": "root" } diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 620ba821..285819f7 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -4,11 +4,25 @@ updates: directory: "/" schedule: interval: "daily" + groups: + golang: + patterns: + - "*" + - package-ecosystem: "npm" directory: "/website" schedule: interval: "daily" + groups: + npm: + patterns: + - "*" + - package-ecosystem: "github-actions" directory: "/" schedule: - interval: "weekly" + interval: "daily" + groups: + actions: + patterns: + - "*" diff --git a/.github/workflows/auto-tests-bats.yaml b/.github/workflows/auto-tests-bats.yaml index b5115458..abd839c5 100644 --- a/.github/workflows/auto-tests-bats.yaml +++ b/.github/workflows/auto-tests-bats.yaml @@ -44,13 +44,13 @@ jobs: - name: Ensure Golang runtime dependencies run: make go-dependencies - - name: Setup BATS - uses: mig4/setup-bats@v1 + - name: Setup Bats and libs + uses: brokenpip3/setup-bats-libs@1.5.2 with: - bats-version: 1.9.0 - - - name: Setup Bats libs - uses: brokenpip3/setup-bats-libs@0.1.0 + support-path: "${{ github.workspace }}/.bats/bats-support" + assert-path: "${{ github.workspace }}/.bats/bats-assert" + detik-path: "${{ github.workspace }}/.bats/bats-detik" + file-path: "${{ github.workspace }}/.bats/bats-file" - name: Kind setup uses: helm/kind-action@v1.5.0 @@ -58,4 +58,6 @@ jobs: cluster_name: ${{env.KIND_CLUSTER_NAME}} - name: Jenkins Operator - bats tests + env: + BATS_LIB_PATH: "${{ github.workspace }}/.bats" run: make bats-tests diff --git a/Makefile b/Makefile index 4d6c6648..7374460c 100644 --- a/Makefile +++ b/Makefile @@ -387,11 +387,11 @@ ifndef BUILD_PRESENT bats-tests: container-runtime-build-amd64 ## Run bats tests @echo "+ $@" kind load docker-image ${IMAGE_NAME} --name $(KIND_CLUSTER_NAME) - OPERATOR_IMAGE="${IMAGE_NAME}" TERM=xterm bats -T -p -x test/bats + OPERATOR_IMAGE="${IMAGE_NAME}" TERM=xterm bats -T -p test/bats else bats-tests: ## Run bats tests @echo "+ $@" - OPERATOR_IMAGE="${IMAGE_NAME}" TERM=xterm bats -T -p -x test/bats + OPERATOR_IMAGE="${IMAGE_NAME}" TERM=xterm bats -T -p test/bats endif .PHONY: crc-start diff --git a/test/bats/test_helper.bash b/test/bats/test_helper.bash index 0fde73fa..bb5da0b3 100644 --- a/test/bats/test_helper.bash +++ b/test/bats/test_helper.bash @@ -1,5 +1,5 @@ _common_setup() { - export BATS_LIB_PATH="/usr/lib/" + export BATS_LIB_PATH="${BATS_LIB_PATH}:/usr/lib" bats_load_library bats-support bats_load_library bats-assert bats_load_library bats-file From 63e8a76b95d9a1cf25a68151f031e9702fd7d10a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Nov 2023 00:27:48 +0100 Subject: [PATCH 34/40] build(deps-dev): bump the npm group in /website with 2 updates (#929) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/package-lock.json | 689 +++++++++----------------------------- website/package.json | 4 +- 2 files changed, 155 insertions(+), 538 deletions(-) diff --git a/website/package-lock.json b/website/package-lock.json index 5dc395ee..87685599 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -55,56 +55,24 @@ "picomatch": "^2.0.4" } }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, "autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", "dev": true, "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" }, "dependencies": { - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true } } @@ -125,72 +93,23 @@ } }, "browserslist": { - "version": "4.17.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", - "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001274", - "electron-to-chromium": "^1.3.886", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - }, - "dependencies": { - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - } + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" } }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", - "dev": true, - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, "caniuse-lite": { - "version": "1.0.30001278", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", - "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", + "version": "1.0.30001561", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz", + "integrity": "sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==", "dev": true }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, "chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -208,14 +127,14 @@ } }, "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "requires": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" } }, "color-convert": { @@ -233,28 +152,10 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true - }, "dependency-graph": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.9.0.tgz", - "integrity": "sha512-9YLIBURXj4DJMFALxXw9K3Y3rwb5Fk0X5/8ipCzaN84+gKxoHK43tVKRNakCQbiEx07E8Uwhuq21BpUagFhZ8w==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true }, "dir-glob": { @@ -267,9 +168,9 @@ } }, "electron-to-chromium": { - "version": "1.3.890", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", - "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", + "version": "1.4.581", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.581.tgz", + "integrity": "sha512-6uhqWBIapTJUxgPTCHH9sqdbxIMPt7oXl0VcAL1kOtlU6aECdcMncCrX5Z7sHQ/invtrC9jUQUef7+HhO8vVFw==", "dev": true }, "emoji-regex": { @@ -278,37 +179,16 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, "fast-glob": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", - "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -336,32 +216,27 @@ "to-regex-range": "^5.0.1" } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } + "fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true }, "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, "requires": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "optional": true }, @@ -372,9 +247,9 @@ "dev": true }, "get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", "dev": true }, "glob-parent": { @@ -387,17 +262,24 @@ } }, "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, "requires": { - "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", "merge2": "^1.4.1", - "slash": "^3.0.0" + "slash": "^4.0.0" + }, + "dependencies": { + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + } } }, "graceful-fs": { @@ -406,52 +288,12 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, "ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", - "dev": true, - "requires": { - "import-from": "^2.1.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -461,12 +303,6 @@ "binary-extensions": "^2.0.0" } }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", - "dev": true - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -494,22 +330,6 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -520,82 +340,12 @@ "universalify": "^2.0.0" } }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dev": true }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -613,9 +363,9 @@ } }, "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "normalize-path": { @@ -627,53 +377,7 @@ "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true }, "path-type": { @@ -683,9 +387,9 @@ "dev": true }, "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, "picomatch": { @@ -700,114 +404,50 @@ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, "postcss-cli": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-7.1.2.tgz", - "integrity": "sha512-3mlEmN1v2NVuosMWZM2tP8bgZn7rO5PYxRRrXtdSyL5KipcgBDjJ9ct8/LKxImMCJJi3x5nYhCGFJOkGyEqXBQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-10.1.0.tgz", + "integrity": "sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==", "dev": true, "requires": { - "chalk": "^4.0.0", "chokidar": "^3.3.0", - "dependency-graph": "^0.9.0", - "fs-extra": "^9.0.0", - "get-stdin": "^8.0.0", - "globby": "^11.0.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "postcss-reporter": "^6.0.0", + "dependency-graph": "^0.11.0", + "fs-extra": "^11.0.0", + "get-stdin": "^9.0.0", + "globby": "^13.0.0", + "picocolors": "^1.0.0", + "postcss-load-config": "^4.0.0", + "postcss-reporter": "^7.0.0", "pretty-hrtime": "^1.0.3", "read-cache": "^1.0.0", - "yargs": "^15.0.2" + "slash": "^5.0.0", + "yargs": "^17.0.0" } }, "postcss-load-config": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", - "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", "dev": true, "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" } }, "postcss-reporter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-6.0.1.tgz", - "integrity": "sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz", + "integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==", "dev": true, "requires": { - "chalk": "^2.4.1", - "lodash": "^4.17.11", - "log-symbols": "^2.2.0", - "postcss": "^7.0.7" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "picocolors": "^1.0.0", + "thenby": "^1.3.4" } }, "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, "pretty-hrtime": { @@ -846,18 +486,6 @@ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", - "dev": true - }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -873,28 +501,10 @@ "queue-microtask": "^1.2.2" } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true }, "string-width": { @@ -917,14 +527,11 @@ "ansi-regex": "^5.0.1" } }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } + "thenby": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", + "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==", + "dev": true }, "to-regex-range": { "version": "5.0.1", @@ -936,21 +543,33 @@ } }, "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true }, - "which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true + "update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "dependencies": { + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + } + } }, "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -959,39 +578,37 @@ } }, "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", "dev": true }, "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" } }, "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true } } } diff --git a/website/package.json b/website/package.json index fc6649c2..847db195 100644 --- a/website/package.json +++ b/website/package.json @@ -17,7 +17,7 @@ }, "homepage": "https://github.com/bep/tech-doc-hugo#readme", "devDependencies": { - "autoprefixer": "^9.8.8", - "postcss-cli": "^7.1.2" + "autoprefixer": "^10.4.16", + "postcss-cli": "^10.1.0" } } From 8d61604b03b0ea22deec5a2015d3f53e8bfa5842 Mon Sep 17 00:00:00 2001 From: Luigi Operoso <40476330+brokenpip3@users.noreply.github.com> Date: Sun, 19 Nov 2023 14:04:23 +0100 Subject: [PATCH 35/40] fix(tests) (#936) --- chart/jenkins-operator/values.yaml | 2 +- pkg/plugins/base_plugins.go | 2 +- test/bats/2-deploy-with-more-options.bats | 2 ++ test/e2e/configuration_test.go | 2 +- test/helm/helm_test.go | 6 +++--- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/chart/jenkins-operator/values.yaml b/chart/jenkins-operator/values.yaml index 28f622dc..995bf272 100644 --- a/chart/jenkins-operator/values.yaml +++ b/chart/jenkins-operator/values.yaml @@ -96,7 +96,7 @@ jenkins: # - name: workflow-aggregator # version: 596.v8c21c963d92d # - name: git - # version: 5.2.0 + # version: 5.2.1 # - name: job-dsl # version: "1.85" # - name: configuration-as-code diff --git a/pkg/plugins/base_plugins.go b/pkg/plugins/base_plugins.go index 6ea8f56f..f22dd2b1 100644 --- a/pkg/plugins/base_plugins.go +++ b/pkg/plugins/base_plugins.go @@ -2,7 +2,7 @@ package plugins const ( configurationAsCodePlugin = "configuration-as-code:1700.v6f448841296e" - gitPlugin = "git:5.2.0" + gitPlugin = "git:5.2.1" jobDslPlugin = "job-dsl:1.85" kubernetesPlugin = "kubernetes:4029.v5712230ccb_f8" kubernetesCredentialsProviderPlugin = "kubernetes-credentials-provider:1.234.vf3013b_35f5b_a" diff --git a/test/bats/2-deploy-with-more-options.bats b/test/bats/2-deploy-with-more-options.bats index a39c9ea0..91d99cc6 100644 --- a/test/bats/2-deploy-with-more-options.bats +++ b/test/bats/2-deploy-with-more-options.bats @@ -5,6 +5,8 @@ setup() { #bats test_tags=phase:helm @test "2.1 Install helm chart with options" { + # The kind storage class provider needs some sec to delete the old pvc + sleep 30 run ${HELM} dependency update chart/jenkins-operator assert_success run ${KUBECTL} label node jenkins-control-plane batstest=yep diff --git a/test/e2e/configuration_test.go b/test/e2e/configuration_test.go index 9e56e188..6de833f7 100644 --- a/test/e2e/configuration_test.go +++ b/test/e2e/configuration_test.go @@ -25,7 +25,7 @@ const e2e = "e2e" var expectedBasePluginsList = []plugins.Plugin{ plugins.Must(plugins.New("configuration-as-code:1700.v6f448841296e")), - plugins.Must(plugins.New("git:5.2.0")), + plugins.Must(plugins.New("git:5.2.1")), plugins.Must(plugins.New("kubernetes:4029.v5712230ccb_f8")), plugins.Must(plugins.New("kubernetes-credentials-provider:1.234.vf3013b_35f5b_a")), plugins.Must(plugins.New("job-dsl:1.85")), diff --git a/test/helm/helm_test.go b/test/helm/helm_test.go index 1b7ad4c0..14685cff 100644 --- a/test/helm/helm_test.go +++ b/test/helm/helm_test.go @@ -77,12 +77,12 @@ var _ = Describe("Jenkins Controller with security validator", func() { invalidPlugins = []v1alpha2.Plugin{ {Name: "simple-theme-plugin", Version: "0.6"}, {Name: "audit-trail", Version: "3.8"}, - {Name: "github", Version: "1.31.0"}, + {Name: "github", Version: "1.36.0"}, } validPlugins = []v1alpha2.Plugin{ {Name: "simple-theme-plugin", Version: "136.v23a_15f86c53d"}, {Name: "audit-trail", Version: "3.11"}, - {Name: "github", Version: "1.36.0"}, + {Name: "github", Version: "1.37.3.1"}, } ) @@ -117,7 +117,7 @@ var _ = Describe("Jenkins Controller with security validator", func() { jenkins := e2e.RenderJenkinsCR(jenkinsCRName, namespace.Name, seedJobs, groovyScripts, casc, "") jenkins.Spec.Master.Plugins = invalidPlugins jenkins.Spec.ValidateSecurityWarnings = true - Expect(e2e.K8sClient.Create(context.TODO(), jenkins)).Should(MatchError("admission webhook \"vjenkins.kb.io\" denied the request: security vulnerabilities detected in the following user-defined plugins: \ngithub:1.31.0")) + Expect(e2e.K8sClient.Create(context.TODO(), jenkins)).Should(MatchError("admission webhook \"vjenkins.kb.io\" denied the request: security vulnerabilities detected in the following user-defined plugins: \ngithub:1.36.0")) }) }) Context("When Jenkins CR doesn't contain plugins with security warnings", func() { From 50c7217daa79f2adb109c809e05ec2983881871d Mon Sep 17 00:00:00 2001 From: Yuedong Wu <57584831+lunarwhite@users.noreply.github.com> Date: Tue, 28 Nov 2023 16:48:07 +0800 Subject: [PATCH 36/40] Fix: use consistent imagePullPolicy when enable Jenkins backup (#939) --- chart/jenkins-operator/templates/jenkins.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chart/jenkins-operator/templates/jenkins.yaml b/chart/jenkins-operator/templates/jenkins.yaml index c4d39b76..0a918a3d 100644 --- a/chart/jenkins-operator/templates/jenkins.yaml +++ b/chart/jenkins-operator/templates/jenkins.yaml @@ -137,7 +137,7 @@ spec: {{- if .Values.jenkins.backup.enabled }} - name: {{ .Values.jenkins.backup.containerName }} image: {{ .Values.jenkins.backup.image }} - imagePullPolicy: IfNotPresent + imagePullPolicy: {{ .Values.jenkins.imagePullPolicy }} {{- with .Values.jenkins.backup.resources }} resources: {{ toYaml . | nindent 10 }} {{- end }} From 2ba5334c10d8271c1c13b1bd787aaaf3d1e437df Mon Sep 17 00:00:00 2001 From: Pavel Mashchenskiy <54306404+mashchensky@users.noreply.github.com> Date: Sun, 7 Jan 2024 12:20:38 +0100 Subject: [PATCH 37/40] Fix: change default value for configurationAsCode and groovyScripts (#947) Co-authored-by: Pavel Mashchenskiy --- chart/jenkins-operator/values.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chart/jenkins-operator/values.yaml b/chart/jenkins-operator/values.yaml index 995bf272..62d955af 100644 --- a/chart/jenkins-operator/values.yaml +++ b/chart/jenkins-operator/values.yaml @@ -276,10 +276,10 @@ jenkins: # configuration is section where we can configure Jenkins instance # See https://jenkinsci.github.io/kubernetes-operator/docs/getting-started/latest/customization/ for details configuration: - configurationAsCode: {} + configurationAsCode: [] # - configMapName: jenkins-casc # content: {} - groovyScripts: {} + groovyScripts: [] # - configMapName: jenkins-gs # content: {} From 332eabe8d75f95fdfbfb78789852d299ae0118c1 Mon Sep 17 00:00:00 2001 From: Aniket Shitole <91371143+AniketNS@users.noreply.github.com> Date: Sun, 4 Feb 2024 15:54:47 +0530 Subject: [PATCH 38/40] Modified ldap.md for issue #937 (#951) --- .../en/docs/Getting Started/v0.7.x/ldap.md | 49 +++++++++---------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/website/content/en/docs/Getting Started/v0.7.x/ldap.md b/website/content/en/docs/Getting Started/v0.7.x/ldap.md index ca2b1179..b745caf8 100644 --- a/website/content/en/docs/Getting Started/v0.7.x/ldap.md +++ b/website/content/en/docs/Getting Started/v0.7.x/ldap.md @@ -77,31 +77,30 @@ data: userIdStrategy: "caseInsensitive" ``` -> Note the use of `${LDAP_MANAGER_PASSWORD}` above. You can reference -> Kubernetes secrets in your JCasC ConfigMaps by adding the following to your -> Jenkins object: -> -> ```yaml -> kind: Jenkins -> spec: -> configurationAsCode: -> configurations: -> - name: jenkins-casc -> secret: -> # This here -> name: jenkins-casc-secrets -> ``` -> -> ```yaml -> apiVersion: v1 -> kind: Secret -> metadata: -> name: jenkins-cred-conf-secrets -> stringData: -> LDAP_MANAGER_PASSWORD: -> ``` -> -> Schema reference: [v1alpha2.ConfigurationAsCode](./schema/#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.ConfigurationAsCode) +>Note the use of `${LDAP_MANAGER_PASSWORD}` above. You can reference +>Kubernetes secrets in your JCasC ConfigMaps by adding the following to your + +Jenkins object: + +```yaml +kind: Jenkins +spec: + configurationAsCode: + configurations: + - name: jenkins-casc + secret: + # This here + name: jenkins-casc-secrets +``` +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: jenkins-cred-conf-secrets +stringData: + LDAP_MANAGER_PASSWORD: +``` +Schema reference: [v1alpha2.ConfigurationAsCode](./schema/#github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2.ConfigurationAsCode) Finally you must configure the Jenkins operator to use the manager's credentials from the AD. From bfda3c8cf99fc56cb65519a673f3b8a6209deb0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Valen=C3=A7a?= Date: Sun, 4 Feb 2024 17:34:36 +0000 Subject: [PATCH 39/40] Provides an Override to the WATCH_NAMESPACE env variable. (#923) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: João Valença --- chart/jenkins-operator/templates/operator.yaml | 2 ++ chart/jenkins-operator/values.yaml | 4 ++++ .../Getting Started/latest/installing-the-operator.md | 8 +++++--- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/chart/jenkins-operator/templates/operator.yaml b/chart/jenkins-operator/templates/operator.yaml index 917dc9e1..967d2264 100644 --- a/chart/jenkins-operator/templates/operator.yaml +++ b/chart/jenkins-operator/templates/operator.yaml @@ -57,6 +57,8 @@ spec: - name: WATCH_NAMESPACE {{- if .Values.jenkins.enabled }} value: {{ .Values.jenkins.namespace }} + {{- else if .Values.operator.watchNamespace }} + value: {{ .Values.operator.watchNamespace }} {{- else }} valueFrom: fieldRef: diff --git a/chart/jenkins-operator/values.yaml b/chart/jenkins-operator/values.yaml index 62d955af..c39e32eb 100644 --- a/chart/jenkins-operator/values.yaml +++ b/chart/jenkins-operator/values.yaml @@ -308,6 +308,10 @@ operator: # fullnameOverride overrides the deployment name fullnameOverride: "" + # Select a different namespace to look for the Jenkins CR and deploy Jenkins in. Defaults to the same namespace as + # the operator. + # watchNamespace: "jenkins-namespace" + resources: {} nodeSelector: {} tolerations: [] diff --git a/website/content/en/docs/Getting Started/latest/installing-the-operator.md b/website/content/en/docs/Getting Started/latest/installing-the-operator.md index 9289c6e6..16c0ee42 100644 --- a/website/content/en/docs/Getting Started/latest/installing-the-operator.md +++ b/website/content/en/docs/Getting Started/latest/installing-the-operator.md @@ -127,11 +127,13 @@ Name of resource. The pod name will be jenkins-<name> (name w namespace -default +"" -Namespace the resources will be deployed to. It's not recommended to use default namespace. -Create new namespace for jenkins (e.g. kubectl create -n jenkins) +Namespace the resources will be deployed to. If omitted, the resources will be deployed to the same namespace as the operator. +It's not recommended to use default namespace. Create new namespace for jenkins (e.g. kubectl create -n jenkins). + +Note: If the Jenkins instance is disabled, this property will be ignored. Use the `operator.watchNamespace` property instead. From 95f0215c3729b4a324b48c04efedbad9986eab2a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Feb 2024 23:43:50 +0100 Subject: [PATCH 40/40] build(deps-dev): bump the npm group in /website with 2 updates (#958) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/package-lock.json | 158 +++++++++++++++++--------------------- website/package.json | 4 +- 2 files changed, 71 insertions(+), 91 deletions(-) diff --git a/website/package-lock.json b/website/package-lock.json index 87685599..3c0df118 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -30,6 +30,12 @@ "fastq": "^1.6.0" } }, + "@sindresorhus/merge-streams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz", + "integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==", + "dev": true + }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -56,25 +62,17 @@ } }, "autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "version": "10.4.17", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", + "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", "dev": true, "requires": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", + "browserslist": "^4.22.2", + "caniuse-lite": "^1.0.30001578", + "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" - }, - "dependencies": { - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - } } }, "binary-extensions": { @@ -93,21 +91,21 @@ } }, "browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", + "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", + "caniuse-lite": "^1.0.30001580", + "electron-to-chromium": "^1.4.648", + "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" } }, "caniuse-lite": { - "version": "1.0.30001561", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz", - "integrity": "sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==", + "version": "1.0.30001583", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001583.tgz", + "integrity": "sha512-acWTYaha8xfhA/Du/z4sNZjHUWjkiuoAi2LM+T/aL+kemKQgPT1xBb/YKjlQ0Qo8gvbHsGNplrEJ+9G3gL7i4Q==", "dev": true }, "chokidar": { @@ -158,19 +156,10 @@ "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, "electron-to-chromium": { - "version": "1.4.581", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.581.tgz", - "integrity": "sha512-6uhqWBIapTJUxgPTCHH9sqdbxIMPt7oXl0VcAL1kOtlU6aECdcMncCrX5Z7sHQ/invtrC9jUQUef7+HhO8vVFw==", + "version": "1.4.656", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.656.tgz", + "integrity": "sha512-9AQB5eFTHyR3Gvt2t/NwR0le2jBSUNwCnMbUCejFWHD+so4tH40/dRLgoE+jxlPeWS43XJewyvCv+I8LPMl49Q==", "dev": true }, "emoji-regex": { @@ -199,9 +188,9 @@ } }, "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz", + "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==", "dev": true, "requires": { "reusify": "^1.0.4" @@ -223,9 +212,9 @@ "dev": true }, "fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -262,24 +251,17 @@ } }, "globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.0.tgz", + "integrity": "sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==", "dev": true, "requires": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", + "@sindresorhus/merge-streams": "^1.0.0", + "fast-glob": "^3.3.2", "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "dependencies": { - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true - } + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" } }, "graceful-fs": { @@ -289,9 +271,9 @@ "dev": true }, "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true }, "is-binary-path": { @@ -341,9 +323,9 @@ } }, "lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", + "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", "dev": true }, "merge2": { @@ -363,9 +345,9 @@ } }, "node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "normalize-path": { @@ -381,9 +363,9 @@ "dev": true }, "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true }, "picocolors": { @@ -405,18 +387,18 @@ "dev": true }, "postcss-cli": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-10.1.0.tgz", - "integrity": "sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.0.tgz", + "integrity": "sha512-xMITAI7M0u1yolVcXJ9XTZiO9aO49mcoKQy6pCDFdMh9kGqhzLVpWxeD/32M/QBmkhcGypZFFOLNLmIW4Pg4RA==", "dev": true, "requires": { "chokidar": "^3.3.0", "dependency-graph": "^0.11.0", "fs-extra": "^11.0.0", "get-stdin": "^9.0.0", - "globby": "^13.0.0", + "globby": "^14.0.0", "picocolors": "^1.0.0", - "postcss-load-config": "^4.0.0", + "postcss-load-config": "^5.0.0", "postcss-reporter": "^7.0.0", "pretty-hrtime": "^1.0.3", "read-cache": "^1.0.0", @@ -425,19 +407,19 @@ } }, "postcss-load-config": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", - "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.0.2.tgz", + "integrity": "sha512-Q8QR3FYbqOKa0bnC1UQ2bFq9/ulHX5Bi34muzitMr8aDtUelO5xKeJEYC/5smE0jNE9zdB/NBnOwXKexELbRlw==", "dev": true, "requires": { - "lilconfig": "^2.0.5", - "yaml": "^2.1.1" + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" } }, "postcss-reporter": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz", - "integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.1.0.tgz", + "integrity": "sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==", "dev": true, "requires": { "picocolors": "^1.0.0", @@ -542,6 +524,12 @@ "is-number": "^7.0.0" } }, + "unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true + }, "universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -556,14 +544,6 @@ "requires": { "escalade": "^3.1.1", "picocolors": "^1.0.0" - }, - "dependencies": { - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - } } }, "wrap-ansi": { diff --git a/website/package.json b/website/package.json index 847db195..2d2f26f8 100644 --- a/website/package.json +++ b/website/package.json @@ -17,7 +17,7 @@ }, "homepage": "https://github.com/bep/tech-doc-hugo#readme", "devDependencies": { - "autoprefixer": "^10.4.16", - "postcss-cli": "^10.1.0" + "autoprefixer": "^10.4.17", + "postcss-cli": "^11.0.0" } }

    om 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 Bg|Pqt literal 0 HcmV?d00001 From a6e32fde98bf8bba2563f31a2e0967e43dbe37ab Mon Sep 17 00:00:00 2001 From: brokenpip3 Date: Wed, 13 Sep 2023 10:15:42 +0200 Subject: [PATCH 30/40] bump to 0.8.0 --- VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION.txt b/VERSION.txt index ff2a3fbf..b19b5211 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -v0.8.0-beta2 +v0.8.0 From d70f70f0f43fe3c5216644051718ed9587d0aef9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Oct 2023 10:02:59 +0200 Subject: [PATCH 31/40] Auto-updated Kubernetes Manifests (#901) Co-authored-by: brokenpip3 --- deploy/all-in-one-v1alpha2.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deploy/all-in-one-v1alpha2.yaml b/deploy/all-in-one-v1alpha2.yaml index ade3dc69..8fc0bf8a 100644 --- a/deploy/all-in-one-v1alpha2.yaml +++ b/deploy/all-in-one-v1alpha2.yaml @@ -232,8 +232,8 @@ metadata: name: jenkins-operator labels: app.kubernetes.io/name: jenkins-operator - helm.sh/chart: jenkins-operator-0.8.0-beta.2 - app.kubernetes.io/version: "0.8.0-beta.2" + helm.sh/chart: jenkins-operator-0.8.0 + app.kubernetes.io/version: "0.8.0" spec: replicas: 1 selector: @@ -247,7 +247,7 @@ spec: serviceAccountName: jenkins-operator containers: - name: jenkins-operator - image: quay.io/jenkins-kubernetes-operator/operator:v0.8.0-beta2 + image: quay.io/jenkins-kubernetes-operator/operator:v0.8.0 imagePullPolicy: IfNotPresent ports: - name: http From 3682468b5f75257292ce2a4c76ae429062f201c8 Mon Sep 17 00:00:00 2001 From: Ilya Pyatizbyantsev <47037396+pyatizbyantsevia@users.noreply.github.com> Date: Sun, 15 Oct 2023 17:31:07 +0300 Subject: [PATCH 32/40] Combine dark and regular logo in README.md (#915) --- README.md | 7 ++++++- assets/jenkins_gopher_wide_exp_dark.png | Bin 0 -> 247650 bytes 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 assets/jenkins_gopher_wide_exp_dark.png diff --git a/README.md b/README.md index 87fe1850..631baf45 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,12 @@ [![Go Report Card](https://goreportcard.com/badge/github.com/jenkinsci/kubernetes-operator "Go Report Card")](https://goreportcard.com/report/github.com/jenkinsci/kubernetes-operator) [![Gitter chat](https://badges.gitter.im/jenkinsci/kubernetes-operator.png)](https://gitter.im/jenkinsci/kubernetes-operator) -![logo](/assets/jenkins_gopher_wide.png) + + + + + + ## What's the Jenkins Operator? diff --git a/assets/jenkins_gopher_wide_exp_dark.png b/assets/jenkins_gopher_wide_exp_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..a3775ed324f7d8b1c9383b95db4c192a028b1e96 GIT binary patch literal 247650 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:KkY+hnw5{{3EIaUNpIp3yu!PcJ(#%{% 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