Skip to content

chore(deps): update codecov/codecov-action action to v4 (#160) #83

chore(deps): update codecov/codecov-action action to v4 (#160)

chore(deps): update codecov/codecov-action action to v4 (#160) #83

name: Deploy to Main Stage ๐Ÿ’ซ
on:
push:
branches: [ main ]
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
VERSION: ${{ github.sha }}
CI: CI
NATIVE_IMAGE_ENABLED: enabled
CI_GITHUB_TOKEN: ${{ secrets.CI_GITHUB_TOKEN }}
DOCKER_CI_GITHUB_TOKEN: ${{ secrets.DOCKER_CI_GITHUB_TOKEN }}
OWNER: ${{ github.repository_owner }}
DEPLOY_REPO: ${{ github.event.repository.name }}
NVD_API_KEY: ${{ secrets.NVD_API_KEY }}
permissions:
# required for all workflows
security-events: write
packages: write
contents: write
issues: write
pull-requests: write
jobs:
validation:
name: Validation ๐Ÿ‘€
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check Project Integrity
uses: ./.github/actions/analysis/check
build:
name: Build and Test ๐Ÿงช
needs: [ validation ]
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
steps:
- name: ๐Ÿ” CI_GITHUB_TOKEN
if: env.CI_GITHUB_TOKEN == ''
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: echo "CI_GITHUB_TOKEN=${GITHUB_TOKEN}" >> $GITHUB_ENV
- name: Checkout source code
uses: actions/checkout@v4
with:
token: ${{ env.CI_GITHUB_TOKEN }}
- name: Install Java โ˜• Tools & Dependencies
uses: ./.github/actions/install/java
with:
java-version: 21
gradle-arguments: build --scan --no-daemon --stacktrace
github_token: ${{ env.CI_GITHUB_TOKEN }}
- name: Source code vulnerability scanning
uses: aquasecurity/trivy-action@master
with:
scan-type: 'fs'
format: 'sarif'
output: 'trivy-results-source-code.sarif'
- name: Upload vulnerability report
uses: github/codeql-action/upload-sarif@v3
if: success() || failure()
with:
sarif_file: 'trivy-results-source-code.sarif'
category: source-code
static-analysis-security:
name: ๐Ÿ”ฎ Static analysis and ๐Ÿ”’Security Checks
needs: [ validation ]
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
steps:
- name: ๐Ÿ”„ Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Static Analysis Security
uses: ./.github/actions/analysis/security
functional:
name: Functional Acceptance Tests ๐ŸŽฏ
needs: [ build ]
runs-on: ubuntu-latest
steps:
- run: echo "Running functional acceptance tests"
performance:
name: Performance Tests ๐Ÿš€
needs: [ build ]
runs-on: ubuntu-latest
steps:
- run: echo "Running performance tests"
security:
name: Security Tests ๐Ÿค–
needs: [ build ]
runs-on: ubuntu-latest
steps:
- run: echo "Running security tests"
code-coverage:
name: Code Coverage ๐Ÿ“Š
needs: [ build ]
runs-on: ubuntu-latest
steps:
- name: Checkout source code
uses: actions/checkout@v4
with:
token: ${{ env.CI_GITHUB_TOKEN }}
- name: Install Java Tools & Dependencies
uses: ./.github/actions/install/java
- name: Install Tools & Dependencies
uses: ./.github/actions/install/node
- name: Run Code Coverage
run: |
./gradlew koverXmlReport --no-daemon --stacktrace
- name: Upload coverage reports
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: build/reports/kover/report.xml
fail_ci_if_error: true # optional (default = false)
verbose: true # optional (default = false)
approval:
name: Deploy Approval ๐Ÿ’ซ
runs-on: ubuntu-latest
needs: [ functional, performance, security ]
steps:
- name: Checkout source code
uses: actions/checkout@v4
- id: get_data
run: |
echo "version=$(cat gradle.properties | grep "version =" | cut -d'=' -f2)" >> $GITHUB_OUTPUT
- name: Wait for approval
uses: trstringer/manual-approval@v1
timeout-minutes: 60
with:
secret: ${{ env.CI_GITHUB_TOKEN }}
minimum-approvals: 1
approvers: ${{ github.repository_owner }}
issue-title: '๐Ÿš€ Deploying ${{ steps.get_data.outputs.version }} to production'
issue-body: "Please approve or deny the release of ${{ github.github.repository }}. **VERSION**: ${{ steps.get_data.outputs.version }} **TAG**: ${{ github.ref_name }} **COMMIT**: ${{ github.sha }}"
exclude-workflow-initiator-as-approver: false
additional-approved-words: ''
additional-denied-words: ''
semantic-release:
name: Semantic Release ๐Ÿงญ
needs: [ approval ]
runs-on: ubuntu-latest
steps:
- name: Checkout source code
uses: actions/checkout@v4
with:
token: ${{ env.CI_GITHUB_TOKEN }}
- name: Install Java Tools & Dependencies
uses: ./.github/actions/install/java
- name: Install Tools & Dependencies
uses: ./.github/actions/install/node
- name: Run Semantic Release
run: |
npx semantic-release
env:
GITHUB_TOKEN: ${{ env.CI_GITHUB_TOKEN }}
package:
name: Package and Publish ๐Ÿ“ฆ
needs: [ semantic-release ]
runs-on: ubuntu-latest
permissions: write-all
steps:
- name: Checkout source code
uses: actions/checkout@v4
- name: Package, Publish and Deploy
uses: ./.github/actions/docker
with:
deliver: true
registry: ${{ env.REGISTRY }}
image_name: ${{ env.IMAGE_NAME }}
version: ${{ github.sha }}
ci_github_token: ${{ env.DOCKER_CI_GITHUB_TOKEN }}
owner: ${{ env.OWNER }}
app_repo: ${{ github.repository }}
deploy_repo: ${{ env.DEPLOY_REPO }}
docker_username: ${{ secrets.DOCKER_USERNAME }}
docker_password: ${{ secrets.DOCKER_PASSWORD }}