Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
381 changes: 192 additions & 189 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,189 +1,192 @@
name: CI Pipeline
on:
push:
pull_request:

jobs:
lint:
runs-on: ubuntu-24.04
timeout-minutes: 60
env:
DOCKER_INTERACTIVE: false
steps:
# === SETUP PHASE ===
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive

- name: Setup Docker Compose
uses: docker/setup-compose-action@v1

- name: Setup Task
uses: go-task/setup-task@v1

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'npm'
cache-dependency-path: 'package-lock.json'

- name: Repository lampy
uses: actions/checkout@v4
with:
submodules: recursive
repository: koromerzhin/lampy
ref: '4.4.0'
path: lampy

- name: Setup cache
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: ${{ runner.os }}-node-

- name: Install dependencies
run: |
if [ ! -d node_modules ]; then
npm install
fi

- name: Setup environment files
run: |
cp apps/.env.example apps/.env
cp .env.example .env

- name: Setup database and infrastructure
run: |
task labstag:copysql
cd lampy && task lampy:exec

- name: Deploy containers
run: |
task labstag:set-env-ids
task labstag:getpull-image
task labstag:install-first
task labstag:deploy
task labstag:waiting

launch:
runs-on: ubuntu-24.04
timeout-minutes: 60
needs: lint
env:
DOCKER_INTERACTIVE: false
steps:
# === SETUP PHASE ===
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive

- name: Setup Docker Compose
uses: docker/setup-compose-action@v1

- name: Setup Task
uses: go-task/setup-task@v1

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'npm'
cache-dependency-path: 'package-lock.json'

- name: Repository lampy
uses: actions/checkout@v4
with:
submodules: recursive
repository: koromerzhin/lampy
ref: '4.4.0'
path: lampy

- name: Setup cache
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: ${{ runner.os }}-node-

- name: Install dependencies
run: npm install

- name: Build assets
run: npm run encore:build
env:
NODE_ENV: production

- name: Setup environment files
run: |
cp apps/.env.example apps/.env
cp .env.example .env

- name: Setup database and infrastructure
run: |
task labstag:copysql
cd lampy && task lampy:exec

- name: Deploy containers
run: |
task labstag:set-env-ids
task labstag:getpull-image
task labstag:install-first
task labstag:deploy
task labstag:waiting

- name: Setup PHP tools and permissions
run: |
task labstag:download-phar
task labstag:ls
sudo chown -R "$USER:$USER" ./apps
sudo chmod -R 755 ./apps
task symfony:about
- name: Prepare application
run: |
sudo chown -R "$USER:$USER" ./apps/public
sudo chmod -R 755 ./apps/public
task labstag:assets

- name: Database setup
run: |
task doctrine:migrate
task doctrine:schema:update
task doctrine:schema:validate
task doctrine:fixtures

- name: Run Cypress tests
uses: cypress-io/github-action@v6
continue-on-error: true
with:
wait-on-timeout: 120
browser: chrome
record: false
parallel: false
config: screenshotOnRunFailure=true,video=true,videoCompression=32,defaultCommandTimeout=10000,requestTimeout=10000,responseTimeout=10000,retries={"runMode":2,"openMode":0}
env:
CYPRESS_CACHE_FOLDER: ~/.cache/Cypress
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}

- name: Docker stack stop
if: always()
run: |
docker stack rm labstag
docker stack rm lampy

# === ARTIFACTS PHASE ===
- name: Archive test results
uses: actions/upload-artifact@v4
if: always()
with:
name: "test-results-${{ github.run_number }}-${{ github.sha }}"
path: |
cypress/screenshots
cypress/videos
cypress/reports
retention-days: 7
if-no-files-found: ignore
compression-level: 6
name: CI Pipeline
on:
push:
pull_request:

jobs:
lint:
runs-on: ubuntu-24.04
timeout-minutes: 60
env:
DOCKER_INTERACTIVE: false
steps:
# === SETUP PHASE ===
- name: Checkout
uses: actions/checkout@v5
with:
submodules: recursive

- name: Setup Docker Compose
uses: docker/setup-compose-action@v1

- name: Setup Task
uses: go-task/setup-task@v1

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'npm'
cache-dependency-path: 'package-lock.json'

- name: Repository lampy
uses: actions/checkout@v5
with:
submodules: recursive
repository: koromerzhin/lampy
ref: '4.4.0'
path: lampy

- name: Setup cache
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: ${{ runner.os }}-node-

- name: Install dependencies
run: |
if [ ! -d node_modules ]; then
npm install
fi

- name: Setup environment files
run: |
cp apps/.env.example apps/.env
cp .env.example .env

- name: Setup database and infrastructure
run: |
task labstag:copysql
cd lampy && task lampy:exec

- name: Deploy containers
run: |
task labstag:set-env-ids
task labstag:getpull-image
task labstag:install-first
task labstag:deploy
task labstag:waiting

launch:
runs-on: ubuntu-24.04
timeout-minutes: 60
needs: lint
env:
DOCKER_INTERACTIVE: false
steps:
# === SETUP PHASE ===
- name: Checkout
uses: actions/checkout@v5
with:
submodules: recursive

- name: Setup Docker Compose
uses: docker/setup-compose-action@v1

- name: Setup Task
uses: go-task/setup-task@v1

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'npm'
cache-dependency-path: 'package-lock.json'

- name: Repository lampy
uses: actions/checkout@v5
with:
submodules: recursive
repository: koromerzhin/lampy
ref: '4.4.0'
path: lampy

- name: Setup cache
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: ${{ runner.os }}-node-

- name: Install dependencies
run: |
if [ ! -d node_modules ]; then
npm install
fi

- name: Build assets
run: npm run encore:build
env:
NODE_ENV: production

- name: Setup environment files
run: |
cp apps/.env.example apps/.env
cp .env.example .env

- name: Setup database and infrastructure
run: |
task labstag:copysql
cd lampy && task lampy:exec

- name: Deploy containers
run: |
task labstag:set-env-ids
task labstag:getpull-image
task labstag:install-first
task labstag:deploy
task labstag:waiting

- name: Setup PHP tools and permissions
run: |
task labstag:download-phar
task labstag:ls
sudo chown -R $USER:$USER ./apps
sudo chmod -R 755 ./apps
task symfony:about
- name: Prepare application
run: |
sudo chown -R $USER:$USER ./apps/public
sudo chmod -R 755 ./apps/public
task labstag:assets

- name: Database setup
run: |
task doctrine:migrate
task doctrine:schema:update
task doctrine:schema:validate
task doctrine:fixtures

- name: Run Cypress tests
uses: cypress-io/github-action@v6
continue-on-error: true
with:
wait-on-timeout: 120
browser: chrome
record: false
parallel: false
config: screenshotOnRunFailure=true,video=true,videoCompression=32,defaultCommandTimeout=10000,requestTimeout=10000,responseTimeout=10000,retries={"runMode":2,"openMode":0}
env:
CYPRESS_CACHE_FOLDER: ~/.cache/Cypress
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}

- name: Docker stack stop
if: always()
run: |
docker stack rm labstag
docker stack rm lampy

# === ARTIFACTS PHASE ===
- name: Archive test results
uses: actions/upload-artifact@v4
if: always()
with:
name: "test-results-${{ github.run_number }}-${{ github.sha }}"
path: |
cypress/screenshots
cypress/videos
cypress/reports
retention-days: 7
if-no-files-found: ignore
compression-level: 6
Loading