gridtracker/.gitlab-ci.yml

128 wiersze
4.0 KiB
YAML
Czysty Zwykły widok Historia

# 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
2020-11-11 00:34:09 +00:00
APT_CACHE_DIR: $CI_PROJECT_DIR/.cache/apt
NPM_CONFIG_CACHE: $CI_PROJECT_DIR/.cache/npm
GCLOUD_SERVICE_ACCOUNT: /dev/null
2020-11-12 06:40:44 +00:00
GCLOUD_RELEASE_DEPLOY_PATH: gs://download.gridtracker.org/release/$CI_COMMIT_TAG
GCLOUD_TESTING_DEPLOY_PATH: gs://download.gridtracker.org/testing/$CI_COMMIT_TAG
# nothing in this file should 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"
2020-11-10 22:54:15 +00:00
2020-11-11 05:57:38 +00:00
stages:
- build
- test
- package
2020-11-11 05:57:38 +00:00
- deploy
default:
image: ${DEFAULT_IMAGE}
interruptible: true
2020-11-12 06:40:44 +00:00
# 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"
2020-11-12 06:40:44 +00:00
# package binaries and create build artifacts that may be used in later stages
2020-11-11 00:34:09 +00:00
packaging:
stage: package
rules:
2020-11-12 06:40:44 +00:00
# only do this with a manual tag starting with v or test_
- if: '$CI_COMMIT_TAG =~ /^(v|test_).*/'
artifacts:
paths:
2020-11-11 18:35:41 +00:00
- build/
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 build/debian build/rpm
- dpkg --add-architecture i386
- apt-get -qq update
- apt-get -qq -o dir::cache::archives="$APT_CACHE_DIR" install -y npm wine wine32
2020-11-18 00:41:45 +00:00
- 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 .
2020-11-18 00:46:13 +00:00
- test `node version.js` = `dpkg-parsechangelog -S version` || (echo "package.nw/package.json and debian/changelog version mismatch"; exit 1)
- echo "Building native packages"
- npm install --prefer-offline
- npm run dist
- (cd dist ; mv *.zip *.exe *.7z *.json ../build)
- echo "Building Debian packages"
- dpkg-buildpackage -uc -us
- mv ../*.{deb,dsc,buildinfo,tar.xz,changes} build/debian/
- echo "Building RPM packages"
2020-11-18 01:28:38 +00:00
- rpmbuild -D "version `node ./version.js`" --build-in-place -bb gridtracker.spec
- mv $HOME/rpmbuild/RPMS/noarch/gridtracker-*.noarch.rpm build/rpm
2020-11-04 20:29:13 +00:00
2020-11-12 06:40:44 +00:00
# copy the assets over to our distribution storage (testing, tag = test_.*)
upload_testing:
stage: deploy
image: google/cloud-sdk:alpine
2020-11-12 06:40:44 +00:00
needs:
- job: packaging
rules:
2020-11-12 06:40:44 +00:00
- if: '$CI_COMMIT_TAG =~ /^(test_).*/'
script:
- gcloud auth activate-service-account --key-file $GCLOUD_SERVICE_ACCOUNT
2020-11-12 06:40:44 +00:00
- cd build; gsutil -m rsync -r . $GCLOUD_TESTING_DEPLOY_PATH
# copy the assets over to our distribution storage (full release, tag = v.*)
upload_release:
stage: deploy
image: google/cloud-sdk:alpine
needs:
- job: packaging
rules:
- if: '$CI_COMMIT_TAG =~ /^(v).*/'
script:
- gcloud auth activate-service-account --key-file $GCLOUD_SERVICE_ACCOUNT
- cd build; gsutil -m rsync -r . $GCLOUD_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:
2020-11-12 06:40:44 +00:00
- if: '$CI_COMMIT_TAG =~ /^(v).*/'
release:
2020-11-18 22:52:52 +00:00
tag_name: $CI_COMMIT_TAG
name: GridTracker $CI_COMMIT_TAG
description: GridTracker release $CI_COMMIT_TAG
ref: '$CI_COMMIT_SHA'
2020-11-18 22:52:52 +00:00
assets:
links:
- name: Binary images for $CI_COMMIT_TAG
url: https://download.gridtracker.org/release/$CI_COMMIT_TAG/
2020-11-12 06:40:44 +00:00
script:
- echo 'Release for $CI_COMMIT_TAG'