From 764ac7806303d0076504ddd24b2ae02088b02eb8 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Sat, 15 Oct 2022 14:27:26 +0200 Subject: [PATCH] Do CI/CD --- .drone-manifest.yml | 22 +++++++++++ .drone.yml | 92 ++++++++++++++++++++++++++++++++++++++++++++ Dockerfile | 3 ++ Dockerfile-norebuild | 9 +++++ 4 files changed, 126 insertions(+) create mode 100644 .drone-manifest.yml create mode 100644 .drone.yml create mode 100644 Dockerfile-norebuild diff --git a/.drone-manifest.yml b/.drone-manifest.yml new file mode 100644 index 0000000..3b6929c --- /dev/null +++ b/.drone-manifest.yml @@ -0,0 +1,22 @@ +image: registry.nemunai.re/reveil:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} +{{#if build.tags}} +tags: +{{#each build.tags}} + - {{this}} +{{/each}} +{{/if}} +manifests: + - image: registry.nemunai.re/reveil:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64 + platform: + architecture: amd64 + os: linux + - image: registry.nemunai.re/reveil:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64 + platform: + architecture: arm64 + os: linux + variant: v8 + - image: registry.nemunai.re/reveil:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm + platform: + architecture: arm + os: linux + variant: v7 diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..9551cff --- /dev/null +++ b/.drone.yml @@ -0,0 +1,92 @@ +--- +kind: pipeline +type: docker +name: build-arm + +platform: + os: linux + arch: arm + +workspace: + base: /go + path: src/git.nemunai.re/nemunaire/reveil + +steps: +- name: build front + image: node:18-alpine + commands: + - mkdir deploy + - cd ui + - npm install --network-timeout=100000 + - sed -i 's!@popperjs/core/dist/esm/popper!@popperjs/core!' node_modules/sveltestrap/src/*.js node_modules/sveltestrap/src/*.svelte + - npm run build + - tar chjf ../deploy/static.tar.bz2 build + +- name: build + image: golang:1-alpine + commands: + - apk --no-cache add alsa-lib-dev build-base git pkgconf + - go get -v -d + - go vet -v + - go build -v -ldflags '-w -X main.Version="${DRONE_BRANCH}-${DRONE_COMMIT}" -X main.build=${DRONE_BUILD_NUMBER}' -o deploy/reveil-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} + - ln deploy/reveil-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} reveil + when: + event: + exclude: + - tag + +- name: build tag + image: golang:1-alpine + commands: + - apk --no-cache add alsa-lib-dev build-base git pkgconf + - go get -v -d + - go vet -v + - go build -v -ldflags '-w -X main.Version="${DRONE_TAG##v}" -X main.build=${DRONE_BUILD_NUMBER}' -o deploy/reveil-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} + - ln deploy/reveil-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} reveil + when: + event: + - tag + +- name: docker + image: plugins/docker + settings: + registry: registry.nemunai.re + repo: registry.nemunai.re/reveil + auto_tag: true + auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} + dockerfile: Dockerfile-norebuild + username: + from_secret: docker_username + password: + from_secret: docker_password + +trigger: + event: + - cron + - push + - tag + +--- +kind: pipeline +name: docker-manifest + +steps: +- name: publish on Docker Hub + image: plugins/manifest + settings: + auto_tag: true + ignore_missing: true + spec: .drone-manifest.yml + username: + from_secret: docker_username + password: + from_secret: docker_password + +trigger: + event: + - cron + - push + - tag + +depends_on: +- build-arm diff --git a/Dockerfile b/Dockerfile index 4f7f430..156c54f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,6 +21,9 @@ RUN go get -v && go generate -v && go build -v -ldflags="-s -w" FROM alpine:3.16 +VOLUME /data +WORKDIR /data + EXPOSE 8080 CMD ["/srv/reveil"] diff --git a/Dockerfile-norebuild b/Dockerfile-norebuild new file mode 100644 index 0000000..9476b53 --- /dev/null +++ b/Dockerfile-norebuild @@ -0,0 +1,9 @@ +FROM alpine:3.16 + +VOLUME /data +WORKDIR /data + +EXPOSE 8080 +CMD ["/srv/reveil"] + +COPY reveil /srv/reveil