Skip to content
Snippets Groups Projects
.gitlab-ci.yml 3.53 KiB
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
  - npm
  - 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-channelsIndexedDbWorker.wasm ./indexedDb/impl/channels/...
    - GOOS=js GOARCH=wasm go build -ldflags '-w -s' -trimpath -o release/xxdk-dmIndexedDbWorker.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/...
    # Wasm executor
    - cp wasm_exec.js release/
    # ndf reference file
    - cp ndf.js release/
  artifacts:
    paths:
      - release/
    expose_as: "release"

s3upload:
  stage: npm
  only:
    - tags
  script:
    - mc --version