drone/.drone.yml

129 lines
3.5 KiB
YAML
Raw Normal View History

---
kind: pipeline
type: docker
name: check
trigger:
event:
- cron
2020-12-30 05:40:09 -08:00
cron:
- weekly-update-check
steps:
- name: check
image: docker:latest
volumes:
- name: docker-socket
path: /var/run/docker.sock
environment:
DRONE_API_TOKEN:
from_secret: drone_api_token
REGISTRY_PWD:
from_secret: registry_pwd
commands:
2021-01-02 17:53:38 -08:00
- 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
- 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
- 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
2020-12-30 05:44:46 -08:00
- docker pull registry.jfmonty2.com/drone-server:latest
- IMAGE_COMMIT_HASH=$(docker image inspect -f '{{ .Config.Labels.drone_commit_hash }}' registry.jfmonty2.com/drone-server:latest)
# compare and trigger CI if necessary
- |
if [[ $COMMIT_HASH != $IMAGE_COMMIT_HASH ]]; then
2021-01-02 17:53:38 -08:00
echo 'Updates available, triggering server build.'
curl -X POST -H "Authorization: Bearer $DRONE_API_TOKEN" \
2021-01-02 17:57:36 -08:00
https://drone.jfmonty2.com/api/repos/jfmonty2/drone/builds/$DRONE_BUILD_NUMBER/promote?target=staging
else
echo 'Image is already up to date.'
fi
volumes:
- name: docker-socket
host:
path: /var/run/docker.sock
2020-12-29 09:36:06 -08:00
---
kind: pipeline
type: docker
2021-01-02 17:53:38 -08:00
name: server
2020-12-29 09:36:06 -08:00
trigger:
event:
- promote
target:
2021-01-02 17:57:36 -08:00
- staging
2020-12-29 09:36:06 -08:00
steps:
- name: prepare
image: docker:latest
volumes:
- name: docker-socket
path: /var/run/docker.sock
commands:
- echo 'http://dl-cdn.alpinelinux.org/alpine/edge/community' >> /etc/apk/repositories
2020-12-29 09:36:06 -08:00
- apk update
- apk add git yq
2020-12-29 09:42:07 -08:00
- git clone https://github.com/drone/drone.git
- cd drone
2020-12-29 09:36:06 -08:00
- 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
2020-12-29 09:36:06 -08:00
- GOLANG_IMG=$(yq read .drone.yml 'steps[0].image')
- docker pull $GOLANG_IMG
- docker tag $GOLANG_IMG drone-builder:latest
- docker image rm $GOLANG_IMG
- name: compile
image: drone-builder:latest
pull: never
2020-12-29 09:36:06 -08:00
environment:
GOARCH: amd64
GOOS: linux
commands:
2020-12-29 09:42:07 -08:00
- cd drone
- >
go build -ldflags "-extldflags \"-static\""
-tags nolimit
-o release/linux/amd64/drone-server
github.com/drone/drone/cmd/drone-server
2020-12-29 09:36:06 -08:00
- name: docker-build
image: docker:latest
volumes:
- name: docker-socket
path: /var/run/docker.sock
commands:
2020-12-29 09:42:07 -08:00
- cd drone
- rm .dockerignore
- >
docker build
-f docker/Dockerfile.server.linux.amd64
-t registry.jfmonty2.com/drone-server:latest
--label drone_commit_hash=$(cat ../commit_hash)
.
2020-12-29 10:17:26 -08:00
- 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-server:latest
2020-12-29 09:36:06 -08:00
volumes:
- name: docker-socket
host:
2020-12-29 20:43:13 -08:00
path: /var/run/docker.sock