Drone plugin 개발
4647 단어 drone
1. 소개
Drone plugin은 Drone 환경 변수와 함께 사용할 수 있는 특정 작업을 수행하는 프로그램을 포함하는 특수 Docker 컨테이너입니다.drone.yaml의 설정 매개 변수입니다.
Environment Variables
Write a plugin in Bash
Write a plugin in Go
에 있습니다.drone.yaml에서 용기에 전달되는 파라미터를 설정합니다. 이 파라미터는 환경 변수로 용기에 전달되고 접두사는
PLUGIN_
입니다.kind: pipeline
type: docker
name: default
steps:
- name: webhook
image: janecitizen/slack
settings:
webhook: https://hooks.slack.com/services/...
channel: general
text: hello
PLUGIN_CHANNEL=general
PLUGIN_WEBHOOK=https://hooks.slack.com/services/...
PLUGIN_TEXT=hello
2.git push용 플러그인 개발
2.1 docker 컨테이너에 SSH keys 사용
Using SSH keys inside docker container
SSH 키 추가 관련 섹션
# Authorize SSH Host
RUN mkdir -p /root/.ssh && \
chmod 0700 /root/.ssh && \
ssh-keyscan github.com > /root/.ssh/known_hosts
# Add the keys and set permissions
RUN echo "$ssh_prv_key" > /root/.ssh/id_rsa && \
echo "$ssh_pub_key" > /root/.ssh/id_rsa.pub && \
chmod 600 /root/.ssh/id_rsa && \
chmod 600 /root/.ssh/id_rsa.pub
2.2Git용 SSH 매개변수
질문:The authenticity of host'ip(ip)'can't be established.
Git에 대한 SSH 구성:git제출할 ssh key 지정
"
GIT_SSH_COMMAND
환경 변수(Git 2.3.0+)를 사용하여 ssh 매개변수를 전달합니다.$ GIT_SSH_COMMAND='ssh -i ~/.ssh/id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
”
2.3 플러그인 구현
참조:
Go: appleboy/drone-git-push
Bash: muxueqz/drone-git-push-by-bash
+ git remote add deploy ssh://[email protected]:xxxx/letitia/drone-test.git
+ git push deploy HEAD:master
Warning: Permanently added '[xxx.xxx.xxx.xxx]:xxxx' (ECDSA) to the list of known hosts.
Load key "/root/.ssh/id_rsa": invalid format
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
플러그인 스크립트echo -n "${PLUGIN_SSH_KEY}"
에서 변수의 내용을 볼 수 있습니다. -----BEGIN RSA PRIVATE KEY-----
.......
.......
.......
-----END RSA PRIVATE KEY-----
그 중
가 전달되지 않았습니다. echo -en "${PLUGIN_SSH_KEY}"
전달된 경우steps에서 볼 수 있는 내용은 [secret:git_ssh_key]
전의하여 .ssh/id_rsa
+ git push origin HEAD:master
fatal: could not read Username for 'http://xxx.xxx.xxx.xxx:xxxx': No such device or address
원인은 Drone이 http를 통해 창고를 복제했고 복제 후 창고의origin이 http://
로 바뀌어 사용자 이름을 읽을 수 없는 오류가 발생했기 때문일 수 있습니다export GIT_SSH_COMMAND='ssh -o StrictHostKeyChecking=no'
mkdir /root/.ssh
chmod 700 /root/.ssh
echo -en "$SSH_KEY" > /root/.ssh/id_rsa
chmod 600 /root/.ssh/id_rsa
touch /root/.ssh/known_hosts
chmod 600 /root/.ssh/known_hosts
ssh-keyscan -H xxx.xxx.xxx.xxx > /etc/ssh/ssh_known_hosts 2> /dev/null
ssh-keyscan -H xxx.xxx.xxx.xxx > /root/.ssh/known_hosts
plugin: FROM alpine
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk update && apk upgrade && \
apk add --no-cache ca-certificates openssh curl bash git git-lfs
ADD script.sh /bin/
RUN chmod +x /bin/script.sh
ENTRYPOINT /bin/script.sh
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
많은 비용이 들지 않는 자체 호스팅 지속적 전달 💰 - 1부이 시리즈에서는 및 덕분에 개인 서버에서 무료로 실행할 수 있는 오픈 소스 자체 관리형 지속적 배포 솔루션을 설정하는 방법을 보여주고자 합니다. 목표는 다음을 실행하여 라이브 웹 사이트에서 웹 앱을 업데이트하는 것입...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.