diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml new file mode 100644 index 0000000..99682c9 --- /dev/null +++ b/.gitea/workflows/deploy.yaml @@ -0,0 +1,65 @@ +name: mws-frontend + +on: + push: + branches: + - main + +env: + DOCKERHUB_REPO: mws-frontend + CONTAINER_NAME: mws-frontend + HOST_PORT: "3000" + CONTAINER_PORT: "80" + VITE_API_BASE_URL: https://mws-api.koda.id.vn + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Build Docker image + run: | + IMAGE_BASE="${{ secrets.REGISTRY_USER }}/${{ env.DOCKERHUB_REPO }}" + docker build \ + --build-arg VITE_API_BASE_URL="${{ env.VITE_API_BASE_URL }}" \ + -t "$IMAGE_BASE:${{ github.sha }}" \ + -t "$IMAGE_BASE:latest" . + + push: + needs: build + runs-on: ubuntu-latest + steps: + - name: Login and push to Docker Hub + run: | + IMAGE_BASE="${{ secrets.REGISTRY_USER }}/${{ env.DOCKERHUB_REPO }}" + echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login -u "${{ secrets.REGISTRY_USER }}" --password-stdin + docker push "$IMAGE_BASE:${{ github.sha }}" + docker push "$IMAGE_BASE:latest" + docker logout + + deploy: + needs: push + runs-on: ubuntu-latest + steps: + - name: Pull & run new container + run: | + IMAGE_BASE="${{ secrets.REGISTRY_USER }}/${{ env.DOCKERHUB_REPO }}" + + echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login -u "${{ secrets.REGISTRY_USER }}" --password-stdin + docker pull "$IMAGE_BASE:${{ github.sha }}" + docker logout + + docker stop "${{ env.CONTAINER_NAME }}" 2>/dev/null || true + docker rm "${{ env.CONTAINER_NAME }}" 2>/dev/null || true + + docker run -d \ + --name "${{ env.CONTAINER_NAME }}" \ + --restart unless-stopped \ + -p "${{ env.HOST_PORT }}:${{ env.CONTAINER_PORT }}" \ + "$IMAGE_BASE:${{ github.sha }}" + + docker images "$IMAGE_BASE" --format '{{.Repository}}:{{.Tag}}' \ + | grep -v -e ':latest$' -e ":${{ github.sha }}$" \ + | xargs -r docker rmi || true \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index fc53655..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,59 +0,0 @@ -stages: - - build - - push - - deploy - -variables: - DOCKERHUB_REPO: "mws-frontend" - CONTAINER_NAME: "mws-frontend" - HOST_PORT: "3000" - CONTAINER_PORT: "80" - DEPLOY_SSH_PORT: "8686" - VITE_API_BASE_URL: "https://mws-api.koda.id.vn" - -default: - tags: - - deploy - - build - -workflow: - rules: - - if: '$CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "master"' - - when: never - -build: - stage: build - script: - - IMAGE_BASE="$REGISTRY_USER/$DOCKERHUB_REPO" - - docker build --build-arg VITE_API_BASE_URL="$VITE_API_BASE_URL" -t "$IMAGE_BASE:$CI_COMMIT_SHORT_SHA" -t "$IMAGE_BASE:latest" . - -push: - stage: push - script: - - IMAGE_BASE="$REGISTRY_USER/$DOCKERHUB_REPO" - - echo "$REGISTRY_PASSWORD" | docker login -u "$REGISTRY_USER" --password-stdin - - docker push "$IMAGE_BASE:$CI_COMMIT_SHORT_SHA" - - docker push "$IMAGE_BASE:latest" - - docker logout - -deploy: - stage: deploy - environment: - name: production - before_script: - - command -v ssh-agent >/dev/null 2>&1 || (apt-get update -y && apt-get install -y openssh-client) - - eval "$(ssh-agent -s)" - - chmod 600 "$SSH_PRIVATE_KEY" - - ssh-add "$SSH_PRIVATE_KEY" - - mkdir -p ~/.ssh && chmod 700 ~/.ssh - - ssh-keyscan -p "$DEPLOY_SSH_PORT" -H "$DEPLOYER_HOST" >> ~/.ssh/known_hosts 2>/dev/null - - chmod 644 ~/.ssh/known_hosts - script: - - IMAGE_BASE="$REGISTRY_USER/$DOCKERHUB_REPO" - - ssh -p "$DEPLOY_SSH_PORT" "$DEPLOYER_USER@$DEPLOYER_HOST" "echo '$REGISTRY_PASSWORD' | docker login -u '$REGISTRY_USER' --password-stdin" - - ssh -p "$DEPLOY_SSH_PORT" "$DEPLOYER_USER@$DEPLOYER_HOST" "docker pull '$IMAGE_BASE:$CI_COMMIT_SHORT_SHA'" - - ssh -p "$DEPLOY_SSH_PORT" "$DEPLOYER_USER@$DEPLOYER_HOST" "docker stop '$CONTAINER_NAME' 2>/dev/null || true" - - ssh -p "$DEPLOY_SSH_PORT" "$DEPLOYER_USER@$DEPLOYER_HOST" "docker rm '$CONTAINER_NAME' 2>/dev/null || true" - - ssh -p "$DEPLOY_SSH_PORT" "$DEPLOYER_USER@$DEPLOYER_HOST" "docker run -d --name '$CONTAINER_NAME' --restart unless-stopped -p '$HOST_PORT:$CONTAINER_PORT' '$IMAGE_BASE:$CI_COMMIT_SHORT_SHA'" - - ssh -p "$DEPLOY_SSH_PORT" "$DEPLOYER_USER@$DEPLOYER_HOST" "docker images '$IMAGE_BASE' --format '{{.Repository}}:{{.Tag}}' | grep -v -e ':latest$' -e ':$CI_COMMIT_SHORT_SHA$' | xargs -r docker rmi || true" - - ssh -p "$DEPLOY_SSH_PORT" "$DEPLOYER_USER@$DEPLOYER_HOST" "docker logout" diff --git a/index.html b/index.html index 84ce678..b92fc54 100644 --- a/index.html +++ b/index.html @@ -7,20 +7,10 @@