Skip to content
Snippets Groups Projects
.gitlab-ci.yml 3.92 KiB
Newer Older
.pre-deploy-uber-space-setup: &pre-deploy-uber-space-setup
  - apk add rsync openssh-client
  - eval $(ssh-agent -s)
  - echo "$CI_DEPLOYMENT_PRIVATE_KEY" | tr -d '\r' | ssh-add -
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh
  - echo "$UBERSPACE_KNOWN_HOST" >> ~/.ssh/known_hosts

.doc-changelist: &doc-changelist
  - docs/*
  - versioned_docs/*
  - versioned_sidebars/*
  - src/*
  - static/*
  - docusaurus.config.js
  - sidebars.js
  - versions.json
  - .gitlab-ci.yml
Jonas Gröger's avatar
Jonas Gröger committed
  - lint
  - build
  - upload
  - release
Jonas Gröger's avatar
Jonas Gröger committed
  image:
    name: $CI_REGISTRY/stoplight/spectral:latest
Jonas Gröger's avatar
Jonas Gröger committed
    entrypoint: [ "" ]
    - spectral lint spec/*.yml

  image: $CI_REGISTRY/node:current-alpine
  before_script:
    - npm install -g @apidevtools/swagger-cli
    - mkdir dist
  script:
    - cp metadata-schema/antragsmetadaten.schema.json dist/
    - swagger-cli bundle -t yaml -o dist/zustelldienst.yml spec/zustelldienst.yml
  artifacts:
    expose_as: 'Built API spec'
    paths:
      - dist/
    expire_in: 30 days
  stage: build
  image: $CI_REGISTRY/node:current-alpine
    GIT_BRANCH: $CI_COMMIT_REF_NAME
    - export DOCUSAURUS_BASE_URL="/fit-connect/" && [[ "$CI_COMMIT_REF_NAME" != "main" ]] && export DOCUSAURUS_BASE_URL="/preview/fit-connect/$CI_COMMIT_REF_SLUG/"
    - yarn build
  artifacts:
    expose_as: 'Built Documentation'
    paths:
      - build/
    expire_in: 30 days
    - changes: *doc-changelist
upload:doc:review:
  stage: upload
  image: $CI_REGISTRY/alpine:latest
  needs: [ 'build:doc' ]
  environment:
    name: review/$CI_COMMIT_REF_NAME
    on_stop: stop:doc:review
    auto_stop_in: 2 week
    url:  https://docs.fitko.de/preview/fit-connect/$CI_COMMIT_REF_SLUG
    - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
      changes: *doc-changelist
  before_script:
    - *pre-deploy-uber-space-setup
  script:
    - rsync -rLvz --size-only --checksum -e "ssh -o CheckHostIP=no" --ipv4 --progress ./build/. fitko@dorado.uberspace.de:html/preview/fit-connect/$CI_COMMIT_REF_SLUG

upload:doc:production:
  stage: upload
  image: $CI_REGISTRY/alpine:latest
  needs: [ 'build:doc' ]
  environment:
    name: production
    url: https://docs.fitko.de/fit-connect/
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
      changes: *doc-changelist
  before_script:
    - *pre-deploy-uber-space-setup
  script:
    - rsync -rLvz --size-only --checksum -e "ssh -o CheckHostIP=no" --ipv4 --progress ./build/. fitko@dorado.uberspace.de:html/fit-connect
  stage: upload
  image: $CI_REGISTRY/alpine:latest
  needs: [ 'build:spec' ]
  only:
    refs:
      - tags
    variables:
      - $CI_COMMIT_TAG
  before_script:
  script:
Jonas Gröger's avatar
Jonas Gröger committed
    - sed -i "s,API_VERSION,$CI_COMMIT_TAG,g" dist/zustelldienst.yml
    - sed -i "s,API_VERSION,$CI_COMMIT_TAG,g" dist/antragsmetadaten.schema.json
    - rsync -rLvz --size-only --checksum -e "ssh -o CheckHostIP=no" --ipv4 --progress ./dist/. fitko@dorado.uberspace.de:html/$CI_COMMIT_TAG/
stop:doc:review:
  stage: .post
  environment:
    name: review/$CI_COMMIT_REF_NAME
    action: stop
  rules:
    - if: $CI_MERGE_REQUEST_ID
      when: manual
  before_script:
    - *pre-deploy-uber-space-setup
  script:
    - ssh fitko@dorado.uberspace.de "rm -rf html/preview/fit-connect/$CI_COMMIT_REF_SLUG"

#release-new-api-version:
#  stage: release
#  image: registry.gitlab.com/gitlab-org/release-cli:latest
#  needs:
#    - job: build
#      artifacts: true
#  only:
#    refs:
Jonas Gröger's avatar
Jonas Gröger committed
#      - main
#      - tags
#    variables:
#      - $CI_COMMIT_TAG
#  script:
#    - release-cli -v
#    - echo "Releasing new API version"
#    - release-cli create --name "$CI_COMMIT_TAG" --description './docs/changelog.md'
#      --tag-name $CI_COMMIT_TAG
#      --assets-link '{"name":"combined-$CI_COMMIT_TAG","url":"https://fitko.uber.space/$CI_COMMIT_TAG/zustelldienst.yml"}'