Test out moving Cypress back to test job #669
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
name: CI | |
on: | |
- push | |
env: | |
CC_TEST_REPORTER_ID: 7729fca8695dd1ce5c6117fcd57680ee5a00726647ae7d4fe52c029de211449f | |
COVERAGE_REPORT: true | |
BUNDLE_GEMS__RAILSLTS__COM: ${{ secrets.BUNDLE_GEMS__RAILSLTS__COM }} | |
jobs: | |
test: | |
name: Test | |
runs-on: ubuntu-latest | |
services: | |
database: | |
image: mariadb:11.2 | |
ports: | |
- 3306:3306 | |
env: | |
MARIADB_DATABASE: ${{ github.event.repository.name }}_test | |
MARIADB_ROOT_PASSWORD: root | |
env: | |
MYSQL_HOST: 127.0.0.1 | |
MYSQL_USER: root | |
DB_PASSWORD: root | |
RAILS_ENV: test | |
steps: | |
- uses: cachix/install-nix-action@v24 | |
- uses: actions/checkout@v4 | |
- name: Copy configuration templates | |
run: |- | |
cp -v ./config/database.sample.yml ./config/database.yml | |
cp -v ./config/app_environment_variables.sample.rb ./config/app_environment_variables.rb | |
- name: Install Gems with Bundle | |
run: nix develop -c bundle install --without production | |
- name: Apply database migrations | |
run: nix develop -c bundle exec rake db:migrate | |
- run: nix develop -c bundle exec rake | |
- name: Test LARA plugin API v2 | |
run: |- | |
nix develop -c npm ci | |
nix develop -c npm run test | |
working-directory: ./lara-plugin-api-V2/ | |
- name: Test LARA TypeScript project | |
run: |- | |
nix develop -c npm ci | |
nix develop -c npm run test | |
working-directory: ./lara-typescript/ | |
- name: Start Rails server | |
run: |- | |
nix develop -c bundle exec rails server -b 0.0.0.0 -p 3000 & | |
# cp config/user-config.github-ci.json config/user-config.json | |
- name: Run Cypress Tests | |
uses: cypress-io/github-action@v6 | |
with: | |
config-file: cypress.config.github.js | |
wait-on: 'http://localhost:3000' | |
wait-on-timeout: 60 | |
working-directory: ./cypress/ | |
- name: Upload Cypress screenshots | |
if: always() # Ensure this runs even if tests fail | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cypress-screenshots | |
path: /home/runner/work/lara/lara/cypress/cypress/screenshots/** | |
build: | |
name: Build Docker image | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
packages: write | |
env: | |
REGISTRY: ghcr.io | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Login to GitHub Container Registry (GHCR) | |
uses: docker/login-action@v2 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Extract metadata for Docker image tagging | |
id: docker_metadata | |
uses: docker/metadata-action@v4 | |
with: | |
images: |- | |
${{ env.REGISTRY }}/${{ github.repository }} | |
tags: |- | |
type=semver,pattern={{version}} | |
type=semver,pattern={{major}}.{{minor}} | |
type=semver,pattern={{major}} | |
type=ref,event=branch | |
type=ref,event=pr | |
type=sha,prefix=git- | |
- name: Build & push Docker image | |
uses: docker/build-push-action@v4 | |
with: | |
# Don't push image to registry when running Actions locally with act CLI | |
push: ${{ env.ACT != 'true' }} | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
labels: ${{ steps.docker_metadata.outputs.labels }} | |
tags: ${{ steps.docker_metadata.outputs.tags }} | |
build-args: |- | |
LARA_VERSION=${{ github.ref_name }} | |
#cypress: | |
# name: Run Cypress Tests against built Docker image | |
# runs-on: ubuntu-latest | |
# permissions: | |
# contents: read | |
# packages: read | |
# needs: [build] # Ensure build job finishes first | |
# services: | |
# database: | |
# image: mariadb:11.2 | |
# ports: | |
# - 3306:3306 | |
# env: | |
# MARIADB_DATABASE: ${{ github.event.repository.name }}_test | |
# MARIADB_ROOT_PASSWORD: root | |
# env: | |
# REGISTRY: ghcr.io | |
# MYSQL_HOST: 127.0.0.1 | |
# MYSQL_USER: root | |
# DB_PASSWORD: root | |
# RAILS_ENV: test | |
# steps: | |
# - name: Login to GitHub Container Registry (GHCR) | |
# uses: docker/login-action@v2 | |
# with: | |
# registry: ${{ env.REGISTRY }} | |
# username: ${{ github.actor }} | |
# password: ${{ secrets.GITHUB_TOKEN }} | |
# - uses: actions/checkout@v4 | |
# - name: Start Application Container in dev mode so the configs are copied and migrations are run | |
# run: | | |
# docker run -d --name app -p 3000:3000 --network=host \ | |
# -e DB_HOST=127.0.0.1 \ | |
# -e DB_PORT=3306 \ | |
# -e DB_USER=root \ | |
# -e DB_PASSWORD=root \ | |
# -e DB_NAME=${{ github.event.repository.name }}_test \ | |
# -e RAILS_SECRET_KEY_BASE=fake-secret-for-the-cypress-tests \ | |
# -e DEVISE_SECRET_KEY=fake-secret-for-the-cypress-tests \ | |
# ${{ env.REGISTRY }}/${{ github.repository }}:latest \ | |
# ./docker/dev/run.sh | |
# - name: Run Cypress Tests | |
# uses: cypress-io/github-action@v6 | |
# with: | |
# config-file: cypress.config.github.js | |
# wait-on: 'http://localhost:3000' | |
# wait-on-timeout: 60 | |
# working-directory: ./cypress/ | |
# - name: Upload Cypress screenshots | |
# if: always() # Ensure this runs even if tests fail | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: cypress-screenshots | |
# path: /home/runner/work/lara/lara/cypress/cypress/screenshots/** |