From 002fab4786ed4bccd9ed1df1a1f725b383a41a2b Mon Sep 17 00:00:00 2001 From: MassiveBox Date: Sat, 24 Jun 2023 09:00:20 +0200 Subject: [PATCH] Optimize CI --- .woodpecker.yml | 45 -------------------- .woodpecker/Dockerfile-woodpecker | 11 +++++ .woodpecker/setup.sh | 19 +++++++++ .woodpecker/woodpecker.yml | 69 +++++++++++++++++++++++++++++++ 4 files changed, 99 insertions(+), 45 deletions(-) delete mode 100644 .woodpecker.yml create mode 100644 .woodpecker/Dockerfile-woodpecker create mode 100644 .woodpecker/setup.sh create mode 100644 .woodpecker/woodpecker.yml diff --git a/.woodpecker.yml b/.woodpecker.yml deleted file mode 100644 index d431220..0000000 --- a/.woodpecker.yml +++ /dev/null @@ -1,45 +0,0 @@ -pipeline: - - docker: - image: woodpeckerci/plugin-docker-buildx - settings: - registry: git.massivebox.net - repo: git.massivebox.net/ecodash/ecodash - platforms: linux/amd64,linux/arm64 - auto_tag: true - username: massivebox - password: - from_secret: auth_token - when: - event: tag - - build: - image: golang - commands: - - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin - - go mod tidy - - golangci-lint run - - go build -o ecodash-x86 src/main/main.go - - env GOOS=linux GOARCH=arm go build -o ecodash-arm src/main/main.go - - prepare-gitea-release: - image: alpine - commands: - - apk update; apk add zip - - mv ecodash-x86 ecodash; zip -r ecodash-x86.zip templates ecodash - - mv ecodash-arm ecodash; zip -r ecodash-arm.zip templates ecodash - when: - event: tag - - gitea-publish: - image: plugins/gitea-release - settings: - base_url: https://git.massivebox.net - files: - - ecodash-x86.zip - - ecodash-arm.zip - api_key: - from_secret: auth_token - title: ${CI_COMMIT_TAG} - when: - event: tag diff --git a/.woodpecker/Dockerfile-woodpecker b/.woodpecker/Dockerfile-woodpecker new file mode 100644 index 0000000..773f0f3 --- /dev/null +++ b/.woodpecker/Dockerfile-woodpecker @@ -0,0 +1,11 @@ +FROM debian:latest + +WORKDIR /app +COPY ./setup.sh ./setup.sh + +RUN apt-get update; apt-get upgrade -y; apt-get install zip curl -y && \ + curl https://cloud.massivebox.net/api/public/dl/fLgOAQNc -o templates.zip && unzip templates.zip && rm templates.zip && \ + chmod +x setup.sh && ./setup.sh && rm setup.sh && \ + chmod +x app + +CMD ["./app"] \ No newline at end of file diff --git a/.woodpecker/setup.sh b/.woodpecker/setup.sh new file mode 100644 index 0000000..f9d0741 --- /dev/null +++ b/.woodpecker/setup.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +ARCH=$(arch) + +# This is a workaround to Woodpecker's inability to give files it has just built to Docker BuildX to build new images. +# After compiling the binaries in the "build-and-format" step of woodpecker.yml, we upload them to the cloud and fetch them from here. + +if [ "$ARCH" = "x86_64" ]; then + echo "detected amd64" + curl https://cloud.massivebox.net/api/public/dl/uZaDQXAa -o app +elif [ "$ARCH" = "aarch64" ]; then + echo "deteched arm" + curl https://cloud.massivebox.net/api/public/dl/EhM62nhf -o app +else + echo "unsupported architecture" + return 1 +fi + +return 0 \ No newline at end of file diff --git a/.woodpecker/woodpecker.yml b/.woodpecker/woodpecker.yml new file mode 100644 index 0000000..7a670bb --- /dev/null +++ b/.woodpecker/woodpecker.yml @@ -0,0 +1,69 @@ +pipeline: + + build-and-format: + image: golang + commands: + - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin + - go mod tidy + - golangci-lint run + - env GOOS=linux GOARCH=amd64 go build -o ecodash-x86 src/main/main.go + - env GOOS=linux GOARCH=arm go build -o ecodash-arm src/main/main.go + - apt-get update; apt-get upgrade -y; apt-get install zip -y + - mv ecodash-x86 ecodash; zip -r ecodash-x86.zip templates ecodash; mv ecodash ecodash-x86 + - mv ecodash-arm ecodash; zip -r ecodash-arm.zip templates ecodash; mv ecodash ecodash-arm + - zip templates.zip -r templates + + upload-debug: + image: vividboarder/drone-webdav + settings: + file: { ecodash-x86,ecodash-arm,templates.zip } + destination: + from_secret: webdav_destination + username: + from_secret: webdav_username + password: + from_secret: webdav_password + attempts: 5 + + gitea-publish: + image: plugins/gitea-release + settings: + base_url: https://git.massivebox.net + files: + - ecodash-x86.zip + - ecodash-arm.zip + api_key: + from_secret: auth_token + title: ${CI_COMMIT_TAG} + when: + event: tag + + docker-unstable: + image: woodpeckerci/plugin-docker-buildx + settings: + registry: git.massivebox.net + repo: git.massivebox.net/ecodash/ecodash + platforms: linux/amd64,linux/arm64 + tag: unstable + username: massivebox + password: + from_secret: auth_token + context: .woodpecker + dockerfile: .woodpecker/Dockerfile-woodpecker + when: + event: [ push, pull_request, deployment ] + + docker-tag: + image: woodpeckerci/plugin-docker-buildx + settings: + registry: git.massivebox.net + repo: git.massivebox.net/ecodash/ecodash + platforms: linux/amd64,linux/arm64 + auto_tag: true + username: massivebox + password: + from_secret: auth_token + context: .woodpecker + dockerfile: .woodpecker/Dockerfile-woodpecker + when: + event: tag