-
Notifications
You must be signed in to change notification settings - Fork 25
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Migrate CI workflow to E2E self-hosted runners
- Loading branch information
Showing
2 changed files
with
104 additions
and
62 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,111 @@ | ||
name: ReSDK E2E | ||
|
||
on: | ||
pull_request: | ||
workflow_dispatch: | ||
workflow_call: | ||
|
||
env: | ||
REGISTRY: ${{ vars.REGISTRY || '396487289173.dkr.ecr.eu-west-1.amazonaws.com' }} | ||
AWS_REGION: ${{ vars.AWS_REGION || 'eu-west-1' }} | ||
K3D_BASE_IMAGE: genialis/ci/k3d-base:v1.28.8-k3s1 | ||
GENESIS_POSTGRESQL_NAME: genialis-base | ||
GENESIS_POSTGRESQL_USER: genialis-base | ||
GENESIS_POSTGRESQL_PASSWORD: genialis-base | ||
GENESIS_POSTGRESQL_PORT: 55434 | ||
GENESIS_REDIS_PORT: 56381 | ||
GENESIS_RESDK_PATH: ".." | ||
GENESIS_REST_THROTTLING: '{"login": "100000/hour", "credentials": "100000/hour", "email": "100000/hour"}' | ||
|
||
jobs: | ||
e2e: | ||
runs-on: e2e-runner | ||
runs-on: ${{ vars.RUNNER_SCALE_SET }} | ||
|
||
steps: | ||
- run: echo "Running." | ||
- name: Checkout resolwe-bio-py | ||
uses: actions/checkout@v4 | ||
|
||
- name: Reset Docker credentials store | ||
run: | | ||
# Docker is configured to use the ecr credentials helper, | ||
# which clashes with the aws-actions/configure-aws-credentials action. | ||
rm -f ~/.docker/config.json | ||
- name: Login to ECR | ||
uses: docker/login-action@v3 | ||
with: | ||
registry: ${{ vars.REGISTRY }} | ||
|
||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v3 | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
|
||
- name: Show versions | ||
run: | | ||
helmfile --version | ||
helm version | ||
kubectl version --client | ||
sops --version | ||
velero version | ||
- name: Create K3d cluster | ||
run: | | ||
aws ecr get-login-password --region ${{ vars.AWS_REGION }} | docker login --username AWS --password-stdin ${{ vars.REGISTRY }} | ||
# Fix authentication error by prefetching k3d base image | ||
docker pull ${{ vars.REGISTRY }}/${{ env.K3D_BASE_IMAGE }} | ||
# TODO: Add a way to override k3d-config.yaml base image tag | ||
k3d cluster create --config e2e/k3d/k3d-config.yaml | ||
- name: Add hosts to /etc/hosts | ||
run: | | ||
sudo echo "172.18.0.2 ws.local.genialis.io local.genialis.io" | sudo tee -a /etc/hosts | ||
- name: Deploy Helm charts | ||
run: | | ||
cd /workdir | ||
helmfile -e local -f helmfile-service.yaml sync | ||
- name: Authorize cluster to pull private repositories | ||
run: | | ||
kubectl config set-context --current --namespace=default | ||
kubectl get pods | ||
kubectl wait pods -l app=pod-identity-webhook --for condition=Ready --timeout=1m | ||
kubectl get cronjobs | ||
kubectl create job --from=cronjob/ecr-auth -n default ecr-auth-manual | ||
kubectl wait --for=condition=complete --timeout=1m job/ecr-auth-manual | ||
kubectl rollout restart deployment -n velero velero | ||
- name: Restore Velero edge snapshot | ||
run: | | ||
echo "List backups" | ||
velero backup get | ||
echo "Restore" | ||
velero restore create --include-namespaces default --from-backup edge --wait | ||
echo "Get restore" | ||
velero restore get | ||
RESTORE_NAME=$(velero restore get | grep edge | awk '{print $1}') | ||
echo "Describe restore" | ||
velero restore describe $RESTORE_NAME | ||
echo "Logs restore" | ||
velero restore logs $RESTORE_NAME | ||
- name: Try the cluster | ||
run: | | ||
kubectl wait --for=condition=available --timeout=1200s -n default deployment/postgres | ||
kubectl rollout restart deployment asgi-server channels-manager listener background-task uploader | ||
kubectl wait --for=condition=available --timeout=1200s --all deployments | ||
kubectl get pods -A | ||
kubectl get pvc | ||
kubectl get pv | ||
- name: Test curl | ||
run: | | ||
ping local.genialis.io -c 1 | ||
- name: Run tests | ||
run: | | ||
# Make sure `python` refers to the tox environment's Python | ||
export PATH=`pwd`/.tox/py310-e2e-resdk/bin:$PATH | ||
tox --skip-missing-interpreters false -e py310-e2e-resdk |