image: docker-registry.xx.network/elixxir/sysadmin/backend-ci:go1.17-wasm

stages:
  - wasm-test
  - go-test
  - build
  - trigger-doc-update

build:
  stage: build
  script:
    - go mod vendor -v
    - mkdir -p release
    - GOOS=js GOARCH=wasm go build -ldflags '-w -s' -o release/xxdk.wasm main.go
  artifacts:
    paths:
      - release/

wasm-test:
  stage: wasm-test
  script:
    - export PATH=/root/go/bin:$PATH
    - GOOS=js GOARCH=wasm go test ./... -v

go-test:
  stage: go-test
  script:
    - go mod vendor -v
    - go test ./... -v

# This pipeline job will attempt to have pkg.go.dev update docs for xxdk-wasm.
#
# pkg.go.dev relies on the proxy.golang.org service (go module cache/proxy) to discover versions of
# Go modules to make docs of. The proxy keeps a list of all known versions of Go modules. The go
# mod proxy does cache pulls for about 30 minutes, so if quickly successive commits are done in
# master/release, this will fail to pull the latest client, and the docs will not update.
trigger-doc-update:
  image: $DOCKER_IMAGE
  script:
    # We use GOPRIVATE blank because not want to directly pull client, we want to use the public cache.
    - GOPRIVATE="" go install gitlab.com/elixxir/xxdk-wasm@$CI_COMMIT_SHA
  only:
    - release
    - master