IdHub/.gitea/workflows/ci-pipeline.yaml

151 lines
3.8 KiB
YAML

name: Django CI Pipeline
on:
push:
branches:
- main
- release
- testing-pipeline
pull_request:
branches:
- main
- release
jobs:
test:
runs-on: self-hosted
env:
SECRET_KEY: "t3st-dummy-s3cr3t-k3y"
STATIC_ROOT: "tmp/static/"
MEDIA_ROOT: "tmp/media/"
DOMAIN: "testserver"
steps:
- uses: actions/checkout@v4
- name: Check version and distribution
run: |
uname -srm
cat /etc/os-release
- name: Install python3-venv
id: install
run: |
apt-get update
apt-get install python3 python3-venv python3-pip -y
- name: Check Python version
run: |
python3 --version
- name: Create virtual environment
run: |
python3 -m venv venv
source venv/bin/activate
echo "Virtual environment created successfully"
# https://docs.github.com/en/actions/learn-github-actions/contexts#steps-context
if: steps.install.outcome == 'success'
- name: Get DIDKit wheel
id: didkit
run: |
wget -O didkit-0.3.2-cp311-cp311-manylinux_2_34_x86_64.whl https://gitea.pangea.org/api/v1/repos/trustchain-oc1-orchestral/ssikit_trustchain/raw/didkit-0.3.2-cp311-cp311-manylinux_2_34_x86_64.whl?token=${{ secrets.FILE_GETTER_TOKEN }}
echo "Successfully downloaded DIDkit"
- name: Install dependencies
run: |
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
if: steps.didkit.outcome == 'success'
- name: Run tests
run: |
source venv/bin/activate
coverage run manage.py test
# python manage.py test
#
- name: Coverage report
run: |
coverage report
end2end-tests:
needs: test
runs-on: self-hosted
steps:
- name: Checkout E2E tests repo
uses: actions/checkout@v4
with:
repository: trustchain-oc1-orchestral/IdHub_E2E_testing
ref: master
token: ${{ secrets.SSIKIT_TOKEN }}
- name: Install dependencies
run: |
npm ci
- name: Install Playwright browsers
run: |
npx playwright install --with-deps
- name: Run Playwright tests
run: |
npx playwright test
ssikit-tests:
needs: test
runs-on: self-hosted
steps:
- name: Checkout SSIKit repo
uses: actions/checkout@v4
with:
repository: trustchain-oc1-orchestral/ssikit_trustchain
submodules: true
ref: master
# might not be needed
token: ${{ secrets.SSIKIT_TOKEN }}
- name: Install python3-venv (if not already installed)
run: |
apt-get update
apt-get install python3 python3-venv python3-pip -y
- name: Setup Python environment
run: |
python3 -m venv venv
source venv/bin/activate
- name: Install dependencies
run: |
source venv/bin/activate
pip install --upgrade pip
# Install any additional dependencies required for SSIKit tests here
pip install -r requirements.txt
- name: Execute SSIKit tests
run: |
source venv/bin/activate
python main.py
deploy:
needs: test
runs-on: self-hosted
steps:
- uses: actions/checkout@v4
- name: Trigger Remote Script
run: |
response=$(curl -s -o /dev/null -w "%{http_code}" -X POST http://45.150.187.54:5000/trigger-script -H "Authorization: SecretToken")
if [ "$response" -ne 200 ]; then
echo "Script execution failed with HTTP status $response"
exit 1
else
echo "Script execution successful"
exit 0
fi
if: success() && github.ref == 'refs/heads/release'