Skip to content
Snippets Groups Projects
.gitlab-ci.yml 3.51 KiB
Newer Older
.ssh-setup: &ssh-setup
  - eval $(ssh-agent -s)
  - echo "$CI_DEPLOYMENT_PRIVATE_KEY" | tr -d '\r' | ssh-add -
  - echo "$UBERSPACE_KNOWN_HOST" >> ~/.ssh/known_hosts

include:
  - project: 'fit-connect/pipeline'
    ref: main
    file: 'workflows/no-duplicate-pipelines.gitlab-ci.yml'
Jonas Gröger's avatar
Jonas Gröger committed
  - build
Jonas Gröger's avatar
Jonas Gröger committed
  - upload
  - validate
build:
  stage: build
  image: ${CI_REGISTRY}/fit-connect/images/baseimage:latest
    - redocly bundle spec/submission-api.yaml -o dist/submission-api.yaml
  artifacts:
    expose_as: 'Built API spec'
    paths:
      - dist/
    expire_in: 1 day
Jonas Gröger's avatar
Jonas Gröger committed
  image:
    name: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/stoplight/spectral:6
Jonas Gröger's avatar
Jonas Gröger committed
    entrypoint: [ "" ]
    - spectral lint spec/submission-api.yaml --verbose --display-only-failures
    - spectral lint dist/submission-api.yaml --verbose --display-only-failures
variables:
  DOCS_SERVER: fitko@dorado.uberspace.de
  PREVIEW_LOCATION: preview.docs.fitko.dev/submission-api
  LIVE_LOCATION: schema.fitko.de/fit-connect/submission-api

upload-preview:
  stage: upload
  image: ${CI_REGISTRY}/fit-connect/images/baseimage:latest
  environment:
    name: review/$CI_COMMIT_REF_NAME
    on_stop: stop-preview
    auto_stop_in: 2 week
    url: https://$PREVIEW_LOCATION/$CI_COMMIT_REF_SLUG/
  rules:
    - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH
  before_script:
  script:
    - ssh -o CheckHostIP=no $DOCS_SERVER mkdir -p $PREVIEW_LOCATION/$CI_COMMIT_REF_SLUG/
    - rsync -Lvz -e "ssh -o CheckHostIP=no" ./ci/index.html            $DOCS_SERVER:$PREVIEW_LOCATION/$CI_COMMIT_REF_SLUG/
    - rsync -Lvz -e "ssh -o CheckHostIP=no" ./ci/rapidoc.js            $DOCS_SERVER:$PREVIEW_LOCATION/$CI_COMMIT_REF_SLUG/
    - rsync -Lvz -e "ssh -o CheckHostIP=no" ./dist/submission-api.yaml $DOCS_SERVER:$PREVIEW_LOCATION/$CI_COMMIT_REF_SLUG/
link-check:
  stage: validate
  variables:
    CRAWLER_URL: "https://schema.fitko.de/fit-connect/submission-api/"
    CRAWLER_DOMAIN: "schema.fitko.de"
    CRAWL_ONE_DOMAIN_ONLY: "yes"
  trigger:
    strategy: depend
    project: fit-connect/schema-link-checker
    branch: main

upload-latest-dev:
  image: ${CI_REGISTRY}/fit-connect/images/baseimage:latest
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
  before_script:
    - sed -i "s,API_VERSION,latest-dev,g" dist/submission-api.yaml
    - ssh -o CheckHostIP=no $DOCS_SERVER mkdir -p $LIVE_LOCATION/latest-dev/
    - rsync -Lvz -e "ssh -o CheckHostIP=no" ./dist/submission-api.yaml $DOCS_SERVER:$LIVE_LOCATION/latest-dev/
upload-release:
  image: ${CI_REGISTRY}/fit-connect/images/baseimage:latest
  before_script:
  script:
    - sed -i "s,API_VERSION,$CI_COMMIT_TAG,g" dist/submission-api.yaml

    - ssh -o CheckHostIP=no $DOCS_SERVER mkdir -p $LIVE_LOCATION/$CI_COMMIT_TAG/
    - rsync -Lvz -e "ssh -o CheckHostIP=no" ./dist/submission-api.yaml $DOCS_SERVER:$LIVE_LOCATION/$CI_COMMIT_TAG/

    - ssh -o CheckHostIP=no $DOCS_SERVER mkdir -p $LIVE_LOCATION/latest/
    - rsync -Lvz -e "ssh -o CheckHostIP=no" ./dist/submission-api.yaml $DOCS_SERVER:$LIVE_LOCATION/latest/
  stage: .post
  image: ${CI_REGISTRY}/fit-connect/images/baseimage:latest
  environment:
    name: review/$CI_COMMIT_REF_NAME
    action: stop
  needs:
    - upload-preview
  rules:
    - if: $CI_MERGE_REQUEST_ID
      when: manual
  before_script:
  script:
    - ssh $DOCS_SERVER "rm -rf $PREVIEW_LOCATION/$CI_COMMIT_REF_SLUG/"