Skip to content
Snippets Groups Projects
.gitlab-ci.yml 2.53 KiB
workflow:
  rules:
    # only run when on the main repo
    - if: '$CI_PROJECT_ID == "3528"'
      when: always

.official-releases:
  rules:
    - if: $CI_COMMIT_TAG =~ /\A\d+\.\d+\.\d+/

stages:
  - build
  - upload
  - release

variables:
  FC_PREGMOD_ARCHIVE: "FC_pregmod_${CI_COMMIT_TAG}.zip"
  # precompiled / assets
  # the URLs are the same as inside the game, change both if updating
  WEBGL_NAME: "WebGL art assets"
  WEBGL_URL: "https://mega.nz/folder/CgRiQaxS#Cjok57jXZwQt-jP7zkRh2Q"
  RENDER_NAME: "Rendered imagepack (outdated)"
  RENDER_URL: "https://mega.nz/file/upoAlBaZ#EbZ5wCixxZxBhMN_ireJTXt0SIPOywO2JW9XzTIPhe0"

build:
  stage: build
  image: ggcr.io/pregmodfan/fc-pregmod/build
  cache:
    paths:
      - node_modules/
  rules:
    # official release
    - if: $CI_COMMIT_TAG =~ /\A\d+\.\d+\.\d+/
    # latest
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
  before_script:
    - npm update --no-audit --no-fund --omit=dev
  script:
    - npx gulp html --minify --release --ci
  artifacts:
    paths:
      - bin/FC_pregmod.html

upload:
  stage: upload
  image: ggcr.io/pregmodfan/fc-pregmod:megacmd
  extends: .official-releases
  script:
    - mega-login $MEGA_MAIL $MEGA_PWD
    - zip bin/$FC_PREGMOD_ARCHIVE bin/FC_pregmod.html
    - mega-put bin/$FC_PREGMOD_ARCHIVE /
    - echo "MEGA_URL=$(mega-export -a /$FC_PREGMOD_ARCHIVE | grep -o https.*)" >> variables.env
  artifacts:
    # carry MEGA_URL over to the release job
    reports:
      dotenv: variables.env

release:
  stage: release
  image: registry.gitlab.com/gitlab-org/release-cli:latest
  extends: .official-releases
  script:
    # extract changes from changelog
    # get line of version header + 1
    - START=$(awk 'match($1,"##") && match($2,v){print NR+1; exit}' v="0.10.7.1-$CI_COMMIT_TAG" CHANGELOG.md)
    # drop everything above the release including the release header
    - tail -n +$START CHANGELOG.md > tmp
    # get line of next version header - 1
    - END=$(awk 'match($1,"##") && match($2,v){print NR-1; exit}' v="0.10.7.1" tmp)
    # drop everything after current release
    - DESCRIPTION=$(head -n $END tmp)
    # create release
    # assets are displayed in inverse order to how they are defined here
    - |
      release-cli create --name "$CI_COMMIT_TAG" --description "$DESCRIPTION" \
        --tag-name "$CI_COMMIT_TAG" \
        --assets-link "{\"name\":\"${RENDER_NAME}\",\"url\":\"${RENDER_URL}\"}" \
        --assets-link "{\"name\":\"${WEBGL_NAME}\",\"url\":\"${WEBGL_URL}\"}" \
        --assets-link "{\"name\":\"${FC_PREGMOD_ARCHIVE}\",\"url\":\"${MEGA_URL}\"}"