verificate #6
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: Movil CI/CD Workflow - Main | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
permissions: write-all | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Node.js | |
uses: actions/setup-node@v2 | |
with: | |
node-version: '20' | |
- name: Install dependencies | |
run: npm install | |
- name: Run ESLint | |
run: npm run lint || echo "Lint errors encountered, but continuing." | |
integration-tests: | |
needs: lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install dependencies | |
run: npm install | |
- name: Run Integration Tests | |
run: npm run test:integration | |
snyk-scan: | |
needs: integration-tests | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install Snyk CLI | |
run: npm install -g snyk | |
- name: Run Snyk Scan | |
env: | |
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} | |
run: snyk test --all-projects | |
deploy: | |
needs: integration-tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Install Node.js | |
uses: actions/setup-node@v2 | |
with: | |
node-version: '20' | |
- name: Install dependencies | |
run: npm install | |
- name: Install Expo CLI | |
run: npm install -g expo-cli | |
- name: Log in to Expo | |
run: expo login -u ${{ secrets.EXPO_USERNAME }} -p ${{ secrets.EXPO_PASSWORD }} | |
- name: Publish Expo App | |
run: expo publish | |
- name: Install Expo EAS CLI | |
run: npm install -g eas-cli | |
- name: EAS Build (Android) | |
run: eas build --platform android --non-interactive | |
env: | |
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }} | |
- name: EAS Build (iOS) | |
run: eas build --platform ios --non-interactive | |
env: | |
EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }} | |
notify-email: | |
needs: [lint, integration-tests, deploy] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Prepare SHA and Run ID | |
id: vars | |
run: | | |
echo "::set-output name=short_sha::${GITHUB_SHA::7}" | |
echo "::set-output name=short_run_id::${GITHUB_RUN_ID::7}" | |
- name: Send Notification Email | |
uses: dawidd6/action-send-mail@v3 | |
with: | |
server_address: ${{ secrets.SMTP_HOST }} | |
server_port: ${{ secrets.SMTP_PORT }} | |
username: ${{ secrets.SMTP_USERNAME }} | |
password: ${{ secrets.SMTP_PASSWORD }} | |
subject: CI/CD Pipeline Notification - ${{ github.ref_name }} | |
from: CI/CD Bot <ci-bot@example.com> | |
to: ${{ secrets.EMAIL_TO }} | |
html_body: | | |
<html lang="es"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>Notificación de CI/CD Pipeline</title> | |
<style> | |
body { | |
font-family: Arial, sans-serif; | |
background-color: #f4f4f4; | |
margin: 0; | |
padding: 20px; | |
} | |
.container { | |
max-width: 600px; | |
margin: 0 auto; | |
background-color: #fff; | |
border-radius: 10px; | |
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); | |
overflow: hidden; | |
} | |
.header { | |
background-color: #4CAF50; | |
padding: 20px; | |
color: white; | |
text-align: center; | |
} | |
.content { | |
padding: 20px; | |
color: #333; | |
} | |
.content h3 { | |
color: #4CAF50; | |
} | |
.content p { | |
line-height: 1.5; | |
margin-bottom: 20px; | |
} | |
.button { | |
background-color: #4CAF50; | |
color: white; | |
padding: 10px 20px; | |
text-align: center; | |
border-radius: 5px; | |
text-decoration: none; | |
display: inline-block; | |
margin-top: 20px; | |
} | |
.footer { | |
text-align: center; | |
font-size: 12px; | |
color: #888; | |
padding: 10px; | |
border-top: 1px solid #eee; | |
} | |
</style> | |
</head> | |
<body> | |
<div class="container"> | |
<div class="header"> | |
<h1>🚀 Notificación de CI/CD Pipeline</h1> | |
</div> | |
<div class="content"> | |
<h3>El pipeline ha finalizado</h3> | |
<p>El estado del pipeline es: <strong>${{ job.status }}</strong></p> | |
<p><strong>Rama:</strong> ${{ github.ref_name }}</p> | |
<p><strong>Commit SHA:</strong> ${{ steps.vars.outputs.short_sha }}</p> | |
<p><strong>ID de Ejecución:</strong> ${{ steps.vars.outputs.short_run_id }}</p> | |
<a href="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" class="button">Ver resultados del pipeline</a> | |
</div> | |
<div class="footer"> | |
<p>Este es un mensaje automatizado de tu bot de CI/CD. No es necesario responder.</p> | |
</div> | |
</div> | |
</body> | |
</html> |