Skip to content

Deploy on release

Deploy on release #54

Workflow file for this run

name: Deploy on release
on:
push:
branches:
- java-deployment
release:
types: [published]
jobs:
#app-tests-analyze:
# runs-on: ubuntu-latest
# services:
# mysql:
# image: mysql:latest
# env:
# MYSQL_ROOT_PASSWORD: root
# MYSQL_DATABASE: test_database
# ports:
# - 3306:3306
# options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
#
# steps:
# - uses: actions/checkout@v2
#
# - name: Cache Maven packages
# uses: actions/cache@v2
# with:
# path: |
# ~/.m2
# key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
# restore-keys: |
# ${{ runner.os }}-m2
#
# - name: Set up JDK 17
# uses: actions/setup-java@v1
# with:
# java-version: '17'
#
# - name: Add exec permission to mvnw
# run: chmod +x mvnw
#
# - name: Compile the application
# run: ./mvnw -B clean install -DskipTests=true
#
# - name: Start the application
# run: |
# ./mvnw spring-boot:run > logs.txt 2>&1 &
# echo $! > spring-boot-app.pid
# sleep 5
# env:
# SPRING_DATASOURCE_URL: jdbc:mysql://localhost:3306/test_database
# SPRING_DATASOURCE_USERNAME: root
# SPRING_DATASOURCE_PASSWORD: root
# SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.cj.jdbc.Driver
# SPRING_PROFILES_ACTIVE: test
# - name: Check listening ports
# run: ss -tuln
# - name: Run tests
# run: |
# ./mvnw org.jacoco:jacoco-maven-plugin:prepare-agent verify -Dspring.datasource.url=jdbc:mysql://localhost:3306/test_database -Dspring.datasource.username=root -Dspring.datasource.password=root -Dspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# env:
# SPRING_PROFILES_ACTIVE: test
# headless: true
# EXCLUDE_JUNIT: true
# - name: Show app logs
# if: always()
# run: |
# cat logs.txt
# - name: Shut down the application
# run: |
# kill $(cat spring-boot-app.pid)
# - name: Collect Jacoco report and send to Sonar
# run: |
# ./mvnw org.jacoco:jacoco-maven-plugin:report sonar:sonar -Dsonar.projectKey=Arquisoft_wiq_es04b -Dsonar.organization=arquisoft -Dsonar.branch.name=${{ github.head_ref || github.ref_name }} -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=${{ secrets.SONAR_TOKEN }} -Dspring.profiles.active=test
build-and-push:
runs-on: ubuntu-latest
#needs: app-tests-analyze
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Log in to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
push: true
tags: ghcr.io/arquisoft/wiq_es04b:latest
no-cache: true
deploy:
runs-on: ubuntu-latest
needs: build-and-push
steps:
- name: Deploy over SSH
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.DEPLOY_HOST }}
username: ${{ secrets.DEPLOY_USER }}
key: ${{ secrets.DEPLOY_KEY }}
script: |
docker-compose down
wget https://raw.githubusercontent.com/${{ github.repository }}/${{ github.ref_name }}/docker-compose.yml -O docker-compose.yml
wget https://raw.githubusercontent.com/${{ github.repository }}/${{ github.ref_name }}/prometheus.yml -O prometheus.yml
docker compose pull
docker-compose up -d