From a1f2c45160f82fc8dbf01d588e57d8ae548b3736 Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Tue, 26 Dec 2023 17:18:36 +0700 Subject: [PATCH] refactor: update release workflow and version gen --- .github/workflows/release.yaml | 167 ++++++++---------- .../src/controllers/versionController.ts | 2 +- Services/server/src/ver.json | 5 - Services/server/src/version.json | 4 + 4 files changed, 83 insertions(+), 95 deletions(-) delete mode 100644 Services/server/src/ver.json create mode 100644 Services/server/src/version.json diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 99d9c43..a952b65 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,89 +1,78 @@ -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: edm/core - DEPLOY_HOST: frappet.com - COMPOSE_PATH: /home/chamomind/docker/edm -jobs: - # act workflow_dispatch --reuse -W .github/workflows/release.yaml --input IMAGE_VER=v0.2.4-dev -s DOCKER_USER=robot\$edm+edm -s DOCKER_PASS=jJCfpfU7jfJrvb5BRbVr6Z9HbWNQWR69 -s SSH_KEY="$(< ~/.ssh/chamomind-ehr)" - # act --reuse --workflows .github/workflows/release.yaml --job release --input IMAGE_VER=v0.2.4-dev -s DOCKER_USER=robot\$edm+edm -s DOCKER_PASS=jJCfpfU7jfJrvb5BRbVr6Z9HbWNQWR69 -s SSH_KEY="$(< ~/.ssh/chamomind-ehr)" - release: - runs-on: ubuntu-latest - steps: - - 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\" }" > ./Services/server/src/ver.json - cat ./Services/server/src/ver.json - echo '::set-output name=image_ver::'$IMAGE_VER - - name: Debug act - if: ${{ env.ACT }} - run: | - echo $GITHUB_REF - echo ${{ steps.gen_ver.outputs.image_ver }} - cat ./Services/server/src/ver.json - echo ${{secrets.DOCKER_USER}} - echo ${{secrets.DOCKER_PASS}} - - 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: ./Services - platforms: linux/amd64 - push: true - tags: ${{env.REGISTRY}}/${{env.IMAGE_NAME}}:${{ steps.gen_ver.outputs.image_ver }},${{env.REGISTRY}}/${{env.IMAGE_NAME}}:latest - # this stop solve mysterious build fail next stop ?! - - name: Debug act - if: ${{ env.ACT }} - run: | - echo $GITHUB_REF - echo ${{ steps.gen_ver.outputs.image_ver }} - cat ./Services/server/src/ver.json - echo ${{secrets.DOCKER_USER}} - echo ${{secrets.DOCKER_PASS}} - - - name: Remote Deployment - uses: appleboy/ssh-action@v1.0.0 - # uses: appleboy/ssh-action@v0.1.8 - with: - host: ${{env.DEPLOY_HOST}} - username: chamomind - key: ${{ secrets.SSH_KEY }} - port: 10100 - script: | - cd "${{env.COMPOSE_PATH}}" - docker compose pull - docker compose up -d - echo "${{ steps.gen_ver.outputs.image_ver }}"> success - - +name: release + +run-name: release ${{ github.actor }} + +on: + workflow_dispatch: + inputs: + IMAGE_VER: + description: image version + type: string + +env: + REGISTRY: docker.frappet.com + IMAGE_NAME: edm/core + DEPLOY_HOST: frappet.com + COMPOSE_PATH: /home/chamomind/docker/edm + +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v3 + - name: Gen Version + id: gen_ver + run: | + if [[ $GITHUB_REF == 'refs/tags/'* ]]; then + IMAGE_VER="${GITHUB_REF##*/}" + else + IMAGE_VER=${{ github.event.inputs.IMAGE_VER }} + fi + if [[ $IMAGE_VER == '' ]]; then + IMAGE_VER='dev' + fi + echo "{\"version\":\"$IMAGE_VER\", \"date\":\"$(date +"%Y-%m-%d_%T")\",\"ref\":\"$GITHUB_REF\" }" > ./Services/server/src/version.json + echo '::set-output name=image_ver::'$IMAGE_VER + cat ./Services/server/src/version.json + - name: Debug act + if: ${{ env.ACT }} + run: | + echo $GITHUB_REF + echo ${{ steps.gen_ver.outputs.image_ver }} + cat ./Services/server/src/ver.json + echo ${{ secrets.DOCKER_USER }} + echo ${{ secrets.DOCKER_PASS }} + - 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: ./Services + platforms: linux/amd64 + push: true + tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.gen_ver.outputs.image_ver }},${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest + - name: Debug act + if: ${{ env.ACT }} + run: | + cat ./Services/server/src/ver.json + echo ${{ secrets.DOCKER_USER }} + echo ${{ secrets.DOCKER_PASS }} + - name: Remote Deployment + uses: appleboy/ssh-action@v1.0.0 + with: + host: ${{ env.DEPLOY_HOST }} + key: ${{ secrets.SSH_KEY }} + username: chamomind + port: 10100 + script: | + cd "${{ env.COMPOSE_PATH }}" + docker compose pull + docker compose up -d + echo "${{ steps.gen_ver.outputs.image_ver }}"> success diff --git a/Services/server/src/controllers/versionController.ts b/Services/server/src/controllers/versionController.ts index c732c1f..0c95215 100644 --- a/Services/server/src/controllers/versionController.ts +++ b/Services/server/src/controllers/versionController.ts @@ -1,5 +1,5 @@ import { Controller, Get, Route, Tags } from "tsoa"; -import version from "../ver.json"; +import version from "../version.json"; @Route("version") export class VersionController extends Controller { diff --git a/Services/server/src/ver.json b/Services/server/src/ver.json deleted file mode 100644 index 45b1a38..0000000 --- a/Services/server/src/ver.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "dev", - "builddate": "2020-01-01_00:00:00" -} - diff --git a/Services/server/src/version.json b/Services/server/src/version.json new file mode 100644 index 0000000..c0cff98 --- /dev/null +++ b/Services/server/src/version.json @@ -0,0 +1,4 @@ +{ + "version": "v0.0.0-dev", + "date": "2023-01-01_00:00:00" +}