This commit is contained in:
57
.gitea/workflows/ci.yml
Normal file
57
.gitea/workflows/ci.yml
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- Django
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ci-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docker-ci:
|
||||||
|
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && contains(github.event.head_commit.message, '[ci]'))
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 40
|
||||||
|
env:
|
||||||
|
DJANGO_SECRET_KEY: ${{ secrets.DJANGO_SECRET_KEY }}
|
||||||
|
DJANGO_DEBUG: "False"
|
||||||
|
DJANGO_ALLOWED_HOSTS: "127.0.0.1,localhost"
|
||||||
|
IMAGE_NAME: achievement_inputing_ci
|
||||||
|
ES_IMAGE: docker.elastic.co/elasticsearch/elasticsearch:7.17.9
|
||||||
|
NET_NAME: ci-net
|
||||||
|
steps:
|
||||||
|
- name: Prepare Docker network
|
||||||
|
run: |
|
||||||
|
docker network inspect "$NET_NAME" >/dev/null 2>&1 || docker network create "$NET_NAME"
|
||||||
|
- name: Start Elasticsearch
|
||||||
|
run: |
|
||||||
|
docker run -d --rm --name es --network "$NET_NAME" -p 9200:9200 \
|
||||||
|
-e discovery.type=single-node \
|
||||||
|
-e xpack.security.enabled=false \
|
||||||
|
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
|
||||||
|
"$ES_IMAGE"
|
||||||
|
- name: Wait for Elasticsearch
|
||||||
|
run: |
|
||||||
|
for i in $(seq 1 60); do
|
||||||
|
if curl -sf http://localhost:9200 >/dev/null; then exit 0; fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
exit 1
|
||||||
|
- name: Build application image
|
||||||
|
run: |
|
||||||
|
docker build -t "$IMAGE_NAME" -f Dockerfile .
|
||||||
|
- name: Run checks and tests
|
||||||
|
run: |
|
||||||
|
docker run --rm --network "$NET_NAME" \
|
||||||
|
-e DJANGO_SECRET_KEY="$DJANGO_SECRET_KEY" \
|
||||||
|
-e DJANGO_DEBUG="$DJANGO_DEBUG" \
|
||||||
|
-e DJANGO_ALLOWED_HOSTS="$DJANGO_ALLOWED_HOSTS" \
|
||||||
|
-e ELASTICSEARCH_URL="http://es:9200" \
|
||||||
|
"$IMAGE_NAME" \
|
||||||
|
sh -lc "python manage.py migrate --noinput && python manage.py check --deploy && python -m compileall . && python manage.py collectstatic --noinput && python manage.py test"
|
||||||
|
- name: Stop Elasticsearch
|
||||||
|
run: |
|
||||||
|
docker rm -f es || true
|
||||||
Reference in New Issue
Block a user