git.delta.rocks / jrsonnet / refs/commits / 86c2530b0f69

difftreelog

ci build wasm on ci

Лач2020-06-28parent: #faa4e4e.patch.diff
in: master

6 files changed

modified.gitignorediffbeforeafterboth
22
3.idea3.idea
4.vscode4.vscode
5
6cache
57
modified.gitlab-ci.ymldiffbeforeafterboth
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,57 @@
-image: "rustlang/rust:nightly"
+variables:
+  CARGO_HOME: $CI_PROJECT_DIR/cache
+
+stages:
+  - prepare
+  - build
+
+build-container:
+  image: docker:19.03.11
+  stage: prepare
+  services:
+    - docker:19.03.11-dind
+  before_script:
+    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+  script:
+    - docker build -t $CI_REGISTRY_IMAGE:build .
+    - docker push $CI_REGISTRY_IMAGE:build
 
-test:cargo:
+test-library:
+  image: $CI_REGISTRY_IMAGE:build
+  stage: build
   script:
-    - rustc --version && cargo --version
-    - cargo test --all --verbose
+    - make test
+  cache:
+    key: test
+    paths:
+      - ./cache
+
+build-linux:
+  image: $CI_REGISTRY_IMAGE:build
+  stage: build
+  script:
+    - make build-native
+  cache:
+    key: linux
+    paths:
+      - ./cache
+      - ./target
+  artifacts:
+    paths:
+      - ./target/release/jrsonnet
+    expire_in: 30 days
+
+build-wasm:
+  image: $CI_REGISTRY_IMAGE:build
+  stage: build
+  script:
+    - make build-wasi
+  cache:
+    key: wasm
+    paths:
+      - ./cache
+      - ./target
+  artifacts:
+    paths:
+      - ./target/wasm32-wasi/release/jsonnet.wasm
+    expire_in: 30 days
modifiedMakefilediffbeforeafterboth
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,7 @@
-jsonnet-cpp:
-	git clone https://github.com/google/jsonnet jsonnet-cpp
-
-.ONESHELL:
-test-examples: jsonnet-cpp
-	cargo build --release
-	export JSONNET_BIN="$(PWD)/target/release/jsonnet"
-	export EXAMPLES_DIR="$(PWD)/jsonnet-cpp/examples/"
-	cd ./jsonnet-cpp/examples/
-	./check.sh
+.PHONY: test build build-wasi
+test:
+	cargo test
+build:
+	RUSTFLAGS="-Zmutable-noalias=yes -C link-arg=-s" cargo build --release -p jrsonnet
+build-wasi:
+	cd ./bindings/ && cargo build --release -p jsonnet --target wasm32-wasi
addedbuild/Dockerfilediffbeforeafterboth
--- /dev/null
+++ b/build/Dockerfile
@@ -0,0 +1,12 @@
+FROM alpine:edge
+
+RUN apk add --no-cache \
+	gcc \
+	make \
+	g++ \
+	curl \
+	cmake \
+	clang \
+	linux-headers
+RUN apk add --no-cache rustup && rustup-init --default-toolchain nightly -y -t wasm32-wasi
+ENV PATH /root/.rustup/toolchains/nightly-x86_64-unknown-linux-musl/bin/:/root/.cargo/bin/:${PATH}
addedbuild/make-docker.shdiffbeforeafterboth
--- /dev/null
+++ b/build/make-docker.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env sh
+export DOCKER_BUILDKIT=1
+docker build -t jrsonnet -f build/Dockerfile build/
+docker run --rm -it -v $PWD:/build -e CARGO_HOME=/build/cache jrsonnet:latest ash -c "cd /build&&make $@"
addedbuild/run-docker.shdiffbeforeafterboth
--- /dev/null
+++ b/build/run-docker.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env sh
+export DOCKER_BUILDKIT=1
+docker build -t jrsonnet -f build/Dockerfile build/
+docker run --rm -it -v $PWD:/build -e CARGO_HOME=/build/cache jrsonnet:latest ash -c "cd /build&&$@"