# kind: pipeline # type: docker # name: server_build_and_test # # trigger: # branch: # - main # event: # - push # # steps: # - name: build_server # image: node # commands: # - npm ci # - npm run build -w @calchat/shared # - npm run build -w @calchat/server # # - name: jest_server # image: node # commands: # - npm run test -w @calchat/server # # --- # # kind: pipeline # type: docker # name: check_for_formatting # # trigger: # branch: # - main # event: # - push # # steps: # - name: format_check # image: node # commands: # - npm ci # - npm run check_format # # --- kind: pipeline type: docker name: deploy_latest trigger: branch: - main event: - push steps: - name: upload_latest image: plugins/docker settings: registry: gitea.gilmour109.de repo: gitea.gilmour109.de/gilmour109/calchat-server dockerfile: apps/server/docker/Dockerfile tags: - latest - ${DRONE_COMMIT_SHA:0:8} username: from_secret: gitea_username password: from_secret: gitea_password - name: deploy_to_vps image: appleboy/drone-ssh settings: host: - 10.0.0.1 username: root password: from_secret: vps_ssh_password envs: - gitea_username - gitea_password port: 22 command_timeout: 10m script: - docker login -u $GITEA_USERNAME -p $GITEA_PASSWORD gitea.gilmour109.de - docker pull gitea.gilmour109.de/gilmour109/calchat-server:latest - docker compose -f /root/calchat-mongo/docker-compose.yml up -d - name: deploy_test_backend image: gitea.gilmour109.de/gilmour109/e2e-tools:latest environment: K3S_SSH_PASSWORD: from_secret: k3s_ssh_password commands: - export NAME=e2e$(echo $DRONE_COMMIT_SHA | head -c 8) - export TAG=$(echo $DRONE_COMMIT_SHA | head -c 8) - export COMMIT=$DRONE_COMMIT_SHA - envsubst < kubernetes/manifest.yml > /tmp/e2e-manifest.yml - sshpass -p "$K3S_SSH_PASSWORD" scp /tmp/e2e-manifest.yml debian@192.168.178.201:/tmp/e2e-manifest.yml - sshpass -p "$K3S_SSH_PASSWORD" ssh debian@192.168.178.201 "sudo kubectl apply -f /tmp/e2e-manifest.yml" - sshpass -p "$K3S_SSH_PASSWORD" ssh debian@192.168.178.201 "sudo kubectl wait --for=condition=available --timeout=120s deployment/calchat-server-$NAME" - name: create_e2e_vm image: gitea.gilmour109.de/gilmour109/e2e-tools:latest environment: TF_VAR_run_id: ${DRONE_BUILD_NUMBER} TF_VAR_proxmox_password: from_secret: proxmox_password TF_VAR_clone_vm_password: from_secret: e2e_vm_password AWS_ACCESS_KEY_ID: from_secret: tofu_garage_access_key AWS_SECRET_ACCESS_KEY: from_secret: tofu_garage_secret_key commands: - cd tofu/e2e - tofu init - tofu apply -auto-approve - name: run_e2e_tests image: gitea.gilmour109.de/gilmour109/e2e-tools:latest environment: E2E_VM_PASSWORD: from_secret: e2e_vm_password commands: - export VM_IP=192.168.178.$((211 + DRONE_BUILD_NUMBER % 44)) - export RUN_ID=$(echo $DRONE_COMMIT_SHA | head -c 8) - export API_URL="http://e2e$${RUN_ID}.192.168.178.201.nip.io" - bash scripts/run-e2e.sh "$VM_IP" "$API_URL" "https://gitea.gilmour109.de/gilmour109/calchat.git" "$DRONE_COMMIT_SHA" "$E2E_VM_PASSWORD" - name: destroy_e2e_vm image: gitea.gilmour109.de/gilmour109/e2e-tools:latest environment: TF_VAR_run_id: ${DRONE_BUILD_NUMBER} TF_VAR_proxmox_password: from_secret: proxmox_password TF_VAR_clone_vm_password: from_secret: e2e_vm_password AWS_ACCESS_KEY_ID: from_secret: tofu_garage_access_key AWS_SECRET_ACCESS_KEY: from_secret: tofu_garage_secret_key commands: - cd tofu/e2e - tofu init - tofu destroy -auto-approve when: status: - success - failure - name: cleanup_k3s image: gitea.gilmour109.de/gilmour109/e2e-tools:latest environment: K3S_SSH_PASSWORD: from_secret: k3s_ssh_password commands: - export NAME=e2e$(echo $DRONE_COMMIT_SHA | head -c 8) - sshpass -p "$K3S_SSH_PASSWORD" ssh debian@192.168.178.201 "sudo kubectl delete all,ingress -l deploy-name=$NAME --ignore-not-found" when: status: - success - failure - name: build_apk image: gitea.gilmour109.de/gilmour109/eas-build:latest environment: EXPO_TOKEN: from_secret: expo_token commands: - npm ci - npm run build -w @calchat/shared - npm run -w @calchat/client build:apk when: status: - success - name: upload_apk image: plugins/s3 settings: endpoint: https://garage.gilmour109.de bucket: calchat-releases access_key: from_secret: calchat_drone_garage_access_key secret_key: from_secret: calchat_drone_garage_secret_key source: apps/client/calchat.apk target: / region: garage path_style: true when: status: - success # depends_on: # - server_build_and_test # - check_for_formatting --- kind: pipeline type: docker name: upload_tag trigger: event: - tag steps: - name: upload_tag image: plugins/docker settings: registry: gitea.gilmour109.de repo: gitea.gilmour109.de/gilmour109/calchat-server dockerfile: apps/server/docker/Dockerfile tags: - ${DRONE_TAG} username: from_secret: gitea_username password: from_secret: gitea_password - name: deploy_to_k3s image: appleboy/drone-ssh settings: host: - 192.168.178.201 username: debian password: from_secret: k3s_ssh_password envs: - drone_tag - drone_commit_sha port: 22 command_timeout: 10m script: - export TAG=$DRONE_TAG - export NAME=$(echo $DRONE_TAG | tr -d '.') - export COMMIT=$DRONE_COMMIT_SHA - envsubst < /home/debian/manifest.yml | sudo kubectl apply -f - - name: create_e2e_vm image: gitea.gilmour109.de/gilmour109/e2e-tools:latest environment: TF_VAR_run_id: ${DRONE_BUILD_NUMBER} TF_VAR_proxmox_password: from_secret: proxmox_password TF_VAR_clone_vm_password: from_secret: e2e_vm_password AWS_ACCESS_KEY_ID: from_secret: tofu_garage_access_key AWS_SECRET_ACCESS_KEY: from_secret: tofu_garage_secret_key commands: - cd tofu/e2e - tofu init - tofu apply -auto-approve - name: run_e2e_tests image: gitea.gilmour109.de/gilmour109/e2e-tools:latest environment: E2E_VM_PASSWORD: from_secret: e2e_vm_password commands: - export VM_IP=192.168.178.$((211 + DRONE_BUILD_NUMBER % 44)) - export TAG_NAME=$(echo $DRONE_TAG | tr -d '.') - export API_URL="http://$${TAG_NAME}.192.168.178.201.nip.io" - bash scripts/run-e2e.sh "$VM_IP" "$API_URL" "https://gitea.gilmour109.de/gilmour109/calchat.git" "$DRONE_COMMIT_SHA" "$E2E_VM_PASSWORD" - name: notify_failure image: drillster/drone-email settings: host: from_secret: smtp_host username: from_secret: smtp_username password: from_secret: smtp_password from: drone@gilmour109.de recipients: - liwa7755@bht-berlin.de subject: "E2E Tests failed: ${DRONE_REPO} ${DRONE_TAG} #${DRONE_BUILD_NUMBER}" body: | E2E tests failed for tag ${DRONE_TAG} (commit ${DRONE_COMMIT_SHA:0:8}). Build: ${DRONE_BUILD_LINK} when: status: - failure - name: destroy_e2e_vm image: gitea.gilmour109.de/gilmour109/e2e-tools:latest environment: TF_VAR_run_id: ${DRONE_BUILD_NUMBER} TF_VAR_proxmox_password: from_secret: proxmox_password TF_VAR_clone_vm_password: from_secret: e2e_vm_password AWS_ACCESS_KEY_ID: from_secret: tofu_garage_access_key AWS_SECRET_ACCESS_KEY: from_secret: tofu_garage_secret_key commands: - cd tofu/e2e - tofu init - tofu destroy -auto-approve when: status: - success - failure - name: build_apk image: gitea.gilmour109.de/gilmour109/eas-build:latest environment: EXPO_TOKEN: from_secret: expo_token commands: - npm ci - npm run build -w @calchat/shared - npm run -w @calchat/client build:apk when: status: - success - name: release_apk image: plugins/gitea-release settings: api_key: from_secret: gitea_token base_url: https://gitea.gilmour109.de files: - calchat.apk title: ${DRONE_TAG} when: status: - success