image: $DOCKER_IMAGE 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 stages: - test - build - tag - version_check - doc-update - version_check build: stage: build except: - tags script: - go mod vendor -v - mkdir -p release - GOOS=js GOARCH=wasm go build -ldflags '-w -s' -o release/xxdk.wasm main.go - cp wasm_exec.js release/ artifacts: paths: - release/ wasm-test: stage: test except: - tags script: - export PATH=/root/go/bin:$PATH - echo > utils/utils_js.s - env - go install github.com/agnivade/wasmbrowsertest@latest - mv ~/go/bin/go_js_wasm_exec ~/go/bin/go_js_wasm_exec.old - ln -s ~/go/bin/wasmbrowsertest ~/go/bin/go_js_wasm_exec - unset SSH_PRIVATE_KEY - unset $(env | grep '=' | awk -F= '{print $1}' | grep -v PATH | grep -v GO) - GOOS=js GOARCH=wasm go test ./indexedDb/... -v - GOOS=js GOARCH=wasm go test ./... -v go-test: stage: test except: - tags script: - go mod vendor -v - go test ./... -v version_check: stage: version_check except: - tags only: - master - release image: $DOCKER_IMAGE script: - GITTAG=$(git describe --tags) - CODEVERS=$(cat storage/version.go | grep "const SEMVER =" | cut -d ' ' -f4 | tr -d '"') - if [[ $GITTAG != $CODEVERS ]]; then echo "VERSION NUMBER BAD $GITTAG != $CODEVERS"; exit -1; fi tag: stage: build except: - tags image: $DOCKER_IMAGE script: - git remote add origin_tags git@$GITLAB_SERVER:elixxir/xxdk-wasm.git || true - GOOS=js GOARCH=wasm go build -ldflags '-w -s' -o release/xxdk.wasm main.go - git tag $(sha256sum release/xxdk.wasm | awk '{ print $1 }') -f - git push origin_tags -f --tags # 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 except: - tags image: $DOCKER_IMAGE script: # We use GOPRIVATE blank because not want to directly pull client, we want to use the public cache. - GOOS=js GOARCH=wasm GOPRIVATE="" go install gitlab.com/elixxir/xxdk-wasm@$CI_COMMIT_SHA only: - release - master