GoCD Версия: 19.12.0
Я пытаюсь получить переменные среды, определенные в развертывании (системе) Kubernetes, в моей конфигурации GoCD YAML, чтобы пройти аутентификацию GitHub при извлечении ресурса. Я подтвердил, что могу вызвать хранилище с помощью персонального токена доступа . (через https: // [TOKEN] @ github.com / [COMPANY] / [REPO]. git)
Это, конечно, также работает, если я делаю то же самое для действительного поля YAML git
.
Секреты GoCD в K8s:
apiVersion: v1
data:
GITHUB_ACCESS_KEY: base64EncodedKey
kind: Secret
type: Opaque
Развертывание GoCD получает секреты:
...
spec:
containers:
- env:
- name: GOCD_PLUGIN_INSTALL_kubernetes-elastic-agents
value: https://github.com/gocd/kubernetes-elastic-agents/releases/download/v3.4.0-196/kubernetes-elastic-agent-3.4.0-196.jar
- name: GOCD_PLUGIN_INSTALL_docker-registry-artifact-plugin
value: https://github.com/gocd/docker-registry-artifact-plugin/releases/download/v1.1.0-104/docker-registry-artifact-plugin-1.1.0-104.jar
- name: GITHUB_ACCESS_KEY
valueFrom:
secretKeyRef:
key: GITHUB_ACCESS_KEY
name: gocd-server
...
Я выполнил c 'd' в модуле и повторил переменную, которая возвращает декодированное значение.
YAML:
format_version: 9
pipelines:
db-docker-build:
group: someGroup
label_template: ${COUNT}-${git[:8]}
lock_behavior: unlockWhenFinished
display_order: 1
materials:
git:
git: 'https://$GITHUB_ACCESS_KEY@github.com/[COMPANY]/[REPO].git'
shallow_clone: true
auto_update: true
branch: master
...
Я бы половину ожидать, что это сработает, но это не так, на самом деле оно просто получает $GITHUB_ACCESS_KEY
в качестве значения. Задания, определенные на этапах конвейера, выполняются с использованием модуля агента elasti c, в котором также определены требуемые секреты. Я пробовал несколько
Установка переменных env -
environment_variables: GIT_KEY: ${GITHUB_ACCESS_KEY}
и затем использование этой переменной
git: 'https://$GIT_KEY@github.com/[COMPANY]/[REPO].git'
Установка переменных env и нет кавычки -
environment_variables: GIT_KEY: ${GITHUB_ACCESS_KEY}
и затем с использованием этой переменной
git: https://${GIT_KEY}@github.com/[COMPANY]/[REPO].git
без кавычек - git: https://$GITHUB_ACCESS_KEY@github.com/[COMPANY]/[REPO].git
без кавычек в скобках - git: https://${GITHUB_ACCESS_KEY}@github.com/[COMPANY]/[REPO].git
Я видел из некоторой документации YAML , что рекомендуется использовать encrypted_password
для пароля GitHub, но это кажется ненужным, поскольку GUI скрывает токен и что он бежит в Куберне с секретами.