diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml new file mode 100644 index 0000000..802c160 --- /dev/null +++ b/.github/workflows/deploy.yaml @@ -0,0 +1,23 @@ +name: deploy-docker +run-name: deploy-docker ${{ github.actor }} +on: + workflow_dispatch: +jobs: + # https://github.com/appleboy/ssh-action + # act -W .github/workflows/deploy.yaml -j remote-deploy -s SSH_PASSWORD + remote-deploy: + runs-on: ubuntu-latest + steps: + - name: Remote Deployment + uses: appleboy/ssh-action@v0.1.8 + with: + host: frappet.com + username: frappet + password: ${{ secrets.SSH_PASSWORD }} + port: 22 + script: | + cd /home/frappet/docker/bma-ehr-recruit-qualifying-exam + docker-compose pull + docker-compose up -d + touch success + diff --git a/.github/workflows/local-build.yaml b/.github/workflows/local-build.yaml new file mode 100644 index 0000000..8c799b5 --- /dev/null +++ b/.github/workflows/local-build.yaml @@ -0,0 +1,34 @@ + +name: local-build +run-name: local-build ${{ github.actor }} +on: + # push: + # tags: + # - v1.** + # branches: + # - 'main' + # branches: + # - 'release-*' + + # Allow run workflow manually from Action tab + workflow_dispatch: +env: + REGISTRY: docker.frappet.com + CMS_IMAGE_NAME: demo/qualifying-exam-cms + CMS_IMAGE_TAG: 0.1.1 +jobs: + # act -W .github/workflows/local-build.yaml -j local-image + local-image: + runs-on: ubuntu-latest + steps: + - name: "Check out code" + uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: '18' + - name: Build and push docker image + uses: docker/build-push-action@v3 + with: + context: cms + load: true + tags: ${{env.REGISTRY}}/${{env.CMS_IMAGE_NAME}}:${{env.CMS_IMAGE_TAG}},${{env.REGISTRY}}/${{env.CMS_IMAGE_NAME}}:latest diff --git a/.github/workflows/release-dev.yaml b/.github/workflows/release-dev.yaml new file mode 100644 index 0000000..1f7c3bb --- /dev/null +++ b/.github/workflows/release-dev.yaml @@ -0,0 +1,72 @@ +name: releaseDev +run-name: releaseDev ${{ github.actor }} +on: + # push: + # tags: + # - 'v[0-9]+.[0-9]+.[0-9]+' + # tags-ignore: + # - '2.*' + # Allow run workflow manually from Action tab + workflow_dispatch: + inputs: + IMAGE_VER: + description: "version for build image" + type: string +env: + REGISTRY: docker.frappet.com + IMAGE_NAME: demo/test-fe-exam +jobs: + # act workflow_dispatch -W .github/workflows/release.yaml --input IMAGE_VER=v0.2.1-dev -s DOCKER_USER=sorawit -s DOCKER_PASS=P@ssword -s SSH_PASSWORD=P@ssw0rd + releaseDev: + runs-on: ubuntu-latest + steps: + # https://thekevinwang.com/2022/06/13/github-actions-survival-skills/ + - name: Check out code # checkout only cms is possible but I checkout all + uses: actions/checkout@v3 + - name: Gen Version + id: gen_ver + run: | + if [[ $GITHUB_REF == 'refs/tags/'* ]]; then + IMAGE_VER='${GITHUB_REF/refs\/tags\//}' + else + IMAGE_VER=${{ github.event.inputs.IMAGE_VER }} + fi + if [[ $IMAGE_VER == '' ]]; then + IMAGE_VER='beta' + fi + # echo "{\"version\":\"$IMAGE_VER\", \"builddate\":\"$(date +"%Y-%m-%d_%T")\",\"ref_name\":\"$GITHUB_REF\" }" > ./cms/src/lib/ver.json + # cat ./cms/src/lib/ver.json + echo '::set-output name=image_ver::'$IMAGE_VER + - name: Test Version + run: | + echo $GITHUB_REF + echo ${{ steps.gen_ver.outputs.image_ver }} + # cat ./cms/src/lib/ver.json + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login in to registry + uses: docker/login-action@v2 + with: + registry: ${{env.REGISTRY}} + username: ${{secrets.DOCKER_USER}} + password: ${{secrets.DOCKER_PASS}} + - name: Build and push docker image + uses: docker/build-push-action@v3 + with: + context: ./ + # platforms: linux/amd64,linux/arm64 + push: true + tags: ${{env.REGISTRY}}/${{env.IMAGE_NAME}}:${{ steps.gen_ver.outputs.image_ver }},${{env.REGISTRY}}/${{env.IMAGE_NAME}}:latest + # - name: Remote Deployment + # uses: appleboy/ssh-action@v0.1.8 + # with: + # host: frappet.com + # username: frappet + # password: ${{ secrets.SSH_PASSWORD }} + # port: 22 + # script: | + # cd /home/frappet/docker/bma-ehr-recruit-qualifying-exam + # docker-compose pull + # docker-compose up -d + # touch success + diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..392b1b7 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,72 @@ +name: release +run-name: release ${{ github.actor }} +on: + # push: + # tags: + # - 'v[0-9]+.[0-9]+.[0-9]+' + # tags-ignore: + # - '2.*' + # Allow run workflow manually from Action tab + workflow_dispatch: + # inputs: + # IMAGE_VER: + # description: "version for build image" + # type: string +env: + REGISTRY: docker.frappet.com + IMAGE_NAME: demo/test-fe-exam +jobs: + # act workflow_dispatch -W .github/workflows/release.yaml --input IMAGE_VER=v0.2.1-dev -s DOCKER_USER=sorawit -s DOCKER_PASS=P@ssword -s SSH_PASSWORD=P@ssw0rd + release: + runs-on: ubuntu-latest + steps: + # https://thekevinwang.com/2022/06/13/github-actions-survival-skills/ + - name: Check out code # checkout only cms is possible but I checkout all + uses: actions/checkout@v3 + - name: Gen Version + id: gen_ver + run: | + if [[ $GITHUB_REF == 'refs/tags/'* ]]; then + IMAGE_VER='${GITHUB_REF/refs\/tags\//}' + else + IMAGE_VER=${{ github.event.inputs.IMAGE_VER }} + fi + if [[ $IMAGE_VER == '' ]]; then + IMAGE_VER='beta' + fi + # echo "{\"version\":\"$IMAGE_VER\", \"builddate\":\"$(date +"%Y-%m-%d_%T")\",\"ref_name\":\"$GITHUB_REF\" }" > ./cms/src/lib/ver.json + # cat ./cms/src/lib/ver.json + echo '::set-output name=image_ver::'$IMAGE_VER + - name: Test Version + run: | + echo $GITHUB_REF + echo ${{ steps.gen_ver.outputs.image_ver }} + # cat ./cms/src/lib/ver.json + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login in to registry + uses: docker/login-action@v2 + with: + registry: ${{env.REGISTRY}} + username: ${{secrets.DOCKER_USER}} + password: ${{secrets.DOCKER_PASS}} + - name: Build and push docker image + uses: docker/build-push-action@v3 + with: + context: ./ + # platforms: linux/amd64,linux/arm64 + push: true + tags: ${{env.REGISTRY}}/${{env.IMAGE_NAME}}:${{ steps.gen_ver.outputs.image_ver }},${{env.REGISTRY}}/${{env.IMAGE_NAME}}:latest + # - name: Remote Deployment + # uses: appleboy/ssh-action@v0.1.8 + # with: + # host: frappet.com + # username: frappet + # password: ${{ secrets.SSH_PASSWORD }} + # port: 22 + # script: | + # cd /home/frappet/docker/bma-ehr-recruit-qualifying-exam + # docker-compose pull + # docker-compose up -d + # touch success + diff --git a/.github/workflows/release2.yaml b/.github/workflows/release2.yaml new file mode 100644 index 0000000..4f0b52e --- /dev/null +++ b/.github/workflows/release2.yaml @@ -0,0 +1,63 @@ +name: release-dev +run-name: release-dev ${{ github.actor }} +on: + # push: + # tags: + # - 'v[0-9]+.[0-9]+.[0-9]+' + # tags-ignore: + # - '2.*' + # Allow run workflow manually from Action tab + workflow_dispatch: +env: + REGISTRY: docker.frappet.com + IMAGE_NAME: demo/bma-ehr-recruit-exam-service +jobs: + # act workflow_dispatch -W .github/workflows/release2.yaml --input IMAGE_VER=v0.2.1-dev -s DOCKER_USER=sorawit -s DOCKER_PASS=P@ssword -s SSH_PASSWORD=P@ssw0rd + release-dev: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + # skip Set up QEMU because it fail on act and container + - name: Gen Version + id: gen_ver + run: | + if [[ $GITHUB_REF == 'refs/tags/'* ]]; then + IMAGE_VER='${GITHUB_REF/refs\/tags\//}' + else + IMAGE_VER=${{ github.event.inputs.IMAGE_VER }} + fi + if [[ $IMAGE_VER == '' ]]; then + IMAGE_VER='beta' + fi + echo '::set-output name=image_ver::'$IMAGE_VER + - name: Test Version + run: | + echo $GITHUB_REF + echo ${{ steps.gen_ver.outputs.image_ver }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login in to registry + uses: docker/login-action@v2 + with: + registry: ${{env.REGISTRY}} + username: ${{secrets.DOCKER_USER}} + password: ${{secrets.DOCKER_PASS}} + - name: Build and push docker image + uses: docker/build-push-action@v3 + with: + context: ./ + push: true + tags: ${{env.REGISTRY}}/${{env.IMAGE_NAME}}:${{ steps.gen_ver.outputs.image_ver }},${{env.REGISTRY}}/${{env.IMAGE_NAME}}:latest + - name: Remote Deployment + uses: appleboy/ssh-action@v0.1.8 + with: + host: frappet.com + username: frappet + password: ${{ secrets.SSH_PASSWORD }} + port: 22 + script: | + cd /home/frappet/docker/bma-ehr-recruit-exam + docker-compose pull + docker-compose up -d + touch success diff --git a/.github/workflows/remote-build.yaml b/.github/workflows/remote-build.yaml new file mode 100644 index 0000000..1a580f1 --- /dev/null +++ b/.github/workflows/remote-build.yaml @@ -0,0 +1,55 @@ +name: remote-build +run-name: remote-build ${{ github.actor }} +on: + # push: + # tags: + # - 'v[0-9]+.[0-9]+.[0-9]+' + # tags-ignore: + # - '2.*' + # Allow run workflow manually from Action tab + workflow_dispatch: +env: + REGISTRY: docker.frappet.com + CMS_IMAGE_NAME: demo/test-fe-exam + CMS_IMAGE_TAG: 0.2.1 +jobs: + # act --workflows .github/workflows/build.yaml --job remote-image -s DOCKER_USER -s DOCKER_PASS -s SSH_PASSWORD + # act -W .github/workflows/remote-build.yaml -j remote-image -s DOCKER_USER -s DOCKER_PASS -s SSH_PASSWORD + remote-image: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + # skip Set up QEMU because it fail on act and container + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login in to registry + uses: docker/login-action@v2 + with: + registry: ${{env.REGISTRY}} + username: ${{secrets.DOCKER_USER}} + password: ${{secrets.DOCKER_PASS}} + # Node no need because use 2 state build + # - uses: actions/setup-node@v3 + # with: + # node-version: '18' + - name: Build and push docker image + uses: docker/build-push-action@v3 + with: + context: ./ + # platforms: linux/amd64,linux/arm64 + push: true + tags: ${{env.REGISTRY}}/${{env.CMS_IMAGE_NAME}}:${{env.CMS_IMAGE_TAG}},${{env.REGISTRY}}/${{env.CMS_IMAGE_NAME}}:latest + # - name: Remote Deployment + # uses: appleboy/ssh-action@v0.1.8 + # with: + # host: frappet.com + # username: frappet + # password: ${{ secrets.SSH_PASSWORD }} + # port: 22 + # script: | + # cd /home/frappet/docker/bma-ehr-recruit-qualifying-exam + # docker-compose pull + # docker-compose up -d + # touch success + + diff --git a/BMA-EHR-Recurit-Exam-Service.csproj.user b/BMA-EHR-Recurit-Exam-Service.csproj.user deleted file mode 100644 index a768256..0000000 --- a/BMA-EHR-Recurit-Exam-Service.csproj.user +++ /dev/null @@ -1,9 +0,0 @@ - - - - https-api - - - ProjectDebugger - - \ No newline at end of file diff --git a/BMA-EHR-Recurit-Exam-Service.csproj b/BMA.EHR.Recurit.Exam.Service.csproj similarity index 95% rename from BMA-EHR-Recurit-Exam-Service.csproj rename to BMA.EHR.Recurit.Exam.Service.csproj index 224eb50..338c7d1 100644 --- a/BMA-EHR-Recurit-Exam-Service.csproj +++ b/BMA.EHR.Recurit.Exam.Service.csproj @@ -78,5 +78,13 @@ + + + PreserveNewest + + + PreserveNewest + + diff --git a/BMA-EHR-Recurit-Exam-Service.sln b/BMA.EHR.Recurit.Exam.Service.sln similarity index 88% rename from BMA-EHR-Recurit-Exam-Service.sln rename to BMA.EHR.Recurit.Exam.Service.sln index 33c1046..92f8873 100644 --- a/BMA-EHR-Recurit-Exam-Service.sln +++ b/BMA.EHR.Recurit.Exam.Service.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.4.33103.184 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BMA-EHR-Recurit-Exam-Service", "BMA-EHR-Recurit-Exam-Service.csproj", "{92F7A5C5-FA85-41C0-B17B-1B2AA90EA980}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BMA.EHR.Recurit.Exam.Service", "BMA.EHR.Recurit.Exam.Service.csproj", "{92F7A5C5-FA85-41C0-B17B-1B2AA90EA980}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/Controllers/TestController.cs b/Controllers/TestController.cs new file mode 100644 index 0000000..24cd6ba --- /dev/null +++ b/Controllers/TestController.cs @@ -0,0 +1,54 @@ +using BMA.EHR.Core; +using BMA.EHR.Recurit.Exam.Service.Request; +using BMA.EHR.Recurit.Exam.Service.Response; +using BMA.EHR.Recurit.Exam.Service.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Swashbuckle.AspNetCore.Annotations; + +namespace BMA.EHR.Recurit.Exam.Service.Controllers +{ + [Route("api/v{version:apiVersion}/test")] + [ApiVersion("1.0")] + [ApiController] + [Produces("application/json")] + [SwaggerTag("ทดสอบรัน api")] + public class TestController : BaseController + { + #region " Fields " + + #endregion + + #region " Constructor and Destructor " + + public TestController() + { + } + + #endregion + + /// + /// ข้อมูล สถานะ ผู้สมัครสอบ + /// + /// รหัสรอบสมัคร + /// + /// เมื่อทำการดึง ข้อมูล สถานะ ผู้สมัคร สำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + [ProducesResponseType(StatusCodes.Status500InternalServerError)] + public async Task> GetStatusTestService() + { + try + { + return Success(GlobalMessages.Success, "ผ่าน"); + } + catch (Exception ex) + { + return Error(ex); + } + } + } +} diff --git a/Dockerfile b/Dockerfile index 5f939cb..8e38a24 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,16 +7,17 @@ EXPOSE 443 FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build WORKDIR /src -COPY ["BMA-EHR-Recurit-Exam-Service.csproj", "."] -RUN dotnet restore "./BMA-EHR-Recurit-Exam-Service.csproj" +COPY ["nuget.config", "."] +COPY ["BMA.EHR.Recurit.Exam.Service.csproj", "."] +RUN dotnet restore "./BMA.EHR.Recurit.Exam.Service.csproj" COPY . . WORKDIR "/src/." -RUN dotnet build "BMA-EHR-Recurit-Exam-Service.csproj" -c Release -o /app/build +RUN dotnet build "BMA.EHR.Recurit.Exam.Service.csproj" -c Release -o /app/build FROM build AS publish -RUN dotnet publish "BMA-EHR-Recurit-Exam-Service.csproj" -c Release -o /app/publish /p:UseAppHost=false +RUN dotnet publish "BMA.EHR.Recurit.Exam.Service.csproj" -c Release -o /app/publish /p:UseAppHost=false FROM base AS final WORKDIR /app COPY --from=publish /app/publish . -ENTRYPOINT ["dotnet", "BMA-EHR-Recurit-Exam-Service.dll"] \ No newline at end of file +ENTRYPOINT ["dotnet", "BMA.EHR.Recurit.Exam.Service.dll"] \ No newline at end of file diff --git a/SeedHoliday.xlsx b/SeedHoliday.xlsx deleted file mode 100644 index 090d5a8..0000000 Binary files a/SeedHoliday.xlsx and /dev/null differ diff --git a/SeedInsignia.xlsx b/SeedInsignia.xlsx deleted file mode 100644 index c21f8e2..0000000 Binary files a/SeedInsignia.xlsx and /dev/null differ diff --git a/SeedOrganization.xlsx b/SeedOrganization.xlsx deleted file mode 100644 index d451d2b..0000000 Binary files a/SeedOrganization.xlsx and /dev/null differ diff --git a/SeedPosition.xlsx b/SeedPosition.xlsx deleted file mode 100644 index fe2b5be..0000000 Binary files a/SeedPosition.xlsx and /dev/null differ diff --git a/SeedPositionEmployee.xlsx b/SeedPositionEmployee.xlsx deleted file mode 100644 index f7b1e44..0000000 Binary files a/SeedPositionEmployee.xlsx and /dev/null differ diff --git a/global.json b/global.json new file mode 100644 index 0000000..a7670c9 --- /dev/null +++ b/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "7.0.201" + } +} \ No newline at end of file diff --git a/nuget.config b/nuget.config new file mode 100644 index 0000000..33b28ff --- /dev/null +++ b/nuget.config @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/obj/Debug/net7.0/apphost.exe b/obj/Debug/net7.0/apphost.exe index d394ff5..4141a0f 100644 Binary files a/obj/Debug/net7.0/apphost.exe and b/obj/Debug/net7.0/apphost.exe differ diff --git a/obj/project.assets.json b/obj/project.assets.json index 9a28fcc..caf8ff7 100644 --- a/obj/project.assets.json +++ b/obj/project.assets.json @@ -8089,9 +8089,9 @@ "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "D:\\BMA-EHR-Recurit-Exam-Service\\BMA-EHR-Recurit-Exam-Service.csproj", - "projectName": "BMA-EHR-Recurit-Exam-Service", - "projectPath": "D:\\BMA-EHR-Recurit-Exam-Service\\BMA-EHR-Recurit-Exam-Service.csproj", + "projectUniqueName": "D:\\BMA-EHR-Recurit-Exam-Service\\BMA.EHR.Recurit.Exam.Service.csproj", + "projectName": "BMA.EHR.Recurit.Exam.Service", + "projectPath": "D:\\BMA-EHR-Recurit-Exam-Service\\BMA.EHR.Recurit.Exam.Service.csproj", "packagesPath": "C:\\Users\\M\\.nuget\\packages\\", "outputPath": "D:\\BMA-EHR-Recurit-Exam-Service\\obj\\", "projectStyle": "PackageReference", @@ -8100,6 +8100,7 @@ "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" ], "configFilePaths": [ + "D:\\BMA-EHR-Recurit-Exam-Service\\NuGet.Config", "C:\\Users\\M\\AppData\\Roaming\\NuGet\\NuGet.Config", "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" @@ -8108,7 +8109,6 @@ "net7.0" ], "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, "https://api.nuget.org/v3/index.json": {}, "https://nuget.frappet.synology.me/v3/index.json": {} }, diff --git a/obj/project.nuget.cache b/obj/project.nuget.cache index d27fd5b..4c27fcb 100644 --- a/obj/project.nuget.cache +++ b/obj/project.nuget.cache @@ -1,8 +1,8 @@ { "version": 2, - "dgSpecHash": "GHJD9tKq4Uz8MAM/GqC5mQJmXk5Ncdn9hfw166jLA6Wa+8ouk2g+9sRBlMogv4j/lV7E4zm9ACPqfc8AtuShLw==", + "dgSpecHash": "jARShbZ7PIhhIRmoQr9ZlMRsoMjKYArRP27wUCJoLnZq6aAb2nxywy+XINyZW0hQINikWB8ZFgzBjUw6XqNheQ==", "success": true, - "projectFilePath": "D:\\BMA-EHR-Recurit-Exam-Service\\BMA-EHR-Recurit-Exam-Service.csproj", + "projectFilePath": "D:\\BMA-EHR-Recurit-Exam-Service\\BMA.EHR.Recurit.Exam.Service.csproj", "expectedPackageFiles": [ "C:\\Users\\M\\.nuget\\packages\\bma.ehr.core\\1.0.0\\bma.ehr.core.1.0.0.nupkg.sha512", "C:\\Users\\M\\.nuget\\packages\\bma.ehr.extensions\\1.0.1\\bma.ehr.extensions.1.0.1.nupkg.sha512",