diff --git a/.drone.jsonnet b/.drone.jsonnet index a2bdfee..67f7b08 100644 --- a/.drone.jsonnet +++ b/.drone.jsonnet @@ -17,21 +17,28 @@ local CreateRelease() = { local StepGoBuild(GOOS, GOARCH) = { - local filepath = 'dist/um-%s-%s.tar.gz' % [GOOS, GOARCH], + local archiveExt = if GOOS == 'windows' then 'zip' else 'tar.gz', + 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 GOOS == 'windows' then [ + 'zip -9 -j -r "%s" $DIST_DIR' % filepath, + ] else [ + 'tar -zc -C $DIST_DIR um | gzip -9 > "%s"' % filepath, + ], name: 'go build %s/%s' % [GOOS, GOARCH], image: 'golang:1.22', environment: { GOOS: GOOS, GOARCH: GOARCH, - GOPROXY: "https://goproxy.io,direct", + GOPROXY: 'https://goproxy.io,direct', }, commands: [ 'DIST_DIR=$(mktemp -d)', 'go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags --always)" -o $DIST_DIR ./cmd/um', 'mkdir -p dist', - 'tar cz -f %s -C $DIST_DIR .' % filepath, - ], + ] + archive, }; local StepUploadArtifact(GOOS, GOARCH) = { @@ -71,7 +78,7 @@ local PipelineBuild(GOOS, GOARCH, RUN_TEST) = { name: 'go test', image: 'golang:1.22', environment: { - GOPROXY: "https://goproxy.io,direct", + GOPROXY: 'https://goproxy.io,direct', }, commands: ['go test -v ./...'], }] else [] @@ -100,7 +107,7 @@ local PipelineRelease() = { name: 'go test', image: 'golang:1.22', environment: { - GOPROXY: "https://goproxy.io,direct", + GOPROXY: 'https://goproxy.io,direct', }, commands: ['go test -v ./...'], }, diff --git a/.drone.yml b/.drone.yml index 535660c..5104f37 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,226 +1,225 @@ ---- kind: pipeline name: build linux/amd64 steps: -- commands: - - git fetch --tags - image: alpine/git - name: fetch tags -- commands: - - go test -v ./... - environment: - GOPROXY: https://goproxy.io,direct - image: golang:1.22 - name: go test -- commands: - - DIST_DIR=$(mktemp -d) - - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - --always)" -o $DIST_DIR ./cmd/um - - mkdir -p dist - - tar cz -f dist/um-linux-amd64.tar.gz -C $DIST_DIR . - environment: - GOARCH: amd64 - GOOS: linux - GOPROXY: https://goproxy.io,direct - image: golang:1.22 - name: go build linux/amd64 -- commands: - - curl --fail --include --user "um-release-bot:$GITEA_API_KEY" --upload-file "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" - - sha256sum dist/um-linux-amd64.tar.gz - - echo $DRONE_GITEA_SERVER/${DRONE_REPO_NAMESPACE}/-/packages/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER} - environment: - DRONE_GITEA_SERVER: https://git.unlock-music.dev - GITEA_API_KEY: - from_secret: GITEA_API_KEY - image: golang:1.22 - name: upload artifact + - commands: + - git fetch --tags + image: alpine/git + name: fetch tags + - commands: + - go test -v ./... + environment: + GOPROXY: https://goproxy.io,direct + image: golang:1.22 + name: go test + - commands: + - DIST_DIR=$(mktemp -d) + - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags + --always)" -o $DIST_DIR ./cmd/um + - mkdir -p dist + - tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-linux-amd64.tar.gz" + environment: + GOARCH: amd64 + GOOS: linux + GOPROXY: https://goproxy.io,direct + image: golang:1.22 + name: go build linux/amd64 + - commands: + - curl --fail --include --user "um-release-bot:$GITEA_API_KEY" --upload-file + "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" + - sha256sum dist/um-linux-amd64.tar.gz + - echo $DRONE_GITEA_SERVER/${DRONE_REPO_NAMESPACE}/-/packages/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER} + environment: + DRONE_GITEA_SERVER: https://git.unlock-music.dev + GITEA_API_KEY: + from_secret: GITEA_API_KEY + image: golang:1.22 + name: upload artifact trigger: event: - - push - - pull_request + - push + - pull_request type: docker --- kind: pipeline name: build windows/amd64 steps: -- commands: - - git fetch --tags - image: alpine/git - name: fetch tags -- commands: - - DIST_DIR=$(mktemp -d) - - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - --always)" -o $DIST_DIR ./cmd/um - - mkdir -p dist - - tar cz -f dist/um-windows-amd64.tar.gz -C $DIST_DIR . - environment: - GOARCH: amd64 - GOOS: windows - GOPROXY: https://goproxy.io,direct - image: golang:1.22 - name: go build windows/amd64 -- commands: - - curl --fail --include --user "um-release-bot:$GITEA_API_KEY" --upload-file "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" - - sha256sum dist/um-windows-amd64.tar.gz - - echo $DRONE_GITEA_SERVER/${DRONE_REPO_NAMESPACE}/-/packages/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER} - environment: - DRONE_GITEA_SERVER: https://git.unlock-music.dev - GITEA_API_KEY: - from_secret: GITEA_API_KEY - image: golang:1.22 - name: upload artifact + - commands: + - git fetch --tags + image: alpine/git + name: fetch tags + - commands: + - DIST_DIR=$(mktemp -d) + - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags + --always)" -o $DIST_DIR ./cmd/um + - mkdir -p dist + - zip -9 -j -r "dist/um-windows-amd64.zip" $DIST_DIR + environment: + GOARCH: amd64 + GOOS: windows + GOPROXY: https://goproxy.io,direct + image: golang:1.22 + name: go build windows/amd64 + - commands: + - curl --fail --include --user "um-release-bot:$GITEA_API_KEY" --upload-file + "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" + - sha256sum dist/um-windows-amd64.tar.gz + - echo $DRONE_GITEA_SERVER/${DRONE_REPO_NAMESPACE}/-/packages/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER} + environment: + DRONE_GITEA_SERVER: https://git.unlock-music.dev + GITEA_API_KEY: + from_secret: GITEA_API_KEY + image: golang:1.22 + name: upload artifact trigger: event: - - push - - pull_request + - push + - pull_request type: docker --- kind: pipeline name: build darwin/amd64 steps: -- commands: - - git fetch --tags - image: alpine/git - name: fetch tags -- commands: - - DIST_DIR=$(mktemp -d) - - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - --always)" -o $DIST_DIR ./cmd/um - - mkdir -p dist - - tar cz -f dist/um-darwin-amd64.tar.gz -C $DIST_DIR . - environment: - GOARCH: amd64 - GOOS: darwin - GOPROXY: https://goproxy.io,direct - image: golang:1.22 - name: go build darwin/amd64 -- commands: - - curl --fail --include --user "um-release-bot:$GITEA_API_KEY" --upload-file "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" - - sha256sum dist/um-darwin-amd64.tar.gz - - echo $DRONE_GITEA_SERVER/${DRONE_REPO_NAMESPACE}/-/packages/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER} - environment: - DRONE_GITEA_SERVER: https://git.unlock-music.dev - GITEA_API_KEY: - from_secret: GITEA_API_KEY - image: golang:1.22 - name: upload artifact + - commands: + - git fetch --tags + image: alpine/git + name: fetch tags + - commands: + - DIST_DIR=$(mktemp -d) + - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags + --always)" -o $DIST_DIR ./cmd/um + - mkdir -p dist + - tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-darwin-amd64.tar.gz" + environment: + GOARCH: amd64 + GOOS: darwin + GOPROXY: https://goproxy.io,direct + image: golang:1.22 + name: go build darwin/amd64 + - commands: + - curl --fail --include --user "um-release-bot:$GITEA_API_KEY" --upload-file + "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" + - sha256sum dist/um-darwin-amd64.tar.gz + - echo $DRONE_GITEA_SERVER/${DRONE_REPO_NAMESPACE}/-/packages/generic/${DRONE_REPO_NAME}-build/${DRONE_BUILD_NUMBER} + environment: + DRONE_GITEA_SERVER: https://git.unlock-music.dev + GITEA_API_KEY: + from_secret: GITEA_API_KEY + image: golang:1.22 + name: upload artifact trigger: event: - - push - - pull_request + - push + - pull_request type: docker --- kind: pipeline name: release steps: -- commands: - - git fetch --tags - image: alpine/git - name: fetch tags -- commands: - - go test -v ./... - environment: - GOPROXY: https://goproxy.io,direct - image: golang:1.22 - name: go test -- commands: - - DIST_DIR=$(mktemp -d) - - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - --always)" -o $DIST_DIR ./cmd/um - - mkdir -p dist - - tar cz -f dist/um-linux-amd64.tar.gz -C $DIST_DIR . - environment: - GOARCH: amd64 - GOOS: linux - GOPROXY: https://goproxy.io,direct - image: golang:1.22 - name: go build linux/amd64 -- commands: - - DIST_DIR=$(mktemp -d) - - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - --always)" -o $DIST_DIR ./cmd/um - - mkdir -p dist - - tar cz -f dist/um-linux-arm64.tar.gz -C $DIST_DIR . - environment: - GOARCH: arm64 - GOOS: linux - GOPROXY: https://goproxy.io,direct - image: golang:1.22 - name: go build linux/arm64 -- commands: - - DIST_DIR=$(mktemp -d) - - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - --always)" -o $DIST_DIR ./cmd/um - - mkdir -p dist - - tar cz -f dist/um-linux-386.tar.gz -C $DIST_DIR . - environment: - GOARCH: "386" - GOOS: linux - GOPROXY: https://goproxy.io,direct - image: golang:1.22 - name: go build linux/386 -- commands: - - DIST_DIR=$(mktemp -d) - - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - --always)" -o $DIST_DIR ./cmd/um - - mkdir -p dist - - tar cz -f dist/um-windows-amd64.tar.gz -C $DIST_DIR . - environment: - GOARCH: amd64 - GOOS: windows - GOPROXY: https://goproxy.io,direct - image: golang:1.22 - name: go build windows/amd64 -- commands: - - DIST_DIR=$(mktemp -d) - - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - --always)" -o $DIST_DIR ./cmd/um - - mkdir -p dist - - tar cz -f dist/um-windows-386.tar.gz -C $DIST_DIR . - environment: - GOARCH: "386" - GOOS: windows - GOPROXY: https://goproxy.io,direct - image: golang:1.22 - name: go build windows/386 -- commands: - - DIST_DIR=$(mktemp -d) - - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - --always)" -o $DIST_DIR ./cmd/um - - mkdir -p dist - - tar cz -f dist/um-darwin-amd64.tar.gz -C $DIST_DIR . - environment: - GOARCH: amd64 - GOOS: darwin - GOPROXY: https://goproxy.io,direct - image: golang:1.22 - name: go build darwin/amd64 -- commands: - - DIST_DIR=$(mktemp -d) - - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags - --always)" -o $DIST_DIR ./cmd/um - - mkdir -p dist - - tar cz -f dist/um-darwin-arm64.tar.gz -C $DIST_DIR . - environment: - GOARCH: arm64 - GOOS: darwin - GOPROXY: https://goproxy.io,direct - image: golang:1.22 - name: go build darwin/arm64 -- image: plugins/gitea-release - name: create release - settings: - api_key: - from_secret: GITEA_API_KEY - base_url: https://git.unlock-music.dev - checksum: sha256 - draft: true - files: dist/* - title: ${DRONE_TAG} + - commands: + - git fetch --tags + image: alpine/git + name: fetch tags + - commands: + - go test -v ./... + environment: + GOPROXY: https://goproxy.io,direct + image: golang:1.22 + name: go test + - commands: + - DIST_DIR=$(mktemp -d) + - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags + --always)" -o $DIST_DIR ./cmd/um + - mkdir -p dist + - tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-linux-amd64.tar.gz" + environment: + GOARCH: amd64 + GOOS: linux + GOPROXY: https://goproxy.io,direct + image: golang:1.22 + name: go build linux/amd64 + - commands: + - DIST_DIR=$(mktemp -d) + - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags + --always)" -o $DIST_DIR ./cmd/um + - mkdir -p dist + - tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-linux-arm64.tar.gz" + environment: + GOARCH: arm64 + GOOS: linux + GOPROXY: https://goproxy.io,direct + image: golang:1.22 + name: go build linux/arm64 + - commands: + - DIST_DIR=$(mktemp -d) + - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags + --always)" -o $DIST_DIR ./cmd/um + - mkdir -p dist + - tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-linux-386.tar.gz" + environment: + GOARCH: '386' + GOOS: linux + GOPROXY: https://goproxy.io,direct + image: golang:1.22 + name: go build linux/386 + - commands: + - DIST_DIR=$(mktemp -d) + - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags + --always)" -o $DIST_DIR ./cmd/um + - mkdir -p dist + - zip -9 -j -r "dist/um-windows-amd64.zip" $DIST_DIR + environment: + GOARCH: amd64 + GOOS: windows + GOPROXY: https://goproxy.io,direct + image: golang:1.22 + name: go build windows/amd64 + - commands: + - DIST_DIR=$(mktemp -d) + - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags + --always)" -o $DIST_DIR ./cmd/um + - mkdir -p dist + - zip -9 -j -r "dist/um-windows-386.zip" $DIST_DIR + environment: + GOARCH: '386' + GOOS: windows + GOPROXY: https://goproxy.io,direct + image: golang:1.22 + name: go build windows/386 + - commands: + - DIST_DIR=$(mktemp -d) + - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags + --always)" -o $DIST_DIR ./cmd/um + - mkdir -p dist + - tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-darwin-amd64.tar.gz" + environment: + GOARCH: amd64 + GOOS: darwin + GOPROXY: https://goproxy.io,direct + image: golang:1.22 + name: go build darwin/amd64 + - commands: + - DIST_DIR=$(mktemp -d) + - go build -v -trimpath -ldflags="-w -s -X main.AppVersion=$(git describe --tags + --always)" -o $DIST_DIR ./cmd/um + - mkdir -p dist + - tar -zc -C $DIST_DIR um | gzip -9 > "dist/um-darwin-arm64.tar.gz" + environment: + GOARCH: arm64 + GOOS: darwin + GOPROXY: https://goproxy.io,direct + image: golang:1.22 + name: go build darwin/arm64 + - image: plugins/gitea-release + name: create release + settings: + api_key: + from_secret: GITEA_API_KEY + base_url: https://git.unlock-music.dev + checksum: sha256 + draft: true + files: dist/* + title: ${DRONE_TAG} trigger: event: - - tag + - tag type: docker