Skip to content

Fixing assetGroup bug #554

Fixing assetGroup bug

Fixing assetGroup bug #554

Workflow file for this run

name: Push on develop - Build, test, create docker images & push them to docker hub
on:
push:
jobs:
# ====================================================================================================================
# Run unit tests.
unit_tests:
name: Unit tests
runs-on: ubuntu-latest
steps:
# ================================================================================================================
- name: Retrieve the sources
uses: actions/checkout@v4
# ================================================================================================================
- name: Java Setup
uses: actions/setup-java@v3.13.0
with:
distribution: 'temurin'
java-version: '17'
# ================================================================================================================
- name: build and run tests
run: mvn clean test
# ====================================================================================================================
# Run integration tests.
integration_tests:
name: Integration tests
runs-on: ubuntu-latest
steps:
# ================================================================================================================
- name: Retrieve the sources
uses: actions/checkout@v4
# ================================================================================================================
- name: Java Setup
uses: actions/setup-java@v3.13.0
with:
distribution: 'temurin'
java-version: '17'
# ================================================================================================================
- name: build and run tests
run: mvn clean test -P integration
# ====================================================================================================================
# Run docker tests.
docker_tests:
name: Docker tests
runs-on: ubuntu-latest
steps:
# ================================================================================================================
- name: Retrieve the sources
uses: actions/checkout@v4
# ================================================================================================================
- name: Java Setup
uses: actions/setup-java@v3.13.0
with:
distribution: 'temurin'
java-version: '17'
# ================================================================================================================
- name: Build docker images
run: |
mvn clean install -P release -DskipTests
mvn spring-boot:build-image -P release -DskipTests -f backend/servers/explorer-batch/pom.xml
mvn spring-boot:build-image -P release -DskipTests -f backend/servers/explorer-api/pom.xml
mvn spring-boot:build-image -P release -DskipTests -f backend/servers/explorer-web/pom.xml
# ================================================================================================================
- name: Run the docker-compose with our images
run: |
docker-compose up >> docker.logs 2>&1 &
sleep 60
# ================================================================================================================
# Checking request life cycle.
- name: Adding a request
id: addProofRequest
run: |
requestId=$(curl -H "Content-Type: application/json" \
-d '{ "query": "mutation { createAddProofRequest(input: {rawProof: \"${{ secrets.UNKNOWN_ROYLLO_COIN_RAW_PROOF }}\"}) { requestId }}" }' \
http://localhost:9090/graphql | jq -r '.data.createAddProofRequest.requestId')
echo "requestId=${requestId}" >> $GITHUB_OUTPUT
- name: Retrieving request status
id: requestByRequestId
run: |
sleep 60
status=$(curl -H "Content-Type: application/json" \
-d '{ "query": "{ requestByRequestId(requestId: \"${{ steps.addProofRequest.outputs.requestId }}\") { status }}" }' \
http://localhost:9090/graphql | jq -r '.data.requestByRequestId.status')
echo "status=${status}" >> $GITHUB_OUTPUT
- name: Check if the request has been treated
if: ${{ steps.requestByRequestId.outputs.status != 'SUCCESS' }}
run: |
echo "Error - request status is ${{ steps.requestByRequestId.outputs.status }}"
cat docker.logs
exit 1
- name: Retrieving the asset created by the request
id: assetByAssetId
run: |
name=$(curl -H "Content-Type: application/json" \
-d '{ "query": "{ assetByAssetId(assetId: \"${{ secrets.UNKNOWN_ROYLLO_COIN_ASSET_ID }}\") { name }}" }' \
http://localhost:9090/graphql | jq -r '.data.assetByAssetId.name')
echo "name=${name}" >> $GITHUB_OUTPUT
- name: Check if the asset has been created
if: ${{ steps.assetByAssetId.outputs.name != 'unknownRoylloCoin' }}
run: |
echo "Error - Asset '${{ steps.assetByAssetId.outputs.name }}' not found"
cat docker.logs
exit 1
# ====================================================================================================================
# Run code analysis.
code_analysis:
name: Code analysis
runs-on: ubuntu-latest
continue-on-error: true
if: github.ref == 'refs/heads/development'
steps:
# ================================================================================================================
- name: Retrieve the sources
uses: actions/checkout@v4
# ================================================================================================================
- name: Java Setup
uses: actions/setup-java@v3.13.0
with:
distribution: 'temurin'
java-version: '17'
# ================================================================================================================
# Using CodeQL.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: java
- name: Build and package
run: |
mvn package -DskipTests
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
# ================================================================================================================
# Using Qodana.
- name: Qodana Scan
uses: JetBrains/qodana-action@v2023.2.8
env:
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
# ====================================================================================================================
# Docker images push to docker hub.
docker_hub_push:
name: Docker images push to docker hub
runs-on: ubuntu-latest
needs: [ unit_tests, integration_tests, docker_tests ]
if: github.ref == 'refs/heads/development'
steps:
# ================================================================================================================
- name: Retrieve the sources
uses: actions/checkout@v4
# ================================================================================================================
- name: Java Setup
uses: actions/setup-java@v3.13.0
with:
distribution: 'temurin'
java-version: '17'
# ================================================================================================================
- name: Build docker images
run: |
mvn clean install -P release -DskipTests
mvn spring-boot:build-image -P release -DskipTests -f backend/servers/explorer-batch/pom.xml
mvn spring-boot:build-image -P release -DskipTests -f backend/servers/explorer-api/pom.xml
mvn spring-boot:build-image -P release -DskipTests -f backend/servers/explorer-web/pom.xml
# ================================================================================================================
- name: Docker Hub login
uses: docker/login-action@v3.0.0
with:
username: ${{ secrets.EXPLORER_DOCKER_HUB_USERNAME }}
password: ${{ secrets.EXPLORER_DOCKER_HUB_PASSWORD }}
# ================================================================================================================
- name: Push docker images to Docker hub
run: |
docker push royllo/explorer-batch:latest
docker push royllo/explorer-api:latest
docker push royllo/explorer-web:latest
# ====================================================================================================================
# Docker images push to production.
production_push:
name: Docker images push to production
runs-on: ubuntu-latest
needs: [ unit_tests, integration_tests, docker_tests ]
if: startsWith(github.ref, 'refs/tags/')
steps:
# ================================================================================================================
- name: Retrieve the sources
uses: actions/checkout@v4
# ================================================================================================================
- name: Java Setup
uses: actions/setup-java@v3.13.0
with:
distribution: 'temurin'
java-version: '17'
# ================================================================================================================
- name: Build docker images
run: |
mvn clean install -P release -DskipTests
mvn spring-boot:build-image -P release -DskipTests -f backend/servers/explorer-batch/pom.xml
mvn spring-boot:build-image -P release -DskipTests -f backend/servers/explorer-api/pom.xml
mvn spring-boot:build-image -P release -DskipTests -f backend/servers/explorer-web/pom.xml
# ================================================================================================================
- name: Get release number
id: release
run: echo "version=$(mvn help:evaluate -D expression=project.version -q -D forceStdout)" >> $GITHUB_OUTPUT
# ================================================================================================================
# Publish to Docker Hub.
- name: Docker Hub login
uses: docker/login-action@v3.0.0
with:
username: ${{ secrets.EXPLORER_DOCKER_HUB_USERNAME }}
password: ${{ secrets.EXPLORER_DOCKER_HUB_PASSWORD }}
# ================================================================================================================
- name: Tag docker images
run: |
docker tag royllo/explorer-batch:latest royllo/explorer-batch:${{ steps.release.outputs.version }}
docker tag royllo/explorer-api:latest royllo/explorer-api:${{ steps.release.outputs.version }}
docker tag royllo/explorer-web:latest royllo/explorer-web:${{ steps.release.outputs.version }}
# ================================================================================================================
- name: Push tagged images to Docker hub
run: |
docker push royllo/explorer-batch:${{ steps.release.outputs.version }}
docker push royllo/explorer-api:${{ steps.release.outputs.version }}
docker push royllo/explorer-web:${{ steps.release.outputs.version }}
# ================================================================================================================
# Push to DigitalOcean Container Registry.
- name: Install doctl
uses: digitalocean/action-doctl@v2
with:
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
- name: Tag docker images
run: |
docker tag royllo/explorer-batch:latest registry.digitalocean.com/royllo/explorer-batch:production
docker tag royllo/explorer-api:latest registry.digitalocean.com/royllo/explorer-api:production
docker tag royllo/explorer-web:latest registry.digitalocean.com/royllo/explorer-web:production
- name: Push production images to DigitalOcean Container Registry
run: |
doctl registry login
docker push registry.digitalocean.com/royllo/explorer-batch:production
docker push registry.digitalocean.com/royllo/explorer-api:production
docker push registry.digitalocean.com/royllo/explorer-web:production