Compare commits

..

2 Commits

Author SHA1 Message Date
57c1aa3e54 ci: produce zip for windows build
Some checks failed
continuous-integration/drone/push Build is failing
2024-10-21 06:04:54 +09:00
b0998d8c8a docs: document steps to update CI pipeline 2024-10-21 06:02:31 +09:00
3 changed files with 211 additions and 211 deletions

View File

@ -17,11 +17,13 @@ local CreateRelease() = {
local StepGoBuild(GOOS, GOARCH) = { local StepGoBuild(GOOS, GOARCH) = {
local archiveExt = if GOOS == 'windows' then 'zip' else 'tar.gz', local windows = GOOS == 'windows',
local archiveExt = if windows then 'zip' else 'tar.gz',
local filepath = 'dist/um-%s-%s.%s' % [GOOS, GOARCH, archiveExt], local filepath = 'dist/um-%s-%s.%s' % [GOOS, GOARCH, archiveExt],
// run zip or tar command depending on GOOS been windows or other local archive = if windows then [
local archive = if GOOS == 'windows' then [ // Ensure zip is installed
'command -v zip >/dev/null || (apt update && apt install -y zip)',
'zip -9 -j -r "%s" $DIST_DIR' % filepath, 'zip -9 -j -r "%s" $DIST_DIR' % filepath,
] else [ ] else [
'tar -zc -C $DIST_DIR um | gzip -9 > "%s"' % filepath, 'tar -zc -C $DIST_DIR um | gzip -9 > "%s"' % filepath,

View File

@ -1,225 +1,229 @@
---
kind: pipeline kind: pipeline
name: build linux/amd64 name: build linux/amd64
steps: steps:
- commands: - commands:
- git fetch --tags - git fetch --tags
image: alpine/git image: alpine/git
name: fetch tags name: fetch tags
- commands: - commands:
- go test -v ./... - go test -v ./...
environment: environment:
GOPROXY: https://goproxy.io,direct GOPROXY: https://goproxy.io,direct
image: golang:1.22 image: golang:1.22
name: go test name: go test
- commands: - commands:
- DIST_DIR=$(mktemp -d) - DIST_DIR=$(mktemp -d)
- go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags
--always)" -o $DIST_DIR ./cmd/um --always)" -o $DIST_DIR ./cmd/um
- mkdir -p dist - mkdir -p dist
- tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-linux-amd64.tar.gz" - tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-linux-amd64.tar.gz"
environment: environment:
GOARCH: amd64 GOARCH: amd64
GOOS: linux GOOS: linux
GOPROXY: https://goproxy.io,direct GOPROXY: https://goproxy.io,direct
image: golang:1.22 image: golang:1.22
name: go build linux/amd64 name: go build linux/amd64
- commands: - commands:
- curl --fail --include --user "um-release-bot:$GITEA_API_KEY" --upload-file - curl --fail --include --user "um-release-bot:$GITEA_API_KEY" --upload-file "dist/um-linux-amd64.tar.gz"
"dist/um-linux-amd64.tar.gz" "$DRONE_GITEA_SERVER/api/packages/${DRONE_REPO_NAMESPACE}/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER}/um-linux-amd64.tar.gz" "$DRONE_GITEA_SERVER/api/packages/${DRONE_REPO_NAMESPACE}/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER}/um-linux-amd64.tar.gz"
- sha256sum dist/um-linux-amd64.tar.gz - sha256sum dist/um-linux-amd64.tar.gz
- echo $DRONE_GITEA_SERVER/${DRONE_REPO_NAMESPACE}/-/packages/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER} - echo $DRONE_GITEA_SERVER/${DRONE_REPO_NAMESPACE}/-/packages/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER}
environment: environment:
DRONE_GITEA_SERVER: https://git.unlock-music.dev DRONE_GITEA_SERVER: https://git.unlock-music.dev
GITEA_API_KEY: GITEA_API_KEY:
from_secret: GITEA_API_KEY from_secret: GITEA_API_KEY
image: golang:1.22 image: golang:1.22
name: upload artifact name: upload artifact
trigger: trigger:
event: event:
- push - push
- pull_request - pull_request
type: docker type: docker
--- ---
kind: pipeline kind: pipeline
name: build windows/amd64 name: build windows/amd64
steps: steps:
- commands: - commands:
- git fetch --tags - git fetch --tags
image: alpine/git image: alpine/git
name: fetch tags name: fetch tags
- commands: - commands:
- DIST_DIR=$(mktemp -d) - DIST_DIR=$(mktemp -d)
- go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags
--always)" -o $DIST_DIR ./cmd/um --always)" -o $DIST_DIR ./cmd/um
- mkdir -p dist - mkdir -p dist
- zip -9 -j -r "dist/um-windows-amd64.zip" $DIST_DIR - command -v zip >/dev/null || (apt update && apt install -y zip)
environment: - zip -9 -j -r "dist/um-windows-amd64.zip" $DIST_DIR
GOARCH: amd64 environment:
GOOS: windows GOARCH: amd64
GOPROXY: https://goproxy.io,direct GOOS: windows
image: golang:1.22 GOPROXY: https://goproxy.io,direct
name: go build windows/amd64 image: golang:1.22
- commands: name: go build windows/amd64
- curl --fail --include --user "um-release-bot:$GITEA_API_KEY" --upload-file - commands:
"dist/um-windows-amd64.tar.gz" "$DRONE_GITEA_SERVER/api/packages/${DRONE_REPO_NAMESPACE}/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER}/um-windows-amd64.tar.gz" - curl --fail --include --user "um-release-bot:$GITEA_API_KEY" --upload-file "dist/um-windows-amd64.tar.gz"
- sha256sum dist/um-windows-amd64.tar.gz "$DRONE_GITEA_SERVER/api/packages/${DRONE_REPO_NAMESPACE}/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER}/um-windows-amd64.tar.gz"
- echo $DRONE_GITEA_SERVER/${DRONE_REPO_NAMESPACE}/-/packages/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER} - sha256sum dist/um-windows-amd64.tar.gz
environment: - echo $DRONE_GITEA_SERVER/${DRONE_REPO_NAMESPACE}/-/packages/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER}
DRONE_GITEA_SERVER: https://git.unlock-music.dev environment:
GITEA_API_KEY: DRONE_GITEA_SERVER: https://git.unlock-music.dev
from_secret: GITEA_API_KEY GITEA_API_KEY:
image: golang:1.22 from_secret: GITEA_API_KEY
name: upload artifact image: golang:1.22
name: upload artifact
trigger: trigger:
event: event:
- push - push
- pull_request - pull_request
type: docker type: docker
--- ---
kind: pipeline kind: pipeline
name: build darwin/amd64 name: build darwin/amd64
steps: steps:
- commands: - commands:
- git fetch --tags - git fetch --tags
image: alpine/git image: alpine/git
name: fetch tags name: fetch tags
- commands: - commands:
- DIST_DIR=$(mktemp -d) - DIST_DIR=$(mktemp -d)
- go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags
--always)" -o $DIST_DIR ./cmd/um --always)" -o $DIST_DIR ./cmd/um
- mkdir -p dist - mkdir -p dist
- tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-darwin-amd64.tar.gz" - tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-darwin-amd64.tar.gz"
environment: environment:
GOARCH: amd64 GOARCH: amd64
GOOS: darwin GOOS: darwin
GOPROXY: https://goproxy.io,direct GOPROXY: https://goproxy.io,direct
image: golang:1.22 image: golang:1.22
name: go build darwin/amd64 name: go build darwin/amd64
- commands: - commands:
- curl --fail --include --user "um-release-bot:$GITEA_API_KEY" --upload-file - curl --fail --include --user "um-release-bot:$GITEA_API_KEY" --upload-file "dist/um-darwin-amd64.tar.gz"
"dist/um-darwin-amd64.tar.gz" "$DRONE_GITEA_SERVER/api/packages/${DRONE_REPO_NAMESPACE}/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER}/um-darwin-amd64.tar.gz" "$DRONE_GITEA_SERVER/api/packages/${DRONE_REPO_NAMESPACE}/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER}/um-darwin-amd64.tar.gz"
- sha256sum dist/um-darwin-amd64.tar.gz - sha256sum dist/um-darwin-amd64.tar.gz
- echo $DRONE_GITEA_SERVER/${DRONE_REPO_NAMESPACE}/-/packages/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER} - echo $DRONE_GITEA_SERVER/${DRONE_REPO_NAMESPACE}/-/packages/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER}
environment: environment:
DRONE_GITEA_SERVER: https://git.unlock-music.dev DRONE_GITEA_SERVER: https://git.unlock-music.dev
GITEA_API_KEY: GITEA_API_KEY:
from_secret: GITEA_API_KEY from_secret: GITEA_API_KEY
image: golang:1.22 image: golang:1.22
name: upload artifact name: upload artifact
trigger: trigger:
event: event:
- push - push
- pull_request - pull_request
type: docker type: docker
--- ---
kind: pipeline kind: pipeline
name: release name: release
steps: steps:
- commands: - commands:
- git fetch --tags - git fetch --tags
image: alpine/git image: alpine/git
name: fetch tags name: fetch tags
- commands: - commands:
- go test -v ./... - go test -v ./...
environment: environment:
GOPROXY: https://goproxy.io,direct GOPROXY: https://goproxy.io,direct
image: golang:1.22 image: golang:1.22
name: go test name: go test
- commands: - commands:
- DIST_DIR=$(mktemp -d) - DIST_DIR=$(mktemp -d)
- go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags
--always)" -o $DIST_DIR ./cmd/um --always)" -o $DIST_DIR ./cmd/um
- mkdir -p dist - mkdir -p dist
- tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-linux-amd64.tar.gz" - tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-linux-amd64.tar.gz"
environment: environment:
GOARCH: amd64 GOARCH: amd64
GOOS: linux GOOS: linux
GOPROXY: https://goproxy.io,direct GOPROXY: https://goproxy.io,direct
image: golang:1.22 image: golang:1.22
name: go build linux/amd64 name: go build linux/amd64
- commands: - commands:
- DIST_DIR=$(mktemp -d) - DIST_DIR=$(mktemp -d)
- go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags
--always)" -o $DIST_DIR ./cmd/um --always)" -o $DIST_DIR ./cmd/um
- mkdir -p dist - mkdir -p dist
- tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-linux-arm64.tar.gz" - tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-linux-arm64.tar.gz"
environment: environment:
GOARCH: arm64 GOARCH: arm64
GOOS: linux GOOS: linux
GOPROXY: https://goproxy.io,direct GOPROXY: https://goproxy.io,direct
image: golang:1.22 image: golang:1.22
name: go build linux/arm64 name: go build linux/arm64
- commands: - commands:
- DIST_DIR=$(mktemp -d) - DIST_DIR=$(mktemp -d)
- go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags
--always)" -o $DIST_DIR ./cmd/um --always)" -o $DIST_DIR ./cmd/um
- mkdir -p dist - mkdir -p dist
- tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-linux-386.tar.gz" - tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-linux-386.tar.gz"
environment: environment:
GOARCH: '386' GOARCH: "386"
GOOS: linux GOOS: linux
GOPROXY: https://goproxy.io,direct GOPROXY: https://goproxy.io,direct
image: golang:1.22 image: golang:1.22
name: go build linux/386 name: go build linux/386
- commands: - commands:
- DIST_DIR=$(mktemp -d) - DIST_DIR=$(mktemp -d)
- go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags
--always)" -o $DIST_DIR ./cmd/um --always)" -o $DIST_DIR ./cmd/um
- mkdir -p dist - mkdir -p dist
- zip -9 -j -r "dist/um-windows-amd64.zip" $DIST_DIR - command -v zip >/dev/null || (apt update && apt install -y zip)
environment: - zip -9 -j -r "dist/um-windows-amd64.zip" $DIST_DIR
GOARCH: amd64 environment:
GOOS: windows GOARCH: amd64
GOPROXY: https://goproxy.io,direct GOOS: windows
image: golang:1.22 GOPROXY: https://goproxy.io,direct
name: go build windows/amd64 image: golang:1.22
- commands: name: go build windows/amd64
- DIST_DIR=$(mktemp -d) - commands:
- go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - DIST_DIR=$(mktemp -d)
--always)" -o $DIST_DIR ./cmd/um - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags
- mkdir -p dist --always)" -o $DIST_DIR ./cmd/um
- zip -9 -j -r "dist/um-windows-386.zip" $DIST_DIR - mkdir -p dist
environment: - command -v zip >/dev/null || (apt update && apt install -y zip)
GOARCH: '386' - zip -9 -j -r "dist/um-windows-386.zip" $DIST_DIR
GOOS: windows environment:
GOPROXY: https://goproxy.io,direct GOARCH: "386"
image: golang:1.22 GOOS: windows
name: go build windows/386 GOPROXY: https://goproxy.io,direct
- commands: image: golang:1.22
- DIST_DIR=$(mktemp -d) name: go build windows/386
- go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - commands:
--always)" -o $DIST_DIR ./cmd/um - DIST_DIR=$(mktemp -d)
- mkdir -p dist - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags
- tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-darwin-amd64.tar.gz" --always)" -o $DIST_DIR ./cmd/um
environment: - mkdir -p dist
GOARCH: amd64 - tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-darwin-amd64.tar.gz"
GOOS: darwin environment:
GOPROXY: https://goproxy.io,direct GOARCH: amd64
image: golang:1.22 GOOS: darwin
name: go build darwin/amd64 GOPROXY: https://goproxy.io,direct
- commands: image: golang:1.22
- DIST_DIR=$(mktemp -d) name: go build darwin/amd64
- go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - commands:
--always)" -o $DIST_DIR ./cmd/um - DIST_DIR=$(mktemp -d)
- mkdir -p dist - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags
- tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-darwin-arm64.tar.gz" --always)" -o $DIST_DIR ./cmd/um
environment: - mkdir -p dist
GOARCH: arm64 - tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-darwin-arm64.tar.gz"
GOOS: darwin environment:
GOPROXY: https://goproxy.io,direct GOARCH: arm64
image: golang:1.22 GOOS: darwin
name: go build darwin/arm64 GOPROXY: https://goproxy.io,direct
- image: plugins/gitea-release image: golang:1.22
name: create release name: go build darwin/arm64
settings: - image: plugins/gitea-release
api_key: name: create release
from_secret: GITEA_API_KEY settings:
base_url: https://git.unlock-music.dev api_key:
checksum: sha256 from_secret: GITEA_API_KEY
draft: true base_url: https://git.unlock-music.dev
files: dist/* checksum: sha256
title: ${DRONE_TAG} draft: true
files: dist/*
title: ${DRONE_TAG}
trigger: trigger:
event: event:
- tag - tag
type: docker type: docker

View File

@ -28,16 +28,10 @@ Original: Web Edition https://git.unlock-music.dev/um/web
## Update CI pipeline ## Update CI pipeline
Ensure `jsonnet` and `yq` is installed. 1. Install [Drone CI binary](https://docs.drone.io/cli/install/)
2. Edit `.drone.jsonnet`
```sh 3. Update drone CI pipeline:
# Debian / Ubuntu etc:
sudo apt install jsonnet yq
```
1. Edit `.drone.jsonnet`
2. Update drone CI pipeline:
```sh ```sh
jsonnet -y .drone.jsonnet | yq -y > .drone.yml drone jsonnet --format --stream
``` ```