Skip to content
Snippets Groups Projects
.gitlab-ci.yml 3.58 KiB
Newer Older
  - remote: https://open.greenhost.net/stackspin/stackspin/-/raw/main/.gitlab/ci_templates/helm_package.yml
Varac's avatar
Varac committed
  - remote: https://open.greenhost.net/stackspin/stackspin/-/raw/main/.gitlab/ci_templates/dummy_job.yml
  - template: 'Workflows/MergeRequest-Pipelines.gitlab-ci.yml'
    name: alpine/k8s:1.25.0
    entrypoint: ["/bin/sh", "-c"]
  before_script:
    - kubectl config get-contexts
    - kubectl config use-context stackspin/kubernetes-agent-setup:stackspin-k8s-agent

      - package.json
      - package-lock.json
Maarten de Waard's avatar
Maarten de Waard committed
      - values-local.yaml.example
      - values.yaml
      - Chart.yaml
Varac's avatar
Varac committed
      - .gitlab-ci.yml
  - install-helm-chart
  - test-helm-chart
  - package-helm-chart
  - release-helm-chart
Varac's avatar
Varac committed
  - dummy
variables:
  CHART_NAME: nextcloud-onlyoffice
delete_namespace:
  stage: lint-helm-chart
    # Schedule namespace for removal. `--wait=false` is used here because
    # the namespace deletion is repeated in the `install-helmrelease` job.
    # Namespace removal fails if the namespace does not exist (yet),
    # that's not a problem
    - kubectl delete namespace "nc$CI_MERGE_REQUEST_IID" --wait=false || true
    - .use_kubernetes
    - .chart_changes_rules
install-helmrelease:
  stage: install-helm-chart
  needs:
    # This job contains the `helm dep` artifacts
    - job: lint-helm
  script:
    - cp values-local.yaml.example values-ci.yaml
    # This sets the domains to files-MR_ID.gitlab.stackspin.net and
    # office-MR_ID.gitlab.stackspin.net
    - sed -i "s/\.your\.domain/-nc$CI_MERGE_REQUEST_IID.gitlab.stackspin.net/" values-ci.yaml
    # Make sure TLS certificate secrets for different MRs do not clash
    - sed -i "s/files-cert/files-cert-nc$CI_MERGE_REQUEST_IID/" values-ci.yaml
    - sed -i "s/office-cert/office-cert-nc$CI_MERGE_REQUEST_IID/" values-ci.yaml
Varac's avatar
Varac committed
      export message="$(echo $CI_COMMIT_TITLE | tr '!#$%^&*()=+{}[]:"|<>?,./;' '-')"
      echo -e "tests:\n  cypress:\n    projectId: \"$CYPRESS_PROJECT_ID\"\n    recordKey: \"$CYPRESS_RECORD_KEY\"" >> values-ci.yaml
Varac's avatar
Varac committed
      echo -e "    commitInfo:\n      branch: \"$CI_COMMIT_REF_SLUG\"\n      message: \"$message\"\n      author: \"$CI_COMMIT_AUTHOR\"\n      sha: \"$CI_COMMIT_SHORT_SHA\"" \
    - cat values-ci.yaml
Varac's avatar
Varac committed
    - time kubectl delete --wait=true namespace "nc$CI_MERGE_REQUEST_IID" || true
    - time helm --debug install --timeout 20m --create-namespace -n nc$CI_MERGE_REQUEST_IID --wait "nc$CI_MERGE_REQUEST_IID" . -f values-ci.yaml
    name: helmrelease/nc$CI_MERGE_REQUEST_IID
    url: https://files-nc$CI_MERGE_REQUEST_IID.gitlab.stackspin.net
    on_stop: post-install-delete-helmrelease
  artifacts:
    paths:
      - ./values-ci.yaml
    expire_in: 1 week
    when: always

post-install-delete-helmrelease:
  stage: install-helm-chart
  script:
    # namespace removal fails if the namespace does not exist,
    # that's not a problem
    - kubectl delete namespace "nc$CI_MERGE_REQUEST_IID" || true
  extends:
    - .use_kubernetes
    - .chart_changes_rules
  # Gets triggered by on_stop of install-helmrelease, or manually
  when: manual
  environment:
    name: helmrelease/nc$CI_MERGE_REQUEST_IID
    action: stop

test-helm-chart:
  stage: test-helm-chart
  script:
    - cd ${CHART_DIR:-"."}
    - helm test -n nc$CI_MERGE_REQUEST_IID --logs "nc$CI_MERGE_REQUEST_IID"