--- variables: S3_ENDPOINT: "https://s3.embl.de" S3_BUCKET: "annelids" JBROWSE_HOSTNAME: "genomes-testing.arendt.embl.de" RELEASE_LABEL: "testing" INGRESS_CLASS: "internal-users" stages: - build - deploy - clean s3_access_test: stage: deploy image: minio/mc rules: - when: always # TODO change where necessary allow_failure: true # Don't care if we are not uploading anything yet before_script: - mc alias set genomes $S3_ENDPOINT $S3_ACCESS_KEY $S3_SECRET_KEY script: - mc ls genomes/$S3_BUCKET cluster_access_test: stage: deploy image: line/kubectl-kustomize:1.30.1-5.4.2 before_script: - echo $KUBECONFIG | base64 -d > /tmp/kubeconf - export KUBECONFIG=/tmp/kubeconf script: - kubectl config current-context rules: - when: always # TODO change where necessary build_base_jbrowse_config_file: stage: build image: gcr.io/kaniko-project/executor:debug-v0.21.0 before_script: # yamllint disable-line rule:line-length - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json script: - /kaniko/executor --cache=true --context $CI_PROJECT_DIR/image --dockerfile $CI_PROJECT_DIR/image/Dockerfile_base --destination $CI_REGISTRY_IMAGE:jbrowse2-base-$CI_COMMIT_SHORT_SHA - echo "Pushed $CI_REGISTRY_IMAGE:jbrowse2-base-$CI_COMMIT_SHORT_SHA" build_export_artifacts_via_inception: stage: build image: $CI_REGISTRY_IMAGE:jbrowse2-base-$CI_COMMIT_SHORT_SHA needs: - build_base_jbrowse_config_file script: - cp /app/annelids/index.html image/ - cp /app/annelids/config.json image/ artifacts: paths: - image/index.html - image/config.json build_nginx_with_jbrowse_config_file: stage: build image: gcr.io/kaniko-project/executor:debug-v0.21.0 needs: - build_base_jbrowse_config_file - build_export_artifacts_via_inception before_script: # yamllint disable-line rule:line-length - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json script: - echo "JBROWSE2_BASE='$CI_REGISTRY_IMAGE:jbrowse2-base-$CI_COMMIT_SHORT_SHA'" - /kaniko/executor --cache=true --context $CI_PROJECT_DIR/image --build-arg "JBROWSE2_BASE='$CI_REGISTRY_IMAGE:jbrowse2-base-$CI_COMMIT_SHORT_SHA'" --dockerfile $CI_PROJECT_DIR/image/Dockerfile_advanced --destination $CI_REGISTRY_IMAGE:jbrowse2-$CI_COMMIT_SHORT_SHA - echo "Destination follows" - echo $CI_REGISTRY_IMAGE:jbrowse2-$CI_COMMIT_SHORT_SHA build_export_advanced_artifacts_via_inception: stage: build image: $CI_REGISTRY_IMAGE:jbrowse2-base-$CI_COMMIT_SHORT_SHA needs: - build_nginx_with_jbrowse_config_file script: - cp /usr/share/nginx/html/config.json image/config_advanced.json artifacts: paths: - image/config_advanced.json deploy_to_k8s: stage: deploy image: dtzar/helm-kubectl:3.8.2 needs: - cluster_access_test - s3_access_test - build_nginx_with_jbrowse_config_file before_script: - echo $KUBECONFIG | base64 -d > /tmp/kubeconf - export KUBECONFIG=/tmp/kubeconf script: - echo "You are on branch $CI_COMMIT_REF_NAME" - envsubst < deployment/jbrowse2-dep.yml > deployment/jbrowse2-dep.yaml - cat deployment/jbrowse2-dep.yaml - kubectl apply -k deployment - kubectl -n $NS rollout restart deployment/jbrowse2-$RELEASE_LABEL - kubectl -n $NS wait --for=condition=available --timeout=60s deploy/jbrowse2-$RELEASE_LABEL - kubectl -n $NS rollout status deployment/jbrowse2-$RELEASE_LABEL rules: - if: '$CI_COMMIT_REF_NAME == "main"' variables: JBROWSE_HOSTNAME: "genomes.arendt.embl.de" RELEASE_LABEL: "prod" INGRESS_CLASS: "external-users" when: on_success - if: '$CI_COMMIT_REF_NAME == "dev"' variables: JBROWSE_HOSTNAME: "genomes-dev.arendt.embl.de" RELEASE_LABEL: "dev" INGRESS_CLASS: "internal-users" when: on_success - when: on_success clean_up_k8s_deployment: stage: clean image: dtzar/helm-kubectl:3.8.2 needs: - deploy_to_k8s before_script: - echo $KUBECONFIG | base64 -d > /tmp/kubeconf - export KUBECONFIG=/tmp/kubeconf script: - echo 'Failed job, deleting resources' - envsubst < deployment/jbrowse2-dep.yml > deployment/jbrowse2-dep.yaml - kubectl delete -k deployment rules: - if: '$CI_COMMIT_REF_NAME == "main"' when: on_failure variables: JBROWSE_HOSTNAME: "genomes.arendt.embl.de" RELEASE_LABEL: "prod" INGRESS_CLASS: "external-users" - if: '$CI_COMMIT_REF_NAME == "dev"' when: on_failure variables: JBROWSE_HOSTNAME: "genomes-dev.arendt.embl.de" RELEASE_LABEL: "dev" INGRESS_CLASS: "internal-users" - when: on_failure