--- kind: pipeline type: docker name: build-amd64 platform: os: linux arch: amd64 steps: - name: frontend image: node:21-alpine commands: - apk --no-cache add tar - yarn config set network-timeout 100000 - yarn --cwd ui install - tar --transform="s@.@./happydomain-${DRONE_COMMIT}@" --exclude-vcs --exclude=./ui/node_modules/.cache -czf /dev/shm/happydomain-src.tar.gz . - mv /dev/shm/happydomain-src.tar.gz . - yarn --cwd ui --offline build - name: deploy sources image: plugins/s3 settings: endpoint: https://storage0.nemunai.re path_style: true bucket: happydomain-dl access_key: from_secret: s3_access_key secret_key: from_secret: s3_secret_key source: happydomain-src.tar.gz target: /${DRONE_BRANCH//\//-}/ when: event: - push branch: exclude: - renovate/* - name: deploy sources for release image: plugins/s3 settings: endpoint: https://storage0.nemunai.re path_style: true bucket: happydomain-dl access_key: from_secret: s3_access_key secret_key: from_secret: s3_secret_key source: happydomain-src.tar.gz target: /${DRONE_TAG}/ when: event: - tag - name: backend-commit image: golang:1-alpine commands: - apk add --no-cache git - sed -i '/npm run build/d' ui/assets.go - go install github.com/swaggo/swag/cmd/swag@latest - go generate -v ./... - go build -v -tags listmonk,netgo,swagger,ui -ldflags '-w -X "main.Version=${DRONE_BRANCH}-${DRONE_COMMIT}" -X main.build=${DRONE_BUILD_NUMBER}' -o happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} - ln happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} happydomain environment: CGO_ENABLED: 0 when: event: exclude: - tag - name: backend-tag image: golang:1-alpine commands: - apk add --no-cache git - sed -i '/npm run build/d' ui/assets.go - go install github.com/swaggo/swag/cmd/swag@latest - go generate -v ./... - go build -v -tags listmonk,netgo,swagger,ui -ldflags '-w -X main.Version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}' -o happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} - ln happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} happydomain environment: CGO_ENABLED: 0 when: event: - tag - name: vet and tests image: golang:1-alpine commands: - apk --no-cache add build-base git - go vet -v ./... - go test -v ./... environment: CGO_ENABLED: 0 - name: deploy image: plugins/s3 settings: endpoint: https://storage0.nemunai.re path_style: true bucket: happydomain-dl access_key: from_secret: s3_access_key secret_key: from_secret: s3_secret_key source: happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} target: /${DRONE_BRANCH//\//-}/ when: event: - push branch: exclude: - renovate/* - name: deploy release image: plugins/s3 settings: endpoint: https://storage0.nemunai.re path_style: true bucket: happydomain-dl access_key: from_secret: s3_access_key secret_key: from_secret: s3_secret_key source: happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} target: /${DRONE_TAG}/ when: event: - tag - name: build-commit macOS image: golang:1-alpine commands: - apk add --no-cache git - go build -v -tags listmonk,netgo,swagger,ui -ldflags '-w -X "main.Version=${DRONE_BRANCH}-${DRONE_COMMIT}" -X main.build=${DRONE_BUILD_NUMBER}' -o happydomain-darwin-${DRONE_STAGE_ARCH} environment: CGO_ENABLED: 0 GOOS: darwin GOARCH: amd64 when: event: exclude: - tag - name: build-tag macOS image: golang:1-alpine commands: - apk add --no-cache git - go build -v -tags listmonk,netgo,swagger,ui -ldflags '-w -X "main.Version=${DRONE_TAG##v}" -X main.build=${DRONE_BUILD_NUMBER}' -o happydomain-darwin-${DRONE_STAGE_ARCH} environment: CGO_ENABLED: 0 GOOS: darwin GOARCH: amd64 when: event: - tag - name: deploy macOS image: plugins/s3 settings: endpoint: https://storage0.nemunai.re path_style: true bucket: happydomain-dl access_key: from_secret: s3_access_key secret_key: from_secret: s3_secret_key source: happydomain-darwin-${DRONE_STAGE_ARCH} target: /${DRONE_BRANCH//\//-}/ when: event: - push branch: exclude: - renovate/* - name: deploy macOS release image: plugins/s3 settings: endpoint: https://storage0.nemunai.re path_style: true bucket: happydomain-dl access_key: from_secret: s3_access_key secret_key: from_secret: s3_secret_key source: happydomain-darwin-${DRONE_STAGE_ARCH} target: /${DRONE_TAG}/ when: event: - tag - name: publish on Docker Hub image: plugins/docker settings: repo: happydomain/happydomain auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-builded username: from_secret: docker_username password: from_secret: docker_password trigger: event: - cron - push - tag --- kind: pipeline type: docker name: build-arm64 platform: os: linux arch: arm64 steps: - name: frontend image: node:21-alpine commands: - cd ui - npm install --network-timeout=100000 - npm run build - name: backend-commit image: golang:1-alpine commands: - apk add --no-cache git - sed -i '/npm run build/d' ui/assets.go - go install github.com/swaggo/swag/cmd/swag@latest - go generate -v ./... - go build -v -tags listmonk,netgo,swagger,ui -ldflags '-w -X "main.Version=${DRONE_BRANCH}-${DRONE_COMMIT}" -X main.build=${DRONE_BUILD_NUMBER}' -o happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} - ln happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} happydomain environment: CGO_ENABLED: 0 when: event: exclude: - tag - name: backend-tag image: golang:1-alpine commands: - apk add --no-cache git - sed -i '/npm run build/d' ui/assets.go - go install github.com/swaggo/swag/cmd/swag@latest - go generate -v ./... - go build -v -tags listmonk,netgo,swagger,ui -ldflags '-w -X main.Version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}' -o happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} - ln happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} happydomain environment: CGO_ENABLED: 0 when: event: - tag - name: deploy image: plugins/s3 settings: endpoint: https://storage0.nemunai.re path_style: true bucket: happydomain-dl access_key: from_secret: s3_access_key secret_key: from_secret: s3_secret_key source: happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} target: /${DRONE_BRANCH//\//-}/ when: event: - push branch: exclude: - renovate/* - name: deploy release image: plugins/s3 settings: endpoint: https://storage0.nemunai.re path_style: true bucket: happydomain-dl access_key: from_secret: s3_access_key secret_key: from_secret: s3_secret_key source: happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} target: /${DRONE_TAG}/ when: event: - tag - name: build-commit macOS image: golang:1-alpine commands: - apk add --no-cache git - go build -v -tags listmonk,netgo,swagger,ui -ldflags '-w -X "main.Version=${DRONE_BRANCH}-${DRONE_COMMIT}" -X main.build=${DRONE_BUILD_NUMBER}' -o happydomain-darwin-${DRONE_STAGE_ARCH} environment: CGO_ENABLED: 0 GOOS: darwin GOARCH: arm64 when: event: exclude: - tag - name: build-tag macOS image: golang:1-alpine commands: - apk add --no-cache git - go build -v -tags listmonk,netgo,swagger,ui -ldflags '-w -X "main.Version=${DRONE_TAG##v}" -X main.build=${DRONE_BUILD_NUMBER}' -o happydomain-darwin-${DRONE_STAGE_ARCH} environment: CGO_ENABLED: 0 GOOS: darwin GOARCH: arm64 when: event: - tag - name: deploy macOS image: plugins/s3 settings: endpoint: https://storage0.nemunai.re path_style: true bucket: happydomain-dl access_key: from_secret: s3_access_key secret_key: from_secret: s3_secret_key source: happydomain-darwin-${DRONE_STAGE_ARCH} target: /${DRONE_BRANCH//\//-}/ when: event: - push branch: exclude: - renovate/* - name: deploy macOS release image: plugins/s3 settings: endpoint: https://storage0.nemunai.re path_style: true bucket: happydomain-dl access_key: from_secret: s3_access_key secret_key: from_secret: s3_secret_key source: happydomain-darwin-${DRONE_STAGE_ARCH} target: /${DRONE_TAG}/ when: event: - tag - name: publish on Docker Hub image: plugins/docker settings: repo: happydomain/happydomain auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-builded username: from_secret: docker_username password: from_secret: docker_password trigger: event: - cron - push - tag --- kind: pipeline type: docker name: build-arm platform: os: linux arch: arm steps: - name: frontend image: node:21 commands: - cd ui - npm install --network-timeout=100000 - npm run build - name: backend-commit armel image: golang:1-alpine commands: - apk --no-cache add build-base git - sed -i '/npm run build/d' ui/assets.go - go install github.com/swaggo/swag/cmd/swag@latest - go generate -v ./... - go build -v -tags listmonk,netgo,swagger,ui -ldflags '-w -X "main.Version=${DRONE_BRANCH}-${DRONE_COMMIT}" -X main.build=${DRONE_BUILD_NUMBER}' -o happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}el environment: CGO_ENABLED: 0 GOARM: 5 when: event: exclude: - tag branch: exclude: - renovate/* - name: backend-tag armel image: golang:1-alpine commands: - apk --no-cache add build-base git - sed -i '/npm run build/d' ui/assets.go - go install github.com/swaggo/swag/cmd/swag@latest - go generate -v ./... - go build -v -tags listmonk,netgo,swagger,ui -ldflags '-w -X "main.Version=${DRONE_TAG##v}" -X main.build=${DRONE_BUILD_NUMBER}' -o happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}el environment: CGO_ENABLED: 0 GOARM: 5 when: event: - tag - name: deploy armel image: plugins/s3:linux-arm settings: endpoint: https://storage0.nemunai.re path_style: true bucket: happydomain-dl access_key: from_secret: s3_access_key secret_key: from_secret: s3_secret_key source: happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}el target: /${DRONE_BRANCH//\//-}/ when: event: - push branch: exclude: - renovate/* - name: deploy armel release image: plugins/s3:linux-arm settings: endpoint: https://storage0.nemunai.re path_style: true bucket: happydomain-dl access_key: from_secret: s3_access_key secret_key: from_secret: s3_secret_key source: happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}el target: /${DRONE_TAG}/ when: event: - tag - name: backend-commit armhf image: golang:1-alpine commands: - apk --no-cache add build-base git - go build -v -tags listmonk,netgo,swagger,ui -ldflags '-w -X "main.Version=${DRONE_BRANCH}-${DRONE_COMMIT}" -X main.build=${DRONE_BUILD_NUMBER}' -o happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}hf environment: CGO_ENABLED: 0 GOARM: 6 when: event: exclude: - tag branch: exclude: - renovate/* - name: backend-tag armhf image: golang:1-alpine commands: - apk --no-cache add build-base git - go build -v -tags listmonk,netgo,swagger,ui -ldflags '-w -X "main.Version=${DRONE_TAG##v}" -X main.build=${DRONE_BUILD_NUMBER}' -o happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}hf environment: CGO_ENABLED: 0 GOARM: 6 when: event: - tag - name: deploy armhf image: plugins/s3:linux-arm settings: endpoint: https://storage0.nemunai.re path_style: true bucket: happydomain-dl access_key: from_secret: s3_access_key secret_key: from_secret: s3_secret_key source: happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}hf target: /${DRONE_BRANCH//\//-}/ when: event: - push branch: exclude: - renovate/* - name: deploy armhf release image: plugins/s3:linux-arm settings: endpoint: https://storage0.nemunai.re path_style: true bucket: happydomain-dl access_key: from_secret: s3_access_key secret_key: from_secret: s3_secret_key source: happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}hf target: /${DRONE_TAG}/ when: event: - tag - name: backend-commit armv7 image: golang:1-alpine commands: - apk --no-cache add build-base git - "[ -f docs/docs.go ] || sed -i '/npm run build/d' ui/assets.go" - "[ -f docs/docs.go ] || go install github.com/swaggo/swag/cmd/swag@latest" - "[ -f docs/docs.go ] || go generate -v ./..." - go build -v -tags listmonk,netgo,swagger,ui -ldflags '-w -X "main.Version=${DRONE_BRANCH}-${DRONE_COMMIT}" -X main.build=${DRONE_BUILD_NUMBER}' -o happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}v7 - ln happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}v7 happydomain environment: CGO_ENABLED: 0 GOARM: 7 when: event: exclude: - tag - name: backend-tag armv7 image: golang:1-alpine commands: - apk --no-cache add build-base git - go build -v -tags listmonk,netgo,swagger,ui -ldflags '-w -X "main.Version=${DRONE_TAG##v}" -X main.build=${DRONE_BUILD_NUMBER}' -o happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}v7 - ln happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}v7 happydomain environment: CGO_ENABLED: 0 GOARM: 7 when: event: - tag - name: deploy armv7 image: plugins/s3:linux-arm settings: endpoint: https://storage0.nemunai.re path_style: true bucket: happydomain-dl access_key: from_secret: s3_access_key secret_key: from_secret: s3_secret_key source: happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}v7 target: /${DRONE_BRANCH//\//-}/ when: event: - push branch: exclude: - renovate/* - name: deploy armv7 release image: plugins/s3:linux-arm settings: endpoint: https://storage0.nemunai.re path_style: true bucket: happydomain-dl access_key: from_secret: s3_access_key secret_key: from_secret: s3_secret_key source: happydomain-${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH}v7 target: /${DRONE_TAG}/ when: event: - tag - name: publish on Docker Hub image: plugins/docker:linux-arm settings: repo: happydomain/happydomain auto_tag: true auto_tag_suffix: ${DRONE_STAGE_OS}-${DRONE_STAGE_ARCH} dockerfile: Dockerfile-builded username: from_secret: docker_username password: from_secret: docker_password trigger: branch: - master 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-amd64 - build-arm64 - build-arm