# This file is a template, and might need editing before it works on your project. # see https://docs.gitlab.com/ee/ci/yaml/README.html for all available options variables: DEFAULT_IMAGE: debian:stable APT_CACHE_DIR: $CI_PROJECT_DIR/.cache/apt NPM_CONFIG_CACHE: $CI_PROJECT_DIR/.cache/npm EXTRA_DESCRIPTION: '' stages: - precheck - build - test - deploy # only run for merge requests and tags include: - template: "Workflows/MergeRequest-Pipelines.gitlab-ci.yml" default: image: ${DEFAULT_IMAGE} interruptible: true cache: &global_cache paths: - .cache/ - node_modules/ key: files: - package.json - package.nw/package.json before_script: - mkdir -p $APT_CACHE_DIR $NPM_CONFIG_CACHE # quick variable test test_variable: stage: precheck script: - echo $CI_JOB_STAGE - env - echo $GCLOUD_SERVICE_ACCOUNT - cat $GCLOUD_SERVICE_ACCOUNT ## just do a quick syntax check job #code_test_job: # stage: precheck # image: node:latest # cache: {} # script: # - npm install # - npm test # ## if we've been tagged with a tag starting with v or test_, build some binaries for ## and leave them in the build artifacts #build_job: # stage: build # rules: # - if: '$CI_COMMIT_TAG =~ /^(v|test_).*/' # artifacts: # paths: # - build/* # name: '$CI_COMMIT_REF_SLUG' # script: # - mkdir -p build/debian # - dpkg --add-architecture i386 # - apt-get -qq update # - apt-get -qq -o dir::cache::archives="$APT_CACHE_DIR" install -y npm wine wine32 # - npm install --prefer-offline # - npm run dist # - (cd dist ; mv *.zip *.exe *.7z *.json ../build) # - apt-get -qq -o dir::cache::archives="$APT_CACHE_DIR" install -y build-essential devscripts # - apt-get -qq -o dir::cache::archives="$APT_CACHE_DIR" build-dep . # - dpkg-buildpackage -uc -us # - mv ../*.{deb,dsc,buildinfo,tar.xz,changes} build/debian/ # ## currently we run syntax checking before we even attempt builds ## this is left as an example placeholder for post-build tests ## ## test1: ## stage: test ## cache: ## <<: *global_cache ## policy: pull ## script: ## - apt-get -qq update ## - apt-get -qq -o dir::cache::archives="$APT_CACHE_DIR" install -y npm ## - npm install --prefer-offline ## - npm test ## ## test2: ## stage: test ## script: ## - echo "Do another parallel test here" ## - echo "For example run a lint test" ## # ## copy the assets over to our build server #staging_upload: # stage: deploy # image: google/cloud-sdk:alpine # rules: # - if: '$CI_COMMIT_TAG =~ /^test_.*/' # cache: {} # script: # - echo "This will be the upload script for $CI_COMMIT_TAG" # - env # - echo "Credentials in $GCLOUD_SERVICE_ACCOUNT" # - cat $GCLOUD_SERVICE_ACCOUNT # - gcloud auth activate-service-account --key-file $GCLOUD_SERVICE_ACCOUNT # - echo build artifacts ---- # - ls -R build # - echo copying # - gsutil -m --project=gridtracker rsync build/* gs://gridtracker_dltest/$CI_COMMIT_TAG # ## this only creates a "source code release" -- gitlab doesn't specify binaries ## except as links to external storage, which is suboptimal for now #source_release: # stage: deploy # image: registry.gitlab.com/gitlab-org/release-cli:latest # rules: # - if: '$CI_COMMIT_TAG =~ /^v.*/' # script: # - echo 'Release for $CI_COMMIT_TAG' # release: # name: 'GridTracker $CI_COMMIT_TAG' # description: 'GridTracker source $CI_COMMIT_TAG' # tag_name: '$CI_COMMIT_TAG' # ref: '$CI_COMMIT_SHA' #