.gitlab-ci.yml 2.73 KiB
Newer Older
stages:
  - build
  - package

image:                  parity/rust:gitlab-ci

cache:
  key:                  "${CI_JOB_NAME}"
  paths:
    - ${CI_PROJECT_DIR}/target/
    - ${CI_PROJECT_DIR}/cargo/
    - node_modules/
    - .cache
    - $HOME/.cache

.releaseable_branches:  # list of git refs for building GitLab artifacts (think "pre-release binaries")
  only:                 &releaseable_branches
Amaury Martiny's avatar
Amaury Martiny committed
    - schedules # Our nightly builds from schedule, on `master`
    - /^v[0-9]+\.[0-9]+\.[0-9]+$/ # Our version tags
    - ci-package
    - master

.publishable_branches:  # list of git refs for publishing builds to the "production" locations
  only:                 &publishable_branches
    - schedules # Our nightly builds from schedule, on `master`
    - /^v[0-9]+\.[0-9]+\.[0-9]+$/ # Our version tags
    - ci-package
    - master

before_script:
  - npm install
  - export VERSION=$(node -p "require('./package.json').version")
Amaury Martiny's avatar
Amaury Martiny committed
# Stage - build
build:
  stage:                build
  script:
    - scripts/lint.sh
    - scripts/test.sh
    - scripts/build.sh
  tags:
    - rust-stable

# Stage package binaries
package:binaries:linux:
  stage:                package
  only:                 *releaseable_branches
  script:
Amaury Martiny's avatar
Amaury Martiny committed
    - npm run release --linux
  artifacts:
    name:               "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
    when:               on_success
    expire_in:          1 week
    paths:
      - dist/*.deb
      - dist/*.snap
      - dist/*.AppImage
      - dist/*.xz
  tags:
    - rust-stable
package:binaries:mac:
  stage:                package
  only:                 *releaseable_branches
  script:
    - export ELECTRON_BUILDER_ALLOW_UNRESOLVED_DEPENDENCIES=true
    - npm run release -- --mac
  artifacts:
    name:               "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
    when:               on_success
    expire_in:          1 week
    paths:
      - dist/*.pkg
  tags:
    - osx
package:binaries:windows:
  stage:                package
  only:                 *releaseable_branches
  image:                electronuserland/builder:wine
  script:
    - npm run release -- --win
  artifacts:
    name:               "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
    when:               on_success
    expire_in:          1 week
    paths:
      - dist/*.exe
  tags:
    - rust-stable
Amaury Martiny's avatar
Amaury Martiny committed
# Stage publish
Amaury Martiny's avatar
Amaury Martiny committed
  stage:                publish
  only:                 *publishable_branches
  image:                snapcore/snapcraft:stable
  dependencies:
    - package:binaries:linux
  variables:
    BUILD_ARCH: amd64
  before_script:
    - export VERSION=$(grep -m 1 "version" package.json | awk '{print $2}' | tr -d '",' | tr -d "\n")&&echo "Version:" $VERSION
  script:
    - scripts/publish-snap.sh
  tags:
    - rust-stable
#gitsync enabled