Optimize CI

This commit is contained in:
MassiveBox 2023-06-24 09:00:20 +02:00
parent b720bf4ac0
commit 002fab4786
Signed by: massivebox
GPG key ID: 9B74D3A59181947D
4 changed files with 99 additions and 45 deletions

View file

@ -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

View file

@ -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"]

19
.woodpecker/setup.sh Normal file
View file

@ -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

View file

@ -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