diff --git a/.drone.yml b/.drone.yml
index ee23f1ad0..be2d5f85a 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -51,6 +51,21 @@ steps:
       - go build -mod=vendor -o gitea_no_gcc # test if build succeeds without the sqlite tag
     depends_on: [lint-backend]
 
+  - name: build-backend-arm64
+    pull: always
+    image: golang:1.14
+    environment:
+      GO111MODULE: on
+      GOPROXY: off
+      GOOS: linux
+      GOARCH: arm64
+      TAGS: bindata
+    commands:
+      - curl -sL https://deb.nodesource.com/setup_12.x | bash - && apt -y install nodejs
+      - make build # test cross compile
+      - rm ./gitea # clean
+    depends_on: [lint-backend]
+
   - name: build-backend-386
     pull: always
     image: golang:1.14
diff --git a/Makefile b/Makefile
index f02340875..df786dccb 100644
--- a/Makefile
+++ b/Makefile
@@ -481,7 +481,7 @@ backend: go-check generate $(EXECUTABLE)
 
 .PHONY: generate
 generate: $(TAGS_PREREQ)
-	$(GO) generate -mod=vendor -tags '$(TAGS)' $(GO_PACKAGES)
+	CC= GOOS= GOARCH= $(GO) generate -mod=vendor -tags '$(TAGS)' $(GO_PACKAGES)
 
 $(EXECUTABLE): $(GO_SOURCES) $(TAGS_PREREQ)
 	$(GO) build -mod=vendor $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@