Skip to content

Build Release triggered by tonghan-gsh 🎉 #24

Build Release triggered by tonghan-gsh 🎉

Build Release triggered by tonghan-gsh 🎉 #24

###
# This workflow is used for release
# Triggers:
# 1. Manual trigger
# Jobs:
# 1. Check Code Format
# 2. PMD Scan
# 3. Calculate Version Number
# 4. Build Web Artifact
# 5. Build Client Artifact
# 6. Release (TODO)
# 7. Tag (TODO)
###
name: Build Release
run-name: Build Release triggered by ${{ github.actor }} 🎉
on:
workflow_dispatch:
inputs:
rpm_release:
description: "Rpm release number"
required: false
default: ''
type: string
image_tag:
description: "Docker image tag"
required: false
default: ''
type: string
env:
ODC_CURRENT_BRANCH: ${{ github.ref_name }}
ODC_TARGET_BRANCH: ${{ github.base_ref }}
jobs:
check-format:
name: Check Code Format
runs-on: ubuntu-latest
steps:
- name: Checkout workspace
uses: actions/checkout@v4
- name: Setup JDK 8
uses: actions/setup-java@v4
with:
java-version: "8"
distribution: "temurin"
cache: maven
- name: Check code format
run: mvn impsort:check formatter:validate
- name: Check license
run: mvn license:check
pmd-scan:
name: PMD Scan
runs-on: ubuntu-latest
steps:
- name: Checkout workspace
uses: actions/checkout@v4
- name: Setup JDK 8
uses: actions/setup-java@v4
with:
java-version: "8"
distribution: "temurin"
cache: maven
- name: Build project
run: mvn clean install -Dmaven.test.skip=true
- name: Run PMD scan
run: mvn pmd:check
calculate-version:
name: Calculate Version Number
needs: [ check-format, pmd-scan ]
runs-on: ubuntu-latest
outputs:
odc_rpm_release_number: ${{ steps.calculate_version.outputs.odc_rpm_release_number }}
odc_docker_image_tag: ${{ steps.calculate_version.outputs.odc_docker_image_tag }}
steps:
- name: Checkout workspace
uses: actions/checkout@v4
- name: Calculate version number
id: calculate_version
run: |
odc_rpm_release_number=$(date +%Y%m%d)
if [[ -n "${{ inputs.rpm_release }}" ]]; then odc_rpm_release_number="${{ inputs.rpm_release }}"; fi
echo "odc_rpm_release_number=${odc_rpm_release_number}" >> $GITHUB_OUTPUT
echo "odc_rpm_release_number=${odc_rpm_release_number}"
branch_match_regex="^(((dev/)?[0-9]\\.[0-9]\\.([0-9]{1,2}|x))|(release\\S*))$"
tag_prefix=`[[ "${{ env.ODC_CURRENT_BRANCH }}" =~ ${branch_match_regex} ]] && echo "" || echo "test-"`
odc_docker_image_tag="${tag_prefix}$(cat distribution/odc-server-VER.txt)"
if [[ -n "${{ inputs.image_tag }}" ]]; then odc_docker_image_tag="${{ inputs.image_tag }}"; fi
echo "odc_docker_image_tag=${odc_docker_image_tag}" >> $GITHUB_OUTPUT
echo "odc_docker_image_tag=${odc_docker_image_tag}"
build-web-arm64:
name: Build Web Artifact (ARM64)
needs: [ calculate-version ]
runs-on: ubuntu-latest
env:
odc_rpm_release_number: ${{ needs.calculate-version.outputs.odc_rpm_release_number }}
odc_docker_image_tag: ${{ needs.calculate-version.outputs.odc_docker_image_tag }}
steps:
- name: Checkout workspace
uses: actions/checkout@v4
- name: Setup JDK 8
uses: actions/setup-java@v4
with:
java-version: "8"
distribution: "temurin"
cache: maven
- name: action by obfarm++odc_build_arm++BUILD_DOCKER_IMAGE=1;BUILD_RPM=1;BUILD_RPM_VERSION=${{ inputs.rpm_release }};BUILD_DOCKER_TAG=${{ env.odc_docker_image_tag }}
uses: ./.github/obfarm/
id: build-web-arm64
with:
pipeline_id: ${{ github.run_id }}
project: ${{ github.repository }}
- name: Echo Build Result
run: |
main_version="$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout | cut -d - -f 1)"
new_version="${main_version}-${odc_rpm_release_number}"
echo "::notice ::BUILD RPM DOWNLOAD URL https://farm-use-for-odc.obs.cn-east-3.myhuaweicloud.com/odc-rpm/$GITHUB_RUN_ID/odc-server-${new_version}.aarch64.rpm"
echo "::notice ::BUILD DOCKER IMAGE DOWNLOAD URL https://farm-use-for-odc.obs.cn-east-3.myhuaweicloud.com/odc-image/$GITHUB_RUN_ID/odc-${{ env.odc_docker_image_tag }}-arm64.tar.gz"
build-web-x86_64:
name: Build Web Artifact Release(AMD64)
needs: [ calculate-version ]
runs-on: ubuntu-latest
env:
odc_rpm_release_number: ${{ needs.calculate-version.outputs.odc_rpm_release_number }}
odc_docker_image_tag: ${{ needs.calculate-version.outputs.odc_docker_image_tag }}
steps:
- name: Checkout workspace
uses: actions/checkout@v4
- name: action by obfarm++odc_build_amd++BUILD_DOCKER_IMAGE=1;BUILD_RPM=1;BUILD_RPM_VERSION=${{ inputs.rpm_release }};BUILD_DOCKER_TAG=${{ env.odc_docker_image_tag }}
uses: ./.github/obfarm/
id: build-web-arm64
with:
pipeline_id: ${{ github.run_id }}
project: ${{ github.repository }}
jobname: odc_build_amd
build-web-arm:
name: Build Web Artifact Release(ARM64)
needs: [ calculate-version ]
runs-on: ubuntu-latest
env:
odc_rpm_release_number: ${{ needs.calculate-version.outputs.odc_rpm_release_number }}
odc_docker_image_tag: ${{ needs.calculate-version.outputs.odc_docker_image_tag }}
steps:
- name: Checkout workspace
uses: actions/checkout@v4
- name: action by obfarm++odc_build_arm++BUILD_DOCKER_IMAGE=1;BUILD_RPM=1;BUILD_RPM_VERSION=${{ inputs.rpm_release }};BUILD_DOCKER_TAG=${{ env.odc_docker_image_tag }}
uses: ./.github/obfarm/
id: build-web-arm64
with:
pipeline_id: ${{ github.run_id }}
project: ${{ github.repository }}
jobname: odc_build_arm
build-client:
name: Build Client Artifact
needs: [ calculate-version ]
runs-on: ubuntu-latest
env:
odc_rpm_release_number: ${{ needs.calculate-version.outputs.odc_rpm_release_number }}
odc_docker_image_tag: ${{ needs.calculate-version.outputs.odc_docker_image_tag }}
steps:
- name: Checkout workspace
uses: actions/checkout@v4
- name: action by obfarm++odc_build_client
uses: ./.github/obfarm/
id: build-client
with:
pipeline_id: ${{ github.run_id }}
project: ${{ github.repository }}
jobname: odc_build_client
release:
name: Release (Skip for now)
needs: [ build-client ]
runs-on: ubuntu-latest
steps:
- name: Release artifacts
run: echo "Skip for now 🤪"
tag:
name: Tag (Skip for now)
needs: [ release ]
runs-on: ubuntu-latest
steps:
- name: Tag release
run: echo "Skip for now 🤪"