Skip to content

Create and push dockerfiles #18

Create and push dockerfiles

Create and push dockerfiles #18

name: Create and push dockerfiles
on:
workflow_dispatch:
inputs:
version:
description: 'Version tag to use for Docker images (e.g. 3.0.0)'
required: true
type: string
release:
types: [released]
jobs:
latest:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Git
run: |
git config user.name "${{ github.actor }}"
git config user.email "${{ github.actor }}@users.noreply.github.com"
- name: Delete existing latest tag (if exists)
run: |
git push --delete origin latest || true
git tag -d latest || true
- name: Tag Latest Release
run: |
# Get the latest release tag
latest_tag=$(git describe --tags --abbrev=0 --always)
# Get the commit hash of the latest release
latest_commit=$(git rev-list -n 1 $latest_tag)
# Create a new tag based on the latest commit
git tag -a latest -m "Latest release" $latest_commit
# Push the new tag to the repository
git push origin latest
env:
GITHUB_TOKEN: ${{ secrets.REPO_ACCESS_TOKEN }}
- name: Set JAVA_HOME
run: |
echo "JAVA_8_HOME=$JAVA_HOME_8_X64" >> $GITHUB_ENV
echo "JAVA_11_HOME=$JAVA_HOME_11_X64" >> $GITHUB_ENV
echo "JAVA_17_HOME=$JAVA_HOME_17_X64" >> $GITHUB_ENV
echo "JAVA_HOME=$JAVA_HOME_8_X64" >> $GITHUB_ENV
- name: Build Project
run: mvn install -DskipTests=true
- name: Determine Version
id: version
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
VERSION="${{ github.event.inputs.version }}"
else
VERSION="${GITHUB_REF#refs/tags/}"
# Strip leading 'v' if present (e.g. v3.0.4 → 3.0.4)
VERSION="${VERSION#v}"
fi
echo "Using version: $VERSION"
echo "version=$VERSION" >> $GITHUB_OUTPUT
- name: Build All Docker Images
run: |
export DOCKER_REPO=${{ secrets.docker_username }}
export VERSION=${GITHUB_REF#refs/tags/} # GitHub release tag
echo "Using version: $VERSION"
# OLD_DOCKER_MODULES=("agent-module/agent" "flink" "hbase/hbase-docker")
SPRING_BOOT_MODULES=("collector-starter" "web-starter" "batch" "collector" "web")
build_old_docker() {
MODULE_PATH=$1
echo "Building old Docker module $MODULE_PATH ..."
mvn docker:build -pl $MODULE_PATH -DskipTests=true
}
build_spring_boot() {
MODULE=$1
echo "Building Spring Boot module $MODULE (multi-arch)..."
mvn -pl $MODULE clean package spring-boot:build-image -DskipTests=true -Dspring-boot.build-image.platform=linux/amd64,linux/arm64
}
# Build old Docker modules
#for MODULE in "${OLD_DOCKER_MODULES[@]}"; do
# build_old_docker $MODULE
#done
# Set up Buildx for multi-arch Spring Boot builds
docker buildx create --use --name multiarch-builder || true
docker buildx inspect --bootstrap
# Build Spring Boot modules
for MODULE in "${SPRING_BOOT_MODULES[@]}"; do
build_spring_boot $MODULE
done
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.docker_username }}
password: ${{ secrets.docker_token }}
- name: Push All Docker Images
run: |
export DOCKER_REPO=${{ secrets.docker_username }}
export VERSION=${{ steps.version.outputs.version }}
echo "Pushing Docker images for version: $VERSION"
# --- Old Docker modules ---
docker tag $DOCKER_REPO/pinpoint-agent:latest $DOCKER_REPO/pinpoint-agent:$VERSION
docker push $DOCKER_REPO/pinpoint-agent:latest
docker push $DOCKER_REPO/pinpoint-agent:$VERSION
docker tag $DOCKER_REPO/pinpoint-flink:latest $DOCKER_REPO/pinpoint-flink:$VERSION
docker push $DOCKER_REPO/pinpoint-flink:latest
docker push $DOCKER_REPO/pinpoint-flink:$VERSION
docker tag $DOCKER_REPO/pinpoint-hbase-docker:latest $DOCKER_REPO/pinpoint-hbase-docker:$VERSION
docker push $DOCKER_REPO/pinpoint-hbase-docker:latest
docker push $DOCKER_REPO/pinpoint-hbase-docker:$VERSION
# --- Spring Boot modules (metric images) ---
docker tag $DOCKER_REPO/pinpoint-collector-starter:$VERSION-metric $DOCKER_REPO/pinpoint-collector-starter:latest-metric
docker push $DOCKER_REPO/pinpoint-collector-starter:$VERSION-metric
docker push $DOCKER_REPO/pinpoint-collector-starter:latest-metric
docker tag $DOCKER_REPO/pinpoint-web-starter:$VERSION-metric $DOCKER_REPO/pinpoint-web-starter:latest-metric
docker push $DOCKER_REPO/pinpoint-web-starter:$VERSION-metric
docker push $DOCKER_REPO/pinpoint-web-starter:latest-metric
docker tag $DOCKER_REPO/pinpoint-batch:$VERSION-metric $DOCKER_REPO/pinpoint-batch:latest-metric
docker push $DOCKER_REPO/pinpoint-batch:$VERSION-metric
docker push $DOCKER_REPO/pinpoint-batch:latest-metric
docker tag $DOCKER_REPO/pinpoint-collector:$VERSION-metric $DOCKER_REPO/pinpoint-collector:latest-metric
docker push $DOCKER_REPO/pinpoint-collector:$VERSION-metric
docker push $DOCKER_REPO/pinpoint-collector:latest-metric
docker tag $DOCKER_REPO/pinpoint-web:$VERSION-metric $DOCKER_REPO/pinpoint-web:latest-metric
docker push $DOCKER_REPO/pinpoint-web:$VERSION-metric
docker push $DOCKER_REPO/pinpoint-web:latest-metric