Create and push dockerfiles #18
This file contains hidden or 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: 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 | |