1
0
forked from MTSR/mapserver

dev/cross cleanup

This commit is contained in:
BuckarooBanzay 2022-02-01 14:22:48 +01:00
parent 1d2800b59b
commit cdb4f62609
9 changed files with 21 additions and 205 deletions

View File

@ -1,26 +0,0 @@
name: docker
on:
push:
branches-ignore:
- 'renovate/*'
- 'dependabot/*'
tags:
- '*'
jobs:
build:
runs-on: ubuntu-20.04
timeout-minutes: 10
steps:
- uses: actions/checkout@master
- name: docker publish
uses: elgohr/Publish-Docker-Github-Action@master
with:
name: minetestmapserver/mapserver
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
tag_names: true
cache: true

View File

@ -1,22 +0,0 @@
name: release
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: build
run: make release
- name: upload
uses: skx/github-action-publish-binaries@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
args: 'output/mapserver-*'

View File

@ -8,20 +8,18 @@ builds:
- linux
- windows
- darwin
archives:
- replacements:
darwin: Darwin
linux: Linux
windows: Windows
386: i386
amd64: x86_64
checksum:
name_template: 'checksums.txt'
snapshot:
name_template: "{{ incpatch .Version }}-next"
goarch:
- amd64
- arm64
- arm
ldflags:
- -s -w -X mapserver/app.Version={{.Version}}
changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^test:'
dockers:
- image_templates: ["minetestmapserver/mapserver:{{ .Version }}"]
dockerfile: Dockerfile

View File

@ -1,20 +1,4 @@
FROM golang:1.17.6-alpine as builder
RUN apk --no-cache add ca-certificates gcc libc-dev nodejs npm git make
VOLUME /root/go
COPY ./ /server
RUN cd /server &&\
npm install -g jshint rollup &&\
make test jshint all
FROM alpine:3.15.0
RUN apk --no-cache add ca-certificates curl
WORKDIR /app
COPY --from=builder /server/output/mapserver-linux-x86_64 /bin/mapserver
HEALTHCHECK --interval=5s --timeout=3s \
CMD curl -f http://localhost:8080/api/config || exit 1
FROM scratch
COPY mapserver /bin/mapserver
EXPOSE 8080
CMD ["/bin/mapserver"]
ENTRYPOINT ["/bin/mapserver"]

View File

@ -1,64 +0,0 @@
OUT_DIR=output
VERSION=git-$(shell git rev-parse HEAD)
# -ldflags="-X mapserver/app.Version=1.0"
GO_LDFLAGS=-ldflags "-linkmode external -extldflags -static -X mapserver/app.Version=$(VERSION)"
GO_LDFLAGS_WIN=-ldflags "-X mapserver/app.Version=$(VERSION)"
GO_BUILD=CGO_ENABLED=1 go build
BINARIES = $(OUT_DIR)/mapserver-linux-x86_64
BINARIES += $(OUT_DIR)/mapserver-windows-x86-64.exe
BINARIES += $(OUT_DIR)/mapserver-linux-arm
JS_BUNDLE = public/js/bundle.js
all: $(JS_BUNDLE) $(OUT_DIR)/mapserver-linux-x86_64
$(OUT_DIR):
mkdir $@
fmt:
go fmt ./...
test: $(OUT_DIR)
go vet ./...
go test ./...
clean:
rm -rf $(JS_BUNDLE) test-output
rm -rf $(OUT_DIR)
jshint:
cd public/js && jshint .
$(JS_BUNDLE):
cd public/js && rollup -c rollup.config.js
$(OUT_DIR)/mapserver-linux-x86_64: $(OUT_DIR)
# native (linux x86_64)
GOOS=linux GOARCH=amd64 CC=gcc $(GO_BUILD) $(GO_LDFLAGS) -o $@
$(OUT_DIR)/mapserver-windows-x86-64.exe: $(OUT_DIR)
GOARCH=amd64 GOOS=windows CC=x86_64-w64-mingw32-gcc $(GO_BUILD) $(GO_LDFLAGS_WIN) -o $@
$(OUT_DIR)/mapserver-linux-arm: $(OUT_DIR)
# apt install gcc-5-arm-linux-gnueabihf
GOARCH=arm GOARM=7 CC=arm-linux-gnueabihf-gcc-8 $(GO_BUILD) $(GO_LDFLAGS) -o $@
release: builder_image $(OUT_DIR) $(MOD_ZIP)
# build all with the docker image
sudo docker run --rm -i \
-v $(shell pwd):/app \
-v mapserver-volume:/root/go \
-w /app \
mapserver-builder \
make test jshint release-all VERSION=$(VERSION)
# copy generated files to output dir
builder_image:
# build the docker image with all dependencies
$(MAKE) -C docker_builder build
release-all: $(JS_BUNDLE) $(BINARIES)

View File

@ -5,17 +5,17 @@
# Build dependencies
## Basic
* go >= 1.11
* make
* go >= 1.16
* nodejs >= v17.4.0
* npm >= 8.3.0
## With crosscompiling (optional)
Either apt-get:
* gcc-mingw-w64
* gcc-5-arm-linux-gnueabihf
* gcc-i686-linux-gnu
# Create the frontend bundle
Or use the docker-builder image in `/docker-builder`
```bash
cd public
npm ci
npm run bundle
```
# Development setup
@ -56,23 +56,3 @@ pgsql_player_connection = host=localhost port=5432 user=postgres password=enter
* Change the value `webdev` in the `mapserver.json` to `true`
* Start the server with `go run .` or with debug output: `go run . -debug`
* The web files in `public/` can now be changed on the fly without restarting the server
# All platform build
Prerequisites:
* docker
* make
Building:
* Run `make clean all` to build for all supported targets
The artifacts should now be in the `output` directory
# Release build
Prerequisites:
* docker
* make
Building:
* Run `make all VERSION=X.Y.Z` in the root directory

View File

@ -1,18 +0,0 @@
FROM ubuntu:hirsute
# for tzdata
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update
# cross compile and go stuff
RUN apt-get install -y gcc-mingw-w64 gcc-8-arm-linux-gnueabihf gcc-i686-linux-gnu &&\
apt-get install -y software-properties-common git golang-go
# TODO: move this to a separate package.json and docker container
# jshint
RUN apt-get install -y nodejs npm
RUN npm install -g jshint@2.12.0
# rollup
RUN npm install -g rollup@2.35.1

View File

@ -1,4 +0,0 @@
TAG=mapserver-builder
build:
sudo docker build . -t $(TAG)

View File

@ -1,12 +0,0 @@
Docker builder container
===============
Builds the mapserver with all supported architectures/platforms
Building the builder:
```
make build
```
This creates an image with the name `mapserver-builder`