# 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 # # We have code in here for releasing on both GS and S3, control it through variables # on GitLab, do not change it in this file. # GCLOUD_SERVICE_ACCOUNT: /dev/null GCLOUD_RELEASE_DEPLOY_PATH: gs://download.gridtracker.org/release/$CI_COMMIT_TAG GCLOUD_TESTING_DEPLOY_PATH: gs://download.gridtracker.org/testing/$CI_COMMIT_TAG AWS_ACCESS_KEY_ID: "" AWS_SECRET_ACCESS_KEY: "" AWS_DEFAULT_REGION: "" AWS_RELEASE_DEPLOY_PATH: s3://download.gridtracker.org/release/$CI_COMMIT_TAG AWS_TESTING_DEPLOY_PATH: s3://download.gridtracker.org/testing/$CI_COMMIT_TAG # nothing in this file ill be allowed to run automatically except for: # 1. merge requests # 2. manual tagging # 3. committing to the default branch include: - template: "Workflows/MergeRequest-Pipelines.gitlab-ci.yml" stages: - build - test - package - deploy default: image: ${DEFAULT_IMAGE} interruptible: true # just do a quick syntax check job, we don't need to "build" anything here other than the # outer dev environment for gridtracker npm_test: stage: test image: node:latest script: - npm install - npm test # test2: # stage: test # script: # - echo "Do another parallel test here" # - echo "For example run a lint test" # package binaries and create build artifacts that may be used in later stages packaging: stage: package rules: # only do this with a manual tag starting with v or test_ - if: '$CI_COMMIT_TAG =~ /^(v|test_).*/' artifacts: paths: - artifacts/ name: '$CI_COMMIT_REF_SLUG' cache: paths: - .cache/ - node_modules/ key: files: - package.json - package.nw/package.json script: - | mkdir -p $APT_CACHE_DIR $NPM_CONFIG_CACHE mkdir -p artifacts/{debian,rpm} dpkg --add-architecture i386 - | echo -e "\e[0Ksection_start:`date +%s`:apt_get[collapsed=true]\r\e[0KGetting Build Dependencies" apt-get -qq update apt-get -qq -o dir::cache::archives="$APT_CACHE_DIR" install -y npm wine wine32 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" install -y rpm apt-get -qq -o dir::cache::archives="$APT_CACHE_DIR" build-dep . echo -e "\e[0Ksection_end:`date +%s`:apt_get\r\e[0K" - test `node version.js` = `dpkg-parsechangelog -S version` || (echo "package.nw/package.json and debian/changelog version mismatch"; exit 1) - | echo -e "\e[0Ksection_start:`date +%s`:native_build\r\e[0KBuilding native packages" npm install --prefer-offline npm run dist for dir in dist/*-linux-* ; do if [ -d $dir ] ; then tar -C dist -cjf ${dir}.tar.bz `basename $dir` ; fi ; done echo `pwd` (cd dist ; mv *.exe *-mac-x64.zip *.tar.bz ../artifacts) echo -e "\e[0Ksection_end:`date +%s`:native_build\e[0K" - | echo -e "\e[0Ksection_start:`date +%s`:debian_build\r\e[0KBuilding Debian packages" echo `pwd` dpkg-buildpackage -uc -us echo `pwd` mv ../*.{deb,dsc,buildinfo,tar.xz,changes} artifacts/debian/ echo -e "\e[0Ksection_end:`date +%s`:debian_build\r\e[0K" - | echo -e "\e[0Ksection_start:`date +%s`:rpm_build\r\e[0KBuilding RPM packages" rpmbuild -D "version `node ./version.js`" --build-in-place -bb gridtracker.spec mv $HOME/rpmbuild/RPMS/noarch/gridtracker-*.noarch.rpm artifacts/rpm ls -laR artifacts echo -e "\e[0Ksection_end:`date +%s`:rpm_build\r\e[0K" # copy the assets over to our distribution storage (testing, tag = test_.*) s3_upload_testing: stage: deploy image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest rules: - if: '$CI_COMMIT_TAG =~ /^(test_).*/ && $AWS_ACCESS_KEY_ID != ""' script: - cd artifacts; aws s3 sync . $AWS_TESTING_DEPLOY_PATH # copy the assets over to our distribution storage (full release, tag = v.*) s3_upload_release: stage: deploy image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest rules: - if: '$CI_COMMIT_TAG =~ /^(v).*/ && $AWS_ACCESS_KEY_ID != ""' script: - cd artifacts; aws s3 sync . $AWS_RELEASE_DEPLOY_PATH # 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).*/' release: tag_name: $CI_COMMIT_TAG name: GridTracker $CI_COMMIT_TAG description: GridTracker release $CI_COMMIT_TAG ref: '$CI_COMMIT_SHA' assets: links: - name: Binary images for $CI_COMMIT_TAG url: https://download.gridtracker.org/release/$CI_COMMIT_TAG/ script: - echo 'Release for $CI_COMMIT_TAG'