9 Commits

Author SHA1 Message Date
e87f57ab1a use tag instead of promote to trigger build pipelines
All checks were successful
continuous-integration/drone/tag Build is passing
2021-11-23 15:56:07 -08:00
e9a8b0ee3a filter yq to just first document
All checks were successful
continuous-integration/drone Build is passing
2021-05-27 23:53:35 -07:00
1bef7678d5 reverse order of yq arguments
Some checks failed
continuous-integration/drone Build is failing
2021-05-27 12:52:43 -07:00
dcf4071481 correct yq command
Some checks failed
continuous-integration/drone Build is failing
2021-05-26 00:05:45 -07:00
1c2a64a1e1 colored message output
Some checks failed
continuous-integration/drone Build is failing
2021-01-02 20:13:16 -08:00
712ddb76ca add exec runner
All checks were successful
continuous-integration/drone Build is passing
2021-01-02 19:54:53 -08:00
a01c098075 rename main pipeline
All checks were successful
continuous-integration/drone Build is passing
2021-01-02 17:53:38 -08:00
e2d00dafab switch to promotion event for pipeline chaining 2021-01-02 17:45:12 -08:00
2d45d5b368 correct docker repo name 2020-12-30 05:47:02 -08:00
2 changed files with 88 additions and 14 deletions

View File

@ -15,12 +15,13 @@ steps:
- name: docker-socket
path: /var/run/docker.sock
environment:
DRONE_API_TOKEN:
from_secret: drone_api_token
GITEA_API_TOKEN:
from_secret: gitea_api_token
REGISTRY_PWD:
from_secret: registry_pwd
commands:
- apk add git curl
- apk add git curl jq
- echo "Checking for new server version"
# collect info from upstream repository
- git clone https://github.com/drone/drone.git
- cd drone
@ -29,16 +30,33 @@ steps:
- COMMIT_HASH=$(git log -n 1 --pretty=%H)
# collect info from current image
- echo $REGISTRY_PWD | docker login -u drone --password-stdin registry.jfmonty2.com
- docker pull registry.jfmonty2.com/drone:latest
- IMAGE_COMMIT_HASH=$(docker image inspect -f '{{ .Config.Labels.drone_commit_hash }}' registry.jfmonty2.com/drone-server:latest)
# compare
# defaults to 0 if image can't be found
- docker pull registry.jfmonty2.com/drone-server:latest || true
- IMAGE_COMMIT_HASH=$(docker image inspect -f '{{ .Config.Labels.drone_commit_hash }}' registry.jfmonty2.com/drone-server:latest || echo 0)
# compare and trigger build if necessary
- |
if [[ $COMMIT_HASH != $IMAGE_COMMIT_HASH ]]; then
echo 'Updates available, triggering build pipeline.'
curl -X POST -H "Authorization: Bearer $DRONE_API_TOKEN" \
https://drone.jfmonty2.com/api/repos/jfmonty2/drone/builds
echo -e '\033[1;33mUpdates available, triggering server build.\033[0m'
curl -X POST -H "Authorization: token $GITEA_API_TOKEN" -H "Content-Type: application/json" \
https://git.jfmonty2.com/api/v1/repos/jfmonty2/drone/tags -d "{\"tag_name\": \"server-$LATEST_VERSION\"}"
else
echo 'Image is already up to date.'
echo -e '\033[0;32mServer is already up to date.\033[0m'
fi
# now check for runner
- echo "Checking for new runner version"
- RELEASE=$(curl https://api.github.com/repos/drone-runners/drone-runner-exec/releases | jq -r '.[0]')
- LATEST_VERSION=$(echo $RELEASE | jq -r '.tag_name')
# get version of currently running instance (also defaults to 0 if not found)
- docker pull registry.jfmonty2.com/drone-runner-exec:latest || true
- CURRENT_VERSION=$(docker image inspect -f '{{ .Config.Labels.drone_runner_version }}' registry.jfmonty2.com/drone-runner-exec:latest || echo 0)
# compare and trigger build if necessary
- |
if [[ $LATEST_VERSION != $CURRENT_VERSION ]]; then
echo -e '\033[1;33mNew release available, triggering runner build.\033[0m'
curl -X POST -H "Authorization: token $GITEA_API_TOKEN" -H "Content-Type: application/json" \
https://git.jfmonty2.com/api/v1/repos/jfmonty2/drone/tags -d "{\"tag_name\": \"runner-exec-$LATEST_VERSION\"}"
else
echo -e '\033[0;32mRunner is already up to date.\033[0m'
fi
volumes:
@ -50,11 +68,13 @@ volumes:
---
kind: pipeline
type: docker
name: main
name: server
trigger:
event:
- custom
- tag
ref:
- refs/tags/server-*
steps:
- name: prepare
@ -71,7 +91,7 @@ steps:
- LATEST_VERSION=$(git tag --sort v:refname | grep '^v[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}$' | tail -n 1)
- git checkout $LATEST_VERSION
- printf $(git log -n 1 --pretty=%H) > ../commit_hash # we'll need this for the docker build
- GOLANG_IMG=$(yq read .drone.yml 'steps[0].image')
- GOLANG_IMG=$(yq eval 'select(documentIndex == 0) | .steps[0].image' .drone.yml)
- docker pull $GOLANG_IMG
- docker tag $GOLANG_IMG drone-builder:latest
- docker image rm $GOLANG_IMG
@ -117,9 +137,54 @@ steps:
- echo $REGISTRY_PWD | docker login -u drone --password-stdin registry.jfmonty2.com
- docker push registry.jfmonty2.com/drone-server:latest
volumes:
- name: docker-socket
host:
path: /var/run/docker.sock
---
kind: pipeline
type: docker
name: runner-exec
trigger:
event:
- tag
ref:
- refs/tags/runner-exec-*
steps:
- name: docker-build
image: docker:latest
volumes:
- name: docker-socket
path: /var/run/docker.sock
commands:
# get version number
- apk add curl jq
- RUNNER_VERSION=$(curl https://api.github.com/repos/drone-runners/drone-runner-exec/releases | jq -r '.[0].tag_name')
# get the binary
- cd runner-exec
- curl -L https://github.com/drone-runners/drone-runner-exec/releases/latest/download/drone_runner_exec_linux_amd64.tar.gz | tar xz
- >
docker build
-t registry.jfmonty2.com/drone-runner-exec:latest
--label drone_runner_version=$RUNNER_VERSION
.
- name: deploy
image: docker:latest
volumes:
- name: docker-socket
path: /var/run/docker.sock
environment:
REGISTRY_PWD:
from_secret: registry_pwd
commands:
- echo $REGISTRY_PWD | docker login -u drone --password-stdin registry.jfmonty2.com
- docker push registry.jfmonty2.com/drone-runner-exec:latest
volumes:
- name: docker-socket
host:
path: /var/run/docker.sock

9
runner-exec/Dockerfile Normal file
View File

@ -0,0 +1,9 @@
FROM alpine:latest
RUN echo 'http://dl-cdn.alpinelinux.org/alpine/edge/community' >> /etc/apk/repositories
RUN apk update --no-cache
RUN apk add --no-cache git curl jq yq python3 docker-cli
RUN ln -s /usr/bin/python3 /usr/bin/python
COPY ./drone-runner-exec /bin/
CMD ["drone-runner-exec"]