difftreelog
ci build wasm on ci
in: master
6 files changed
.gitignorediffbeforeafterboth--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,5 @@
.idea
.vscode
+
+cache
.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
Makefilediffbeforeafterboth1.PHONY: test build build-wasi1jsonnet-cpp:2test:2 git clone https://github.com/google/jsonnet jsonnet-cpp3 cargo test34.ONESHELL:4build:5 RUSTFLAGS="-Zmutable-noalias=yes -C link-arg=-s" cargo build --release -p jrsonnet5test-examples: jsonnet-cpp6build-wasi:6 cargo build --release7 cd ./bindings/ && cargo build --release -p jsonnet --target wasm32-wasi7 export JSONNET_BIN="$(PWD)/target/release/jsonnet"8 export EXAMPLES_DIR="$(PWD)/jsonnet-cpp/examples/"9 cd ./jsonnet-cpp/examples/10 ./check.sh118build/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}
build/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 $@"
build/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&&$@"