mirror of
https://github.com/zed-industries/zed.git
synced 2024-10-26 00:19:46 +00:00
bf666af3a2
This PR makes Clippy deny all warnings across the workspace. We now enumerate all of the rules that have violations and temporarily allow them, with the goal being to drive the list down over time. On Windows we don't yet use `--deny warnings`, as the Windows build still has some warnings. Release Notes: - N/A
131 lines
3.6 KiB
YAML
131 lines
3.6 KiB
YAML
name: Publish Collab Server Image
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- collab-production
|
|
- collab-staging
|
|
|
|
env:
|
|
DOCKER_BUILDKIT: 1
|
|
DIGITALOCEAN_ACCESS_TOKEN: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
|
|
|
|
jobs:
|
|
style:
|
|
name: Check formatting and Clippy lints
|
|
runs-on:
|
|
- self-hosted
|
|
- test
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v4
|
|
with:
|
|
clean: false
|
|
submodules: "recursive"
|
|
fetch-depth: 0
|
|
|
|
- name: Run style checks
|
|
uses: ./.github/actions/check_style
|
|
|
|
- name: Run clippy
|
|
run: cargo xtask clippy
|
|
|
|
tests:
|
|
name: Run tests
|
|
runs-on:
|
|
- self-hosted
|
|
- test
|
|
needs: style
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v4
|
|
with:
|
|
clean: false
|
|
submodules: "recursive"
|
|
fetch-depth: 0
|
|
|
|
- name: Install cargo nextest
|
|
shell: bash -euxo pipefail {0}
|
|
run: |
|
|
cargo install cargo-nextest
|
|
|
|
- name: Limit target directory size
|
|
shell: bash -euxo pipefail {0}
|
|
run: script/clear-target-dir-if-larger-than 100
|
|
|
|
- name: Run tests
|
|
shell: bash -euxo pipefail {0}
|
|
run: cargo nextest run --package collab --no-fail-fast
|
|
|
|
publish:
|
|
name: Publish collab server image
|
|
needs:
|
|
- style
|
|
- tests
|
|
runs-on:
|
|
- self-hosted
|
|
- deploy
|
|
steps:
|
|
- name: Add Rust to the PATH
|
|
run: echo "$HOME/.cargo/bin" >> $GITHUB_PATH
|
|
|
|
- name: Sign into DigitalOcean docker registry
|
|
run: doctl registry login
|
|
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v4
|
|
with:
|
|
clean: false
|
|
submodules: "recursive"
|
|
|
|
- name: Build docker image
|
|
run: docker build . --build-arg GITHUB_SHA=$GITHUB_SHA --tag registry.digitalocean.com/zed/collab:$GITHUB_SHA
|
|
|
|
- name: Publish docker image
|
|
run: docker push registry.digitalocean.com/zed/collab:${GITHUB_SHA}
|
|
|
|
- name: Prune Docker system
|
|
run: docker system prune --filter 'until=72h' -f
|
|
|
|
deploy:
|
|
name: Deploy new server image
|
|
needs:
|
|
- publish
|
|
runs-on:
|
|
- self-hosted
|
|
- deploy
|
|
|
|
steps:
|
|
- name: Sign into Kubernetes
|
|
run: doctl kubernetes cluster kubeconfig save --expiry-seconds 600 ${{ secrets.CLUSTER_NAME }}
|
|
|
|
- name: Start rollout
|
|
run: |
|
|
set -eu
|
|
if [[ $GITHUB_REF_NAME = "collab-production" ]]; then
|
|
export ZED_KUBE_NAMESPACE=production
|
|
elif [[ $GITHUB_REF_NAME = "collab-staging" ]]; then
|
|
export ZED_KUBE_NAMESPACE=staging
|
|
else
|
|
echo "cowardly refusing to deploy from an unknown branch"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Deploying collab:$GITHUB_SHA to $ZED_KUBE_NAMESPACE"
|
|
|
|
source script/lib/deploy-helpers.sh
|
|
export_vars_for_environment $ZED_KUBE_NAMESPACE
|
|
|
|
export ZED_DO_CERTIFICATE_ID=$(doctl compute certificate list --format ID --no-header)
|
|
export ZED_IMAGE_ID="registry.digitalocean.com/zed/collab:${GITHUB_SHA}"
|
|
|
|
export ZED_SERVICE_NAME=collab
|
|
envsubst < crates/collab/k8s/collab.template.yml | kubectl apply -f -
|
|
kubectl -n "$ZED_KUBE_NAMESPACE" rollout status deployment/$ZED_SERVICE_NAME --watch
|
|
echo "deployed ${ZED_SERVICE_NAME} to ${ZED_KUBE_NAMESPACE}"
|
|
|
|
export ZED_SERVICE_NAME=api
|
|
envsubst < crates/collab/k8s/collab.template.yml | kubectl apply -f -
|
|
kubectl -n "$ZED_KUBE_NAMESPACE" rollout status deployment/$ZED_SERVICE_NAME --watch
|
|
echo "deployed ${ZED_SERVICE_NAME} to ${ZED_KUBE_NAMESPACE}"
|