image: docker-registry.xx.network/elixxir/sysadmin/backend-ci:go1.21-cuda11.1.1 before_script: - go version || echo "Go executable not found." - echo $CI_BUILD_REF - echo $CI_PROJECT_DIR - echo $PWD - eval $(ssh-agent -s) - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null - mkdir -p ~/.ssh - chmod 700 ~/.ssh - ssh-keyscan -t rsa $GITLAB_SERVER > ~/.ssh/known_hosts - rm -rf ~/.gitconfig - git config --global url."git@$GITLAB_SERVER:".insteadOf "https://gitlab.com/" - git config --global url."git@$GITLAB_SERVER:".insteadOf "https://git.xx.network/" --add - export PATH=$HOME/go/bin:$PATH - export GOPATH=$HOME/go/bin - echo $DOCKER_IMAGE stages: - test - build - doc-update go-test: stage: test script: - go mod vendor -v - go test ./... -v wasm-test: stage: test script: - export PATH=/root/go/bin:$PATH - go mod vendor - unset SSH_PRIVATE_KEY - unset $(env | grep '=' | awk -F= '{print $1}' | grep -v PATH | grep -v GO | grep -v HOME) # - rm vendor/gitlab.com/elixxir/wasm-utils/exception/throw_js.s # - mv vendor/gitlab.com/elixxir/wasm-utils/exception/throws.dev vendor/gitlab.com/elixxir/wasm-utils/exception/throws.go # - GOOS=js GOARCH=wasm go test ./... -v - make tests build: stage: build script: - go mod vendor -v - mkdir -p release # Main library - GOOS=js GOARCH=wasm go build -ldflags '-w -s' -trimpath -o release/xxdk.wasm main.go # Workers - GOOS=js GOARCH=wasm go build -ldflags '-w -s' -trimpath -o release/xxdk-channelsIndexedDkWorker.wasm ./indexedDb/impl/channels/... - GOOS=js GOARCH=wasm go build -ldflags '-w -s' -trimpath -o release/xxdk-dmIndexedDkWorker.wasm ./indexedDb/impl/dm/... - GOOS=js GOARCH=wasm go build -ldflags '-w -s' -trimpath -o release/xxdk-logFileWorker.wasm ./logging/workerThread/... - GOOS=js GOARCH=wasm go build -ldflags '-w -s' -trimpath -o release/xxdk-stateIndexedDbWorker.wasm ./indexedDb/impl/state/... - cp indexedDb/impl/channels/channelsIndexedDbWorker.js release/ - cp indexedDb/impl/dm/dmIndexedDbWorker.js release/ - cp logging/workerThread/logFileWorker.js release/ - cp indexedDb/impl/state/stateIndexedDbWorker.js release/ # Wasm executor - cp wasm_exec.js release/ artifacts: paths: - release/ expose_as: "release" # 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. doc-update: stage: doc-update only: - tags script: # GOPRIVATE is cleared so that the public cache is pulled instead of directly pulling client. - NEXT_WAIT_TIME=0; until [ $NEXT_WAIT_TIME -eq 15 ] || GOOS=js GOARCH=wasm GOPRIVATE="" go install gitlab.com/elixxir/xxdk-wasm@$CI_COMMIT_TAG; do sleep 60; (( NEXT_WAIT_TIME+=1 )); done; [ $NEXT_WAIT_TIME -lt 15 ]