82 lines
2.9 KiB
YAML
82 lines
2.9 KiB
YAML
name: CI/CD Pipeline
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths-ignore:
|
|
- 'api-deployment.yaml'
|
|
- 'frontend-deployment.yaml'
|
|
|
|
env:
|
|
GIT_SSL_NO_VERIFY: "true"
|
|
NODE_TLS_REJECT_UNAUTHORIZED: "0"
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '20'
|
|
- name: Install dependencies and test API
|
|
working-directory: ./api
|
|
run: npm install && node -c server.js
|
|
- name: Install dependencies and test Frontend
|
|
working-directory: ./frontend
|
|
run: npm install
|
|
|
|
scan:
|
|
runs-on: ubuntu-latest
|
|
needs: test
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
- name: SonarQube Scan
|
|
uses: sonarsource/sonarqube-scan-action@master
|
|
continue-on-error: true
|
|
env:
|
|
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
|
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
|
|
|
|
build-push-deploy:
|
|
runs-on: ubuntu-latest
|
|
needs: scan
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Log in to Gitea Container Registry
|
|
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login git.khalilaliouich.com -u ${{ github.actor }} --password-stdin
|
|
|
|
- name: Build and Push API
|
|
run: |
|
|
docker build -t git.khalilaliouich.com/${{ github.repository_owner }}/tamagotchi-api:${{ github.sha }} ./api
|
|
docker push git.khalilaliouich.com/${{ github.repository_owner }}/tamagotchi-api:${{ github.sha }}
|
|
|
|
- name: Build and Push Frontend
|
|
run: |
|
|
docker build -t git.khalilaliouich.com/${{ github.repository_owner }}/tamagotchi-frontend:${{ github.sha }} ./frontend
|
|
docker push git.khalilaliouich.com/${{ github.repository_owner }}/tamagotchi-frontend:${{ github.sha }}
|
|
|
|
- name: Update Kubernetes Manifests
|
|
run: |
|
|
sed -i "s|image: .*tamagotchi-api:.*|image: git.khalilaliouich.com/${{ github.repository_owner }}/tamagotchi-api:${{ github.sha }}|g" api-deployment.yaml
|
|
sed -i "s|image: .*tamagotchi-frontend:.*|image: git.khalilaliouich.com/${{ github.repository_owner }}/tamagotchi-frontend:${{ github.sha }}|g" frontend-deployment.yaml
|
|
|
|
- name: Commit and Push changes
|
|
run: |
|
|
git config --global user.name "gitea-actions[bot]"
|
|
git config --global user.email "gitea-actions@gitea.local"
|
|
# Set the origin URL with the token to allow pushing back
|
|
git remote set-url origin http://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@gitea-http.gitea.svc.cluster.local:3000/${{ github.repository }}
|
|
git add api-deployment.yaml frontend-deployment.yaml
|
|
git commit -m "chore: deploy version ${{ github.sha }} [skip ci]" || echo "No changes to commit"
|
|
git push origin main
|