diff --git a/.github/workflows/dockerhub-release-leave.yaml b/.github/workflows/dockerhub-release-leave.yaml new file mode 100644 index 00000000..e78ce73d --- /dev/null +++ b/.github/workflows/dockerhub-release-leave.yaml @@ -0,0 +1,90 @@ +name: DockerHub Release - Leave Service +run-name: DockerHub Release - Leave Service by ${{ github.actor }} +on: + push: + tags: + - "leave-[0-9]+.[0-9]+.[0-9]+" + branches: + - main + - develop + workflow_dispatch: + inputs: + IMAGE_VER: + description: 'Image version (e.g., latest, v1.0.0)' + required: false + default: 'latest' + +env: + DOCKERHUB_REGISTRY: docker.io + IMAGE_NAME: hrms-api-leave + +jobs: + release-to-dockerhub: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set output tags + id: vars + run: echo "tag=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT + + - name: Generate version + id: gen_ver + run: | + if [[ $GITHUB_REF == 'refs/tags/'* ]]; then + IMAGE_VER=${{ steps.vars.outputs.tag }} + elif [[ $GITHUB_REF == 'refs/heads/'* ]]; then + BRANCH_NAME=${GITHUB_REF#refs/heads/} + IMAGE_VER="${BRANCH_NAME}-latest" + else + IMAGE_VER=${{ github.event.inputs.IMAGE_VER }} + fi + if [[ $IMAGE_VER == '' ]]; then + IMAGE_VER='test-vBeta' + fi + echo "image_ver=${IMAGE_VER}" >> $GITHUB_OUTPUT + echo "Generated version: ${IMAGE_VER}" + + - name: Display version + run: | + echo "Git Ref: $GITHUB_REF" + echo "Image Version: ${{ steps.gen_ver.outputs.image_ver }}" + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + registry: ${{env.DOCKERHUB_REGISTRY}} + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Extract metadata for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }} + tags: | + type=ref,event=tag + type=ref,event=branch + type=raw,value=${{ steps.gen_ver.outputs.image_ver }} + type=raw,value=latest,enable={{is_default_branch}} + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: BMA.EHR.Leave/Dockerfile + platforms: linux/amd64 + push: true + tags: | + ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ steps.gen_ver.outputs.image_ver }} + ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max + + - name: Image digest + run: echo "Image pushed with digest ${{ steps.build.outputs.digest }}" diff --git a/.onedev-build-leave.yml b/.onedev-build-leave.yml deleted file mode 100644 index 6b94263e..00000000 --- a/.onedev-build-leave.yml +++ /dev/null @@ -1,138 +0,0 @@ -version: 38 -jobs: - - name: CI for UAT - steps: - - !CheckoutStep - name: checkout code - cloneCredential: !DefaultCredential {} - withLfs: false - withSubmodules: false - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - - !GenerateChecksumStep - name: generate project checksum - files: "**/*.csproj" - targetFile: checksum - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - - !SetupCacheStep - name: set up nuget cache - key: nuget_packages_@file:checksum@ - loadKeys: - - nuget_packages - paths: - - /root/.nuget/packages - uploadStrategy: UPLOAD_IF_NOT_HIT - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - - !CommandStep - name: test and analyze - runInContainer: true - image: mcr.microsoft.com/dotnet/sdk - interpreter: !DefaultInterpreter - commands: | - set -e - dotnet tool install -g roslynator.dotnet.cli - dotnet test -l trx --collect:"XPlat Code Coverage" - #/root/.dotnet/tools/roslynator analyze -o roslynator-analysis.xml - useTTY: true - condition: NEVER - - !PublishTRXReportStep - name: publish unit test report - reportName: Unit Test - filePatterns: "**/*.trx" - condition: NEVER - - !PublishCoberturaReportStep - name: publish code coverage report - reportName: Code Coverage - filePatterns: "**/coverage.cobertura.xml" - condition: NEVER - - !PublishRoslynatorReportStep - name: publish code problem report - reportName: Code Problems - filePatterns: roslynator-analysis.xml - failThreshold: HIGH - condition: NEVER - - !SetBuildVersionStep - name: set build version - buildVersion: "@tag@" - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - - !BuildImageStep - name: build docker image - dockerfile: ./BMA.EHR.Leave/Dockerfile - output: !RegistryOutput - tags: "@server@/bma-hrms/hrms-api-leave:@build_version@ @server@/bma-hrms/hrms-api-leave:latest" - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - triggers: - - !TagCreateTrigger - tags: leave-uat-* - branches: main - retryCondition: never - maxRetries: 3 - retryDelay: 30 - timeout: 14400 - - name: CI for PROD - steps: - - !CheckoutStep - name: checkout code - cloneCredential: !DefaultCredential {} - withLfs: false - withSubmodules: false - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - - !GenerateChecksumStep - name: generate project checksum - files: "**/*.csproj" - targetFile: checksum - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - - !SetupCacheStep - name: set up nuget cache - key: nuget_packages_@file:checksum@ - loadKeys: - - nuget_packages - paths: - - /root/.nuget/packages - uploadStrategy: UPLOAD_IF_NOT_HIT - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - - !CommandStep - name: test and analyze - runInContainer: true - image: mcr.microsoft.com/dotnet/sdk - interpreter: !DefaultInterpreter - commands: | - set -e - dotnet tool install -g roslynator.dotnet.cli - dotnet test -l trx --collect:"XPlat Code Coverage" - #/root/.dotnet/tools/roslynator analyze -o roslynator-analysis.xml - useTTY: true - condition: NEVER - - !PublishTRXReportStep - name: publish unit test report - reportName: Unit Test - filePatterns: "**/*.trx" - condition: NEVER - - !PublishCoberturaReportStep - name: publish code coverage report - reportName: Code Coverage - filePatterns: "**/coverage.cobertura.xml" - condition: NEVER - - !PublishRoslynatorReportStep - name: publish code problem report - reportName: Code Problems - filePatterns: roslynator-analysis.xml - failThreshold: HIGH - condition: NEVER - - !SetBuildVersionStep - name: set build version - buildVersion: "@tag@" - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - - !BuildImageStep - name: build docker image - dockerfile: ./BMA.EHR.Leave/Dockerfile - output: !RegistryOutput - tags: "@server@/bma-hrms/hrms-api-leave:@build_version@ @server@/bma-hrms/hrms-api-leave:latest" - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - triggers: - - !TagCreateTrigger - tags: leave-prod-* - branches: main - retryCondition: never - maxRetries: 3 - retryDelay: 30 - timeout: 14400 diff --git a/.onedev-build-placement.yml b/.onedev-build-placement.yml deleted file mode 100644 index dbadf72a..00000000 --- a/.onedev-build-placement.yml +++ /dev/null @@ -1,138 +0,0 @@ -version: 38 -jobs: - - name: CI for UAT Placement - steps: - - !CheckoutStep - name: checkout code - cloneCredential: !DefaultCredential {} - withLfs: false - withSubmodules: false - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - - !GenerateChecksumStep - name: generate project checksum - files: "**/*.csproj" - targetFile: checksum - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - - !SetupCacheStep - name: set up nuget cache - key: nuget_packages_@file:checksum@ - loadKeys: - - nuget_packages - paths: - - /root/.nuget/packages - uploadStrategy: UPLOAD_IF_NOT_HIT - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - - !CommandStep - name: test and analyze - runInContainer: true - image: mcr.microsoft.com/dotnet/sdk - interpreter: !DefaultInterpreter - commands: | - set -e - dotnet tool install -g roslynator.dotnet.cli - dotnet test -l trx --collect:"XPlat Code Coverage" - #/root/.dotnet/tools/roslynator analyze -o roslynator-analysis.xml - useTTY: true - condition: NEVER - - !PublishTRXReportStep - name: publish unit test report - reportName: Unit Test - filePatterns: "**/*.trx" - condition: NEVER - - !PublishCoberturaReportStep - name: publish code coverage report - reportName: Code Coverage - filePatterns: "**/coverage.cobertura.xml" - condition: NEVER - - !PublishRoslynatorReportStep - name: publish code problem report - reportName: Code Problems - filePatterns: roslynator-analysis.xml - failThreshold: HIGH - condition: NEVER - - !SetBuildVersionStep - name: set build version - buildVersion: "@tag@" - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - - !BuildImageStep - name: build docker image - dockerfile: ./BMA.EHR.Placement.Service/Dockerfile - output: !RegistryOutput - tags: "@server@/bma-hrms/hrms-api-placement:@build_version@ @server@/bma-hrms/hrms-api-placement:latest" - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - triggers: - - !TagCreateTrigger - tags: placement-uat-* - branches: main - retryCondition: never - maxRetries: 3 - retryDelay: 30 - timeout: 14400 - - name: CI for PROD Placement - steps: - - !CheckoutStep - name: checkout code - cloneCredential: !DefaultCredential {} - withLfs: false - withSubmodules: false - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - - !GenerateChecksumStep - name: generate project checksum - files: "**/*.csproj" - targetFile: checksum - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - - !SetupCacheStep - name: set up nuget cache - key: nuget_packages_@file:checksum@ - loadKeys: - - nuget_packages - paths: - - /root/.nuget/packages - uploadStrategy: UPLOAD_IF_NOT_HIT - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - - !CommandStep - name: test and analyze - runInContainer: true - image: mcr.microsoft.com/dotnet/sdk - interpreter: !DefaultInterpreter - commands: | - set -e - dotnet tool install -g roslynator.dotnet.cli - dotnet test -l trx --collect:"XPlat Code Coverage" - #/root/.dotnet/tools/roslynator analyze -o roslynator-analysis.xml - useTTY: true - condition: NEVER - - !PublishTRXReportStep - name: publish unit test report - reportName: Unit Test - filePatterns: "**/*.trx" - condition: NEVER - - !PublishCoberturaReportStep - name: publish code coverage report - reportName: Code Coverage - filePatterns: "**/coverage.cobertura.xml" - condition: NEVER - - !PublishRoslynatorReportStep - name: publish code problem report - reportName: Code Problems - filePatterns: roslynator-analysis.xml - failThreshold: HIGH - condition: NEVER - - !SetBuildVersionStep - name: set build version - buildVersion: "@tag@" - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - - !BuildImageStep - name: build docker image - dockerfile: ./BMA.EHR.Placement.Service/Dockerfile - output: !RegistryOutput - tags: "@server@/bma-hrms/hrms-api-placement:@build_version@ @server@/bma-hrms/hrms-api-placement:latest" - condition: ALL_PREVIOUS_STEPS_WERE_SUCCESSFUL - triggers: - - !TagCreateTrigger - tags: placement-prod-* - branches: main - retryCondition: never - maxRetries: 3 - retryDelay: 30 - timeout: 14400