GitHub actions ci-pipeline #12
Workflow file for this run
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: continuous-integration | |
on: | |
push: | |
branches: | |
- staging | |
- develop | |
pull_request: | |
branches: | |
- main | |
jobs: | |
ci-pipeline: | |
runs-on: ubuntu-latest | |
env: | |
SPRING_PROFILES_ACTIVE: ${{ secrets.SPRING_PROFILES_ACTIVE }} | |
DB_URL: jdbc:postgresql://postgres-db:5432/sysagua_db | |
DB_USERNAME: ${{ secrets.DB_USERNAME }} | |
DB_PASSWORD: ${{ secrets.DB_PASSWORD }} | |
DEFAULT_EMAIL: ${{ secrets.DEFAULT_EMAIL }} | |
DEFAULT_PASSWORD: ${{ secrets.DEFAULT_PASSWORD }} | |
JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }} | |
steps: | |
# Checkout do código-fonte | |
- name: Check out code | |
uses: actions/checkout@v3 | |
# Configuração de cache para Gradle | |
- name: Cache Gradle Dependencies | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.gradle/caches | |
~/.gradle/wrapper | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
# Instalação do Java 21 | |
- name: Set up JDK 21 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
java-version: '21' | |
# Instalação do Docker Compose | |
- name: Install Docker Compose | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y docker-compose | |
# Início dos serviços com Docker Compose | |
- name: Start Docker Compose | |
run: docker-compose up --build -d | |
env: | |
DB_PASSWORD: ${{ secrets.DB_PASSWORD }} | |
# Aguarda que os serviços estejam prontos | |
- name: Wait for services to be ready | |
run: | | |
timeout 300 bash -c ' | |
until echo > /dev/tcp/localhost/8080; do | |
echo "Waiting for API service..." | |
sleep 2 | |
done | |
echo "API service is ready!"' | |
# Concede permissão de execução ao script Gradle Wrapper | |
- name: Grant execute permission for gradlew | |
run: chmod +x ./sysagua-api/gradlew | |
# Execução de testes da API usando Gradle | |
- name: Run API Tests | |
working-directory: ./sysagua-api | |
run: ./gradlew test | |
# Logs de depuração (opcional) | |
- name: Check Docker logs | |
run: docker-compose logs --tail=100 | |
# Derrubar os containers ao final do pipeline | |
- name: Stop Docker Compose | |
if: always() | |
run: docker-compose down |