Switch from goreleaser to manual docker builds
This commit is contained in:
parent
81120bf333
commit
70223a8040
115
.goreleaser.yaml
115
.goreleaser.yaml
|
@ -1,115 +0,0 @@
|
|||
---
|
||||
project_name: ytdl-web
|
||||
env:
|
||||
- BASE_PKG=go.fifitido.net/ytdl-web
|
||||
gitea_urls:
|
||||
api: https://git.fifitido.net/api/v1
|
||||
download: https://git.fifitido.net
|
||||
before:
|
||||
hooks:
|
||||
- tidy
|
||||
builds:
|
||||
- id: ytdl-web_linux
|
||||
env:
|
||||
- CGO_ENABLED=0
|
||||
goos:
|
||||
- linux
|
||||
goarch:
|
||||
- amd64
|
||||
- arm64
|
||||
- arm
|
||||
goarm:
|
||||
- "7"
|
||||
- "6"
|
||||
ldflags:
|
||||
- -X {{ .Env.BASE_PKG }}/version.Version={{.Version}}
|
||||
- -X {{ .Env.BASE_PKG }}/version.Build={{.ShortCommit}}
|
||||
- -X {{ .Env.BASE_PKG }}/version.BuildDate={{.Date}}
|
||||
- -X {{ .Env.BASE_PKG }}/version.BuiltBy=goreleaser
|
||||
- env:
|
||||
- CGO_ENABLED=0
|
||||
goos:
|
||||
- windows
|
||||
- darwin
|
||||
ldflags:
|
||||
- -X {{ .Env.BASE_PKG }}/version.Version={{.Version}}
|
||||
- -X {{ .Env.BASE_PKG }}/version.Build={{.ShortCommit}}
|
||||
- -X {{ .Env.BASE_PKG }}/version.BuildDate={{.Date}}
|
||||
- -X {{ .Env.BASE_PKG }}/version.BuiltBy=goreleaser
|
||||
dockers:
|
||||
- image_templates:
|
||||
- &amd64_image git.fifitido.net/apps/{{.ProjectName}}:{{.Tag}}-amd64
|
||||
use: buildx
|
||||
dockerfile: Dockerfile
|
||||
goos: linux
|
||||
goarch: amd64
|
||||
build_flag_templates:
|
||||
- --platform=linux/amd64
|
||||
- image_templates:
|
||||
- &arm64v8_image git.fifitido.net/apps/{{.ProjectName}}:{{.Tag}}-arm64v8
|
||||
use: buildx
|
||||
dockerfile: Dockerfile
|
||||
goos: linux
|
||||
goarch: arm64
|
||||
build_flag_templates:
|
||||
- --platform=linux/arm64/v8
|
||||
- image_templates:
|
||||
- &armv7_image git.fifitido.net/apps/{{.ProjectName}}:{{.Tag}}-armv7
|
||||
use: buildx
|
||||
dockerfile: Dockerfile
|
||||
goos: linux
|
||||
goarch: arm
|
||||
goarm: 7
|
||||
build_flag_templates:
|
||||
- --platform=linux/arm/v7
|
||||
- image_templates:
|
||||
- &armv6_image git.fifitido.net/apps/{{.ProjectName}}:{{.Tag}}-armv6
|
||||
use: buildx
|
||||
dockerfile: Dockerfile
|
||||
goos: linux
|
||||
goarch: arm
|
||||
goarm: 6
|
||||
build_flag_templates:
|
||||
- --platform=linux/arm/v6
|
||||
docker_manifests:
|
||||
- name_template: git.fifitido.net/apps/{{.ProjectName}}:latest
|
||||
image_templates:
|
||||
- *amd64_image
|
||||
- *arm64v8_image
|
||||
- *armv7_image
|
||||
- *armv6_image
|
||||
- name_template: git.fifitido.net/apps/{{.ProjectName}}:{{.Tag}}
|
||||
image_templates:
|
||||
- *amd64_image
|
||||
- *arm64v8_image
|
||||
- *armv7_image
|
||||
- *armv6_image
|
||||
archives:
|
||||
- format: tar.gz
|
||||
# this name template makes the OS and Arch
|
||||
# compatible with the results of uname.
|
||||
name_template: >-
|
||||
{{ .ProjectName }}_
|
||||
{{- title .Os }}_
|
||||
{{- if eq .Arch "amd64" }}x86_64
|
||||
{{- else if eq .Arch "386" }}i386
|
||||
{{- else }}{{ .Arch }}{{ end }}
|
||||
{{- if .Arm }}v{{ .Arm }}{{ end }}
|
||||
# use zip for windows archives
|
||||
format_overrides:
|
||||
- goos: windows
|
||||
format: zip
|
||||
checksum:
|
||||
name_template: checksums.txt
|
||||
snapshot:
|
||||
name_template: "{{ incpatch .Version }}-next"
|
||||
changelog:
|
||||
sort: asc
|
||||
filters:
|
||||
exclude:
|
||||
- "^docs:"
|
||||
- "^test:"
|
||||
# The lines beneath this are called `modelines`. See `:help modeline`
|
||||
# Feel free to remove those if you don't want/use them.
|
||||
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json
|
||||
# vim: set ts=2 sw=2 tw=0 fo=cnqoj
|
24
Dockerfile
24
Dockerfile
|
@ -1,5 +1,27 @@
|
|||
ARG GOLANG_VERSION="1.20.5"
|
||||
ARG ALPINE_VERSION="3.18"
|
||||
|
||||
FROM golang:${GOLANG_VERSION}-alpine${ALPINE_VERSION} AS build
|
||||
|
||||
ARG VERSION=latest
|
||||
ARG BUILD="unknown"
|
||||
ARG BUILD_DATE="unknown"
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY go.mod go.sum ./
|
||||
|
||||
RUN go mod download
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN go build \
|
||||
-ldflags="-X $VERSION_PKG.Version=${VERSION}" \
|
||||
-ldflags="-X $VERSION_PKG.Build=${BUILD}" \
|
||||
-ldflags="-X $VERSION_PKG.BuildDate=${BUILD_DATE}" \
|
||||
-ldflags="-X $VERSION_PKG.BuiltBy=dockerfile" \
|
||||
-o /ytdl-web .
|
||||
|
||||
FROM alpine:${ALPINE_VERSION}
|
||||
|
||||
WORKDIR /app
|
||||
|
@ -7,7 +29,7 @@ WORKDIR /app
|
|||
ARG YTDLP_VERSION="2023.07.06-r0"
|
||||
RUN apk add --no-cache yt-dlp==${YTDLP_VERSION}
|
||||
|
||||
COPY ytdl-web ./
|
||||
COPY --from=build /ytdl-web ./
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
|
|
48
devenv.nix
48
devenv.nix
|
@ -6,51 +6,71 @@
|
|||
env.BINARY_OUT = "./out/ytdl-web";
|
||||
env.VERSION = "1.0.8";
|
||||
env.VERSION_PKG = "go.fifitido.net/ytdl-web/version";
|
||||
env.DOCKER_REGISTRY = "git.fifitido.net";
|
||||
env.DOCKER_ORG = "apps";
|
||||
env.DOCKER_PLATFORMS = "linux/amd64,linux/arm64";
|
||||
|
||||
env.YTDL_ENV = "Development";
|
||||
|
||||
|
||||
# https://devenv.sh/packages/
|
||||
packages = with pkgs; [
|
||||
git
|
||||
air
|
||||
goreleaser
|
||||
docker
|
||||
docker-compose
|
||||
buildkit
|
||||
docker-buildx
|
||||
trunk-io
|
||||
yt-dlp
|
||||
];
|
||||
|
||||
# https://devenv.sh/scripts/
|
||||
scripts.deps.exec = "go mod download";
|
||||
scripts.tidy.exec = "go mod tidy";
|
||||
scripts.check.exec = "goreleaser check";
|
||||
|
||||
scripts.build-id = "git rev-parse --short HEAD";
|
||||
scripts.build-date = "date -Iseconds";
|
||||
|
||||
scripts.build.exec = ''
|
||||
go build -ldflags="
|
||||
-X $VERSION_PKG.Version=$VERSION
|
||||
-X $VERSION_PKG.Build=$(git rev-parse --short HEAD)
|
||||
-X $VERSION_PKG.BuildDate=$(date -Iseconds)
|
||||
-X $VERSION_PKG.BuiltBy=taskfile
|
||||
-X $VERSION_PKG.Build=$(build-id)
|
||||
-X $VERSION_PKG.BuildDate=$(build-date)
|
||||
-X $VERSION_PKG.BuiltBy=manual
|
||||
" -o $BINARY_OUT .
|
||||
'';
|
||||
scripts.clean.exec = ''
|
||||
rm -rf ./dist/ ./out/ ./tmp/
|
||||
go clean
|
||||
'';
|
||||
scripts.release.exec = ''
|
||||
clean
|
||||
goreleaser release
|
||||
'';
|
||||
scripts.lint.exec = "trunk check";
|
||||
scripts.fmt.exec = "trunk fmt";
|
||||
|
||||
scripts.docker-image.exec = "echo $DOCKER_REGISTRY/$DOCKER_ORG/$NAME";
|
||||
|
||||
scripts.docker-init.exec = ''
|
||||
docker buildx create \
|
||||
--name $NAME \
|
||||
--platform $DOCKER_PLATFORMS
|
||||
'';
|
||||
|
||||
scripts.docker-build-release.exec = ''
|
||||
docker-init
|
||||
docker buildx build \
|
||||
--tag $(docker-image):$VERSION \
|
||||
--tag $(docker-image):latest \
|
||||
--platform $DOCKER_PLATFORMS \
|
||||
--builder $NAME \
|
||||
--build-arg VERSION=$VERSION
|
||||
--build-arg BUILD=$(build-id)
|
||||
--build-arg BUILD_DATE=$(build-date)
|
||||
'';
|
||||
|
||||
enterShell = ''
|
||||
echo "Welcome to the $NAME development environment."
|
||||
echo -n "Golang version: $(go version | cut -d ' ' -f 3), "
|
||||
echo -n "Goreleaser version: $(goreleaser --version | tail -n 9 | head -n 1 | cut -c 16-), "
|
||||
echo -n "yt-dlp version: $(yt-dlp --version), "
|
||||
echo "Trunk version: $(trunk --version)"
|
||||
echo -n "Docker CLI version: $(docker version -f {{.Client.Version}}), "
|
||||
echo -n "Buildx version: $(docker buildx version | cut -d ' ' -f 2), "
|
||||
echo "yt-dlp version: $(yt-dlp --version)"
|
||||
'';
|
||||
|
||||
# https://devenv.sh/languages/
|
||||
|
|
Loading…
Reference in New Issue