diff --git a/.github/workflows/local-build-push.yaml b/.github/workflows/local-build-push.yaml index ae19e26..63e97c6 100644 --- a/.github/workflows/local-build-push.yaml +++ b/.github/workflows/local-build-push.yaml @@ -1,6 +1,5 @@ - name: local-build -run-name: local-build ${{ github.actor }} +run-name: local-build ${{ github.actor }} on: # push: # tags: @@ -25,7 +24,7 @@ env: jobs: # act workflow_dispatch --reuse -W .github/workflows/local-build-push.yaml --input IMAGE_VER=v0.2.17-dev -s DOCKER_USER=sorawit -s DOCKER_PASS=P@ssword -s SSH_PASSWORD=P@ssw0rd - local-image: + local-image: runs-on: ubuntu-latest steps: - name: Check out code # checkout only cms is possible but I checkout all @@ -52,9 +51,10 @@ jobs: - name: Build and push docker image uses: docker/build-push-action@v4 - with: + with: context: cms load: true + file: docker/Dockerfile # cache-from: type=gha # cache-to: type=gha,mode=max # cache-from: type=local,src=/tmp/.buildx-cache @@ -76,4 +76,3 @@ jobs: docker-compose pull docker-compose up -d echo "${{ steps.gen_ver.outputs.image_ver }}"> success - diff --git a/.github/workflows/local-build.yaml b/.github/workflows/local-build.yaml index 1cb750b..ccd3ce1 100644 --- a/.github/workflows/local-build.yaml +++ b/.github/workflows/local-build.yaml @@ -1,6 +1,5 @@ - name: local-build -run-name: local-build ${{ github.actor }} +run-name: local-build ${{ github.actor }} on: # push: # tags: @@ -23,7 +22,7 @@ env: jobs: # act workflow_dispatch --reuse -W .github/workflows/local-build.yaml --input IMAGE_VER=v0.2.4-dev - local-image: + local-image: runs-on: ubuntu-latest steps: - name: Check out code # checkout only cms is possible but I checkout all @@ -44,9 +43,10 @@ jobs: - name: Build and push docker image uses: docker/build-push-action@v4 - with: + with: context: cms load: true + file: docker/Dockerfile cache-from: type=gha cache-to: type=gha,mode=max # cache-from: type=local,src=/tmp/.buildx-cache diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 2f4cb3c..ae0fd03 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,78 +1,79 @@ 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 + # 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/qualifying-exam-cms - DEPLOY_HOST: 49.0.91.80 - COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-qualifying-cms + REGISTRY: docker.frappet.com + IMAGE_NAME: demo/qualifying-exam-cms + DEPLOY_HOST: 49.0.91.80 + COMPOSE_PATH: /home/frappet/docker/bma/bma-ehr-qualifying-cms jobs: - # act workflow_dispatch --reuse -W .github/workflows/release.yaml --input IMAGE_VER=v0.2.4-dev -s DOCKER_USER=sorawit -s DOCKER_PASS=P@ssword -s SSH_PASSWORD=P@ssw0rd - # act --reuse --workflows .github/workflows/release.yaml --job release --input IMAGE_VER=v0.2.4-dev -s DOCKER_USER=sorawit -s DOCKER_PASS=P@ssword -s SSH_PASSWORD=P@ssw0rd + # act workflow_dispatch --reuse -W .github/workflows/release.yaml --input IMAGE_VER=v0.2.4-dev -s DOCKER_USER=sorawit -s DOCKER_PASS=P@ssword -s SSH_PASSWORD=P@ssw0rd + # act --reuse --workflows .github/workflows/release.yaml --job release --input IMAGE_VER=v0.2.4-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: Debug act - # if: ${{ env.ACT }} - # 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: CMS Build and push docker image - uses: docker/build-push-action@v3 - with: - context: cms - cache-from: type=gha - cache-to: type=gha,mode=max - platforms: linux/amd64 - 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: ${{env.DEPLOY_HOST}} - username: frappet - password: ${{ secrets.SSH_PASSWORD }} - port: 10102 - script: | - cd "${{env.COMPOSE_PATH}}" - docker compose pull - docker compose up -d - echo "${{ steps.gen_ver.outputs.image_ver }}"> success + 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: Debug act + # if: ${{ env.ACT }} + # 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: CMS Build and push docker image + uses: docker/build-push-action@v3 + with: + context: cms + file: docker/Dockerfile + cache-from: type=gha + cache-to: type=gha,mode=max + platforms: linux/amd64 + 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: ${{env.DEPLOY_HOST}} + username: frappet + password: ${{ secrets.SSH_PASSWORD }} + port: 10102 + script: | + cd "${{env.COMPOSE_PATH}}" + docker compose pull + docker compose up -d + echo "${{ steps.gen_ver.outputs.image_ver }}"> success diff --git a/cms/.dockerignore b/cms/docker/.dockerignore similarity index 100% rename from cms/.dockerignore rename to cms/docker/.dockerignore diff --git a/cms/Dockerfile b/cms/docker/Dockerfile similarity index 82% rename from cms/Dockerfile rename to cms/docker/Dockerfile index b016a68..cba5cc6 100644 --- a/cms/Dockerfile +++ b/cms/docker/Dockerfile @@ -1,5 +1,5 @@ # docker build . -t docker.frappet.com/demo/qualifying-exam-cms:latest -FROM node:18 as build +FROM node:latest as build-stage WORKDIR /app # optimize build speed by copy all .xx folder and COPY *.json . @@ -9,7 +9,7 @@ COPY static ./static COPY src ./src # RUN ls RUN npm run build -FROM node:18-alpine +FROM node:lts-alpine WORKDIR /app COPY --from=build /app . EXPOSE 80 diff --git a/cms/docker-compose.yaml b/cms/docker/docker-compose.yaml similarity index 100% rename from cms/docker-compose.yaml rename to cms/docker/docker-compose.yaml