chg: pkg: the original CI/CD workflow is restored - the work with tests is postponed #10
Some checks failed
Deploy to Production / test (push) Failing after 6s
Deploy to Production / deploy (push) Successful in 33s
Some checks failed
Deploy to Production / test (push) Failing after 6s
Deploy to Production / deploy (push) Successful in 33s
This commit is contained in:
126
.gitea/workflows/deploy.yaml
Normal file
126
.gitea/workflows/deploy.yaml
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
name: Deploy to Production
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: splendid-bear
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:18-alpine
|
||||||
|
env:
|
||||||
|
POSTGRES_USER: mineseeker_test
|
||||||
|
POSTGRES_PASSWORD: test_password
|
||||||
|
POSTGRES_DB: mineseeker_test
|
||||||
|
options: >-
|
||||||
|
--health-cmd pg_isready
|
||||||
|
--health-interval 10s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 5
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup PHP 8.3
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: '8.3'
|
||||||
|
extensions: pdo_pgsql, gd, intl, zip, sodium
|
||||||
|
coverage: none
|
||||||
|
tools: composer:v2
|
||||||
|
|
||||||
|
- name: Install PHP dependencies
|
||||||
|
run: composer install --prefer-dist --no-progress --no-interaction
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '20'
|
||||||
|
|
||||||
|
- name: Install Node dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Build assets
|
||||||
|
run: npm run build
|
||||||
|
|
||||||
|
- name: Create .env.test file
|
||||||
|
run: |
|
||||||
|
cat > .env.test << 'ENVEOF'
|
||||||
|
APP_ENV=test
|
||||||
|
APP_SECRET=test-secret-key-for-ci-testing-only
|
||||||
|
DATABASE_URL="postgresql://mineseeker_test:test_password@localhost:5432/mineseeker_test?serverVersion=18&charset=utf8"
|
||||||
|
KERNEL_CLASS='App\Kernel'
|
||||||
|
SYMFONY_DEPRECATIONS_HELPER=999999
|
||||||
|
ENVEOF
|
||||||
|
|
||||||
|
- name: Setup test database
|
||||||
|
run: make test-db-setup
|
||||||
|
|
||||||
|
- name: Run PHPUnit tests
|
||||||
|
run: vendor/bin/phpunit --testdox --colors=always --stop-on-failure
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
needs: test
|
||||||
|
runs-on: splendid-bear
|
||||||
|
steps:
|
||||||
|
- name: Checkout tag
|
||||||
|
env:
|
||||||
|
GITEA_TOKEN: ${{ gitea.token }}
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
export HOME=/tmp
|
||||||
|
git config --global credential.helper '!f() { echo "username=oauth2"; echo "password=$GITEA_TOKEN"; }; f'
|
||||||
|
git config --global --add safe.directory "${{ vars.PROD_APP_DIR }}"
|
||||||
|
cd "${{ vars.PROD_APP_DIR }}"
|
||||||
|
git remote set-url origin "${{ gitea.server_url }}/${{ gitea.repository }}.git"
|
||||||
|
git fetch --tags --force
|
||||||
|
git checkout "${{ gitea.ref_name }}"
|
||||||
|
|
||||||
|
- name: Write .env
|
||||||
|
env:
|
||||||
|
PROD_ENV_FILE: ${{ secrets.PROD_ENV_FILE }}
|
||||||
|
run: |
|
||||||
|
printf '%s' "$PROD_ENV_FILE" > "${{ vars.PROD_APP_DIR }}/.env"
|
||||||
|
|
||||||
|
- name: Build image
|
||||||
|
run: |
|
||||||
|
cd "${{ vars.PROD_APP_DIR }}"
|
||||||
|
docker compose build
|
||||||
|
|
||||||
|
- name: Run database migrations
|
||||||
|
run: |
|
||||||
|
cd "${{ vars.PROD_APP_DIR }}"
|
||||||
|
docker compose run --rm app php bin/console doctrine:migrations:migrate --no-interaction
|
||||||
|
|
||||||
|
- name: Clear cache
|
||||||
|
run: |
|
||||||
|
cd "${{ vars.PROD_APP_DIR }}"
|
||||||
|
docker compose run --rm app php bin/console cache:clear --env=prod
|
||||||
|
|
||||||
|
- name: Start services
|
||||||
|
run: |
|
||||||
|
cd "${{ vars.PROD_APP_DIR }}"
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
- name: Health check
|
||||||
|
run: |
|
||||||
|
sleep 5
|
||||||
|
curl -f http://localhost:10080/ || exit 1
|
||||||
|
|
||||||
|
- name: Notify deployment success
|
||||||
|
if: success()
|
||||||
|
run: |
|
||||||
|
echo "✅ Deployment successful for tag ${{ gitea.ref_name }}"
|
||||||
|
|
||||||
|
- name: Notify deployment failure
|
||||||
|
if: failure()
|
||||||
|
run: |
|
||||||
|
echo "❌ Deployment failed for tag ${{ gitea.ref_name }}"
|
||||||
|
exit 1
|
||||||
@@ -6,68 +6,7 @@ on:
|
|||||||
- 'v*'
|
- 'v*'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
|
||||||
runs-on: splendid-bear
|
|
||||||
|
|
||||||
services:
|
|
||||||
postgres:
|
|
||||||
image: postgres:18-alpine
|
|
||||||
env:
|
|
||||||
POSTGRES_USER: mineseeker_test
|
|
||||||
POSTGRES_PASSWORD: test_password
|
|
||||||
POSTGRES_DB: mineseeker_test
|
|
||||||
options: >-
|
|
||||||
--health-cmd pg_isready
|
|
||||||
--health-interval 10s
|
|
||||||
--health-timeout 5s
|
|
||||||
--health-retries 5
|
|
||||||
ports:
|
|
||||||
- 5432:5432
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup PHP 8.3
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
|
||||||
php-version: '8.3'
|
|
||||||
extensions: pdo_pgsql, gd, intl, zip, sodium
|
|
||||||
coverage: none
|
|
||||||
tools: composer:v2
|
|
||||||
|
|
||||||
- name: Install PHP dependencies
|
|
||||||
run: composer install --prefer-dist --no-progress --no-interaction
|
|
||||||
|
|
||||||
- name: Setup Node.js
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: '20'
|
|
||||||
|
|
||||||
- name: Install Node dependencies
|
|
||||||
run: npm ci
|
|
||||||
|
|
||||||
- name: Build assets
|
|
||||||
run: npm run build
|
|
||||||
|
|
||||||
- name: Create .env.test file
|
|
||||||
run: |
|
|
||||||
cat > .env.test << 'ENVEOF'
|
|
||||||
APP_ENV=test
|
|
||||||
APP_SECRET=test-secret-key-for-ci-testing-only
|
|
||||||
DATABASE_URL="postgresql://mineseeker_test:test_password@localhost:5432/mineseeker_test?serverVersion=18&charset=utf8"
|
|
||||||
KERNEL_CLASS='App\Kernel'
|
|
||||||
SYMFONY_DEPRECATIONS_HELPER=999999
|
|
||||||
ENVEOF
|
|
||||||
|
|
||||||
- name: Setup test database
|
|
||||||
run: make test-db-setup
|
|
||||||
|
|
||||||
- name: Run PHPUnit tests
|
|
||||||
run: vendor/bin/phpunit --testdox --colors=always --stop-on-failure
|
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
needs: test
|
|
||||||
runs-on: splendid-bear
|
runs-on: splendid-bear
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout tag
|
- name: Checkout tag
|
||||||
@@ -94,33 +33,7 @@ jobs:
|
|||||||
cd "${{ vars.PROD_APP_DIR }}"
|
cd "${{ vars.PROD_APP_DIR }}"
|
||||||
docker compose build
|
docker compose build
|
||||||
|
|
||||||
- name: Run database migrations
|
|
||||||
run: |
|
|
||||||
cd "${{ vars.PROD_APP_DIR }}"
|
|
||||||
docker compose run --rm app php bin/console doctrine:migrations:migrate --no-interaction
|
|
||||||
|
|
||||||
- name: Clear cache
|
|
||||||
run: |
|
|
||||||
cd "${{ vars.PROD_APP_DIR }}"
|
|
||||||
docker compose run --rm app php bin/console cache:clear --env=prod
|
|
||||||
|
|
||||||
- name: Start services
|
- name: Start services
|
||||||
run: |
|
run: |
|
||||||
cd "${{ vars.PROD_APP_DIR }}"
|
cd "${{ vars.PROD_APP_DIR }}"
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
|
|
||||||
- name: Health check
|
|
||||||
run: |
|
|
||||||
sleep 5
|
|
||||||
curl -f http://localhost:10080/ || exit 1
|
|
||||||
|
|
||||||
- name: Notify deployment success
|
|
||||||
if: success()
|
|
||||||
run: |
|
|
||||||
echo "✅ Deployment successful for tag ${{ gitea.ref_name }}"
|
|
||||||
|
|
||||||
- name: Notify deployment failure
|
|
||||||
if: failure()
|
|
||||||
run: |
|
|
||||||
echo "❌ Deployment failed for tag ${{ gitea.ref_name }}"
|
|
||||||
exit 1
|
|
||||||
|
|||||||
@@ -340,7 +340,7 @@ vendor/bin/phpunit --testdox
|
|||||||
**Automated testing** runs on every push/pull request:
|
**Automated testing** runs on every push/pull request:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# .gitea/workflows/ci.yml
|
# .gitea/workflows/ci.yml-bak
|
||||||
✓ PHP 8.3 setup with all extensions
|
✓ PHP 8.3 setup with all extensions
|
||||||
✓ PostgreSQL 18 service container
|
✓ PostgreSQL 18 service container
|
||||||
✓ Composer and npm dependency installation
|
✓ Composer and npm dependency installation
|
||||||
|
|||||||
Reference in New Issue
Block a user