Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 54 additions & 53 deletions .github/workflows/backend-build-and-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,71 +2,72 @@ name: Build and Push Backend

on:
push:
branches: [ main, develop ]
paths:
- 'waver-backend/**'
branches: [ main ]
paths-ignore:
- '**.md'
- '**.png'
- '**.jpg'
pull_request:
branches: [ main, develop ]
paths:
- 'waver-backend/**'
branches: [ main ]
paths-ignore:
- '**.md'
- '**.png'
- '**.jpg'
workflow_dispatch:

env:
QUAY_NAMESPACE: sshaaf
IMAGE_NAME: waver-backend
QUAY_REPOSITORY: quay.io/sshaaf/waver-backend

jobs:
build-and-push:
environment: build
runs-on: ubuntu-latest

permissions:
contents: read
packages: write

steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Checkout code
uses: actions/checkout@v4

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: maven
- run: mvn clean install
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- run: mvn -B install

- name: Get Git SHA
id: git-sha
run: |
echo "sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
echo "full-sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
- name: Cache Maven packages
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-backend-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-backend-

- name: Log in to Quay.io
uses: docker/login-action@v3
with:
registry: quay.io
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_PASSWORD }}
- name: Log in to Quay.io
# This step is safe to run for both events.
uses: docker/login-action@v3
with:
registry: quay.io
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_PASSWORD }}

- name: Build and push Docker image
run: |
cd waver-backend
# Build and push with SHA tag
mvn clean package -Dquarkus.container-image.build=true \
-Dquarkus.container-image.push=true \
-Dquarkus.container-image.registry=quay.io \
-Dquarkus.container-image.group=${{ env.QUAY_NAMESPACE }} \
-Dquarkus.container-image.name=${{ env.IMAGE_NAME }} \
-Dquarkus.container-image.tag=${{ steps.git-sha.outputs.sha }}

# Also tag and push as latest
docker tag ${{ env.QUAY_REPOSITORY }}:${{ steps.git-sha.outputs.sha }} ${{ env.QUAY_REPOSITORY }}:latest
docker push ${{ env.QUAY_REPOSITORY }}:latest
- name: Build Container Image (PR Check)
# This step ONLY runs for pull requests. It builds the image but does NOT push.
if: github.event_name == 'pull_request'
run: |
mvn package -pl waver-backend \
-Dquarkus.container-image.build=true \
-Dquarkus.container-image.push=false \
-Dquarkus.container-image.tag=${{ github.sha }}

- name: Output image info
run: |
echo "✅ Successfully built and pushed image:"
echo " Repository: ${{ env.QUAY_REPOSITORY }}"
echo " SHA Tag: ${{ steps.git-sha.outputs.sha }}"
echo " Latest Tag: latest"
echo " Full SHA: ${{ steps.git-sha.outputs.full-sha }}"
echo " Image URLs:"
echo " ${{ env.QUAY_REPOSITORY }}:${{ steps.git-sha.outputs.sha }}"
echo " ${{ env.QUAY_REPOSITORY }}:latest"
- name: Build and Push Container Image (on Merge to Main)
# This step ONLY runs on a push to the main branch. It builds AND pushes.
if: github.event_name == 'push'
run: |
mvn package -pl waver-backend \
-Dquarkus.container-image.build=true \
-Dquarkus.container-image.push=true \
-Dquarkus.container-image.tag=${GITHUB_SHA::8} \
-Dquarkus.container-image.additional-tags=latest
72 changes: 37 additions & 35 deletions .github/workflows/cli-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ jobs:
distribution: 'graalvm' # See 'Supported distributions' for available options
java-version: '21'
- run: mvn clean install
- run: mvn test

- name: Upload JAR
uses: actions/upload-artifact@v4
Expand All @@ -60,9 +59,10 @@ jobs:
distribution: 'graalvm'
github-token: ${{ secrets.GITHUB_TOKEN }}
native-image-job-reports: 'true'
- run: mvn clean install

- name: Build Native Image
run: mvn clean install -Pnative
run: mvn package -pl waver-cli -Pnative

- name: Upload Linux Native Executable
uses: actions/upload-artifact@v4
Expand All @@ -84,9 +84,10 @@ jobs:
distribution: 'graalvm'
github-token: ${{ secrets.GITHUB_TOKEN }}
native-image-job-reports: 'true'

- run: mvn clean install

- name: Build Native Image
run: mvn clean install -Pnative
run: mvn package -pl waver-cli -Pnative

- name: Upload macOS Native Executable
uses: actions/upload-artifact@v4
Expand All @@ -100,48 +101,49 @@ jobs:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3


- name: Set up Visual Studio Developer Command Prompt
uses: microsoft/setup-msbuild@v1.1

- name: Set up Visual C++ Build Tools
shell: powershell
run: |
# Add Visual C++ build tools to PATH
$vsPath = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property installationPath
$vcvarsallPath = Join-Path $vsPath "VC\Auxiliary\Build\vcvarsall.bat"

# Create a batch file to set up the environment
Set-Content -Path setup-env.bat -Value "@call `"$vcvarsallPath`" x64"

# Execute the batch file and export the environment variables
cmd /c "setup-env.bat && set > env-vars.txt"

# Read the environment variables and set them for the current process
Get-Content env-vars.txt | ForEach-Object {
if ($_ -match "^([^=]+)=(.*)$") {
$name = $matches[1]
$value = $matches[2]
# Set environment variable for the current process
[System.Environment]::SetEnvironmentVariable($name, $value)
# Also set it for GitHub Actions
echo "$name=$value" >> $env:GITHUB_ENV
}
}

- name: Set up GraalVM
uses: graalvm/setup-graalvm@v1
with:
java-version: '21'
distribution: 'graalvm'
github-token: ${{ secrets.GITHUB_TOKEN }}
native-image-job-reports: 'true'

- run: mvn clean install

- name: Build Native Image
run: mvn clean install -Pnative
run: mvn package -pl waver-cli -Pnative

- name: Upload Windows Native Executable
uses: actions/upload-artifact@v4
with:
name: waver-windows
path: waver-cli/target/waver-cli.exe

# release:
# name: Create Release
# needs: [native-linux, native-macos, native-windows]
# runs-on: ubuntu-latest
# if: github.event_name == 'push' && github.ref == 'refs/heads/main'
# permissions:
# contents: write
# steps:
# - name: Download all artifacts
# uses: actions/download-artifact@v4
# with:
# path: artifacts
#
# - name: Create Release
# id: create_release
# uses: softprops/action-gh-release@v1
# with:
# name: Release ${{ github.sha }}
# tag_name: release-${{ github.run_number }}
# draft: false
# prerelease: false
# files: |
# artifacts/waver-jar/*.jar
# artifacts/waver-linux/waver-cli
# artifacts/waver-macos/waver-cli
# artifacts/waver-windows/waver-cli.exe
# token: ${{ secrets.GITHUB_TOKEN }}
96 changes: 50 additions & 46 deletions .github/workflows/site-build-and-push.yml
Original file line number Diff line number Diff line change
@@ -1,66 +1,70 @@
name: Build and Push site

# This workflow now runs on pushes to 'main' AND on pull requests targeting 'main'.
on:
push:
branches: [ main, develop ]
branches: [ main ]
paths:
- 'waver-site/**'
pull_request:
branches: [ main, develop ]
branches: [ main ]
paths:
- 'waver-site/**'

workflow_dispatch:

env:
QUAY_NAMESPACE: sshaaf
IMAGE_NAME: waver-site
QUAY_REPOSITORY: quay.io/sshaaf/waver-site
IMAGE_NAME: quay.io/sshaaf/waver-site

jobs:
build-and-push:
environment: build
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
path: waver-site
permissions:
contents: read
packages: write

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Get Git SHA
id: git-sha
run: |
echo "sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
echo "full-sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
- name: Log in to Quay.io
# We log in for both events, but only push on a 'push' event.
# This is safe and simpler than conditionally logging in.
uses: docker/login-action@v3
with:
registry: quay.io
username: ${{ secrets.QUAY_USER }}
password: ${{ secrets.QUAY_TOKEN }}

- name: Log in to Quay.io
uses: docker/login-action@v3
with:
registry: quay.io
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_PASSWORD }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.IMAGE_NAME }}
tags: |
type=sha,format=short
type=raw,value=latest,enable={{is_default_branch}}

- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: ./waver-site
push: true
tags: |
${{ env.QUAY_REPOSITORY }}:${{ steps.git-sha.outputs.sha }}
${{ env.QUAY_REPOSITORY }}:latest
cache-from: type:gha
cache-to: type:gha,mode=max
platforms: linux/amd64,linux/arm64
# This step ONLY runs for pull requests. It builds the image but does NOT push.
- name: Build Docker image for PR
if: github.event_name == 'pull_request'
uses: docker/build-push-action@v5
with:
context: ./waver-site
push: false # <<< CRITICAL: push is set to false
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Output image info
run: |
echo "✅ Successfully built and pushed image:"
echo " Repository: ${{ env.QUAY_REPOSITORY }}"
echo " SHA Tag: ${{ steps.git-sha.outputs.sha }}"
echo " Latest Tag: latest"
echo " Full SHA: ${{ steps.git-sha.outputs.full-sha }}"
echo " Image URLs:"
echo " ${{ env.QUAY_REPOSITORY }}:${{ steps.git-sha.outputs.sha }}"
echo " ${{ env.QUAY_REPOSITORY }}:latest"
# This step ONLY runs on a push to the main branch. It builds AND pushes.
- name: Build and Push Docker image
if: github.event_name == 'push'
uses: docker/build-push-action@v5
with:
context: ./waver-site
push: true # <<< CRITICAL: push is set to true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
Loading
Loading