From da0adeab7830912a7e7db6c1b2bdcfea3d0a8202 Mon Sep 17 00:00:00 2001 From: Kittapath Date: Mon, 20 Mar 2023 14:26:57 +0700 Subject: [PATCH] add git workflow --- .github/workflows/deploy.yaml | 23 +++++++++ .github/workflows/local-build.yaml | 34 ++++++++++++++ .github/workflows/release.yaml | 72 +++++++++++++++++++++++++++++ .github/workflows/remote-build.yaml | 55 ++++++++++++++++++++++ 4 files changed, 184 insertions(+) create mode 100644 .github/workflows/deploy.yaml create mode 100644 .github/workflows/local-build.yaml create mode 100644 .github/workflows/release.yaml create mode 100644 .github/workflows/remote-build.yaml 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.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..6012f49 --- /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: cms + # 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/remote-build.yaml b/.github/workflows/remote-build.yaml new file mode 100644 index 0000000..999b900 --- /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/qualifying-exam-cms + 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: cms + # 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 + +