diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 0000000..9adab50 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,48 @@ +name: nodejs CD + +on: + push: + branches: + - master + +jobs: + continuous_deployment: + runs-on: ubuntu-latest + steps: + - name: checkout repository + uses: actions/checkout@v3 + + - name: setup docker + uses: docker/setup-buildx-action@v2 + + - name: build docker image + run: docker build -t user/app:latest . + - name: tag Docker image + run: docker tag user/app:latest ${{ secrets.DOCKER_USERNAME }}/nodejs-test-app:latest + + + - name: LOGIN TO DOCKER HUB + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + - name: push docker image to docker hub + run: docker push ${{ secrets.DOCKER_USERNAME }}/nodejs-test-app:latest + + - name: add ssh private key + run: | + + mkdir -p ~/.ssh + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + - name: add SSH known hosts + run: ssh-keyscan -t rsa ${{secrets.SSH_HOST }} >> ~/.ssh/known_hosts + - name: Deploy to Server + run: | + ssh -o StrictHostKeyChecking=no ubuntu@${{ secrets.SSH_HOST }} << 'EOF' + sudo docker pull ${{ secrets.DOCKER_USERNAME }}/nodejs-test-app:latest + sudo docker stop nodejs-test-app || true + sudo docker rm nodejs-test-app || true + sudo docker run -d --name nodejs-test-app -p 81:3000 ${{ secrets.DOCKER_USERNAME }}/nodejs-test-app:latest + EOF + diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..36c9540 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,32 @@ +name: nodejs CI... + +on: + pull_request: + branches: + - master + +jobs: + continuous_integration: + runs-on: ubuntu-latest + steps: + - name: checkout repository + uses: actions/checkout@v3 + + - name: setup node js 22 + uses: actions/setup-node@v4 + with: + node-version: "22" + cache: "npm" + + - name: install dependencies + run: npm in + + - name: build application + run: echo "Building application" + + - name: run unit tests + run: echo "running unit tests" + + - name: run itergration tests + run: echo "running integration tests" + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..db4fa18 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,6 @@ +FROM node:20-alpine +WORKDIR /app +ADD . /app +RUN npm install +EXPOSE 3000 +CMD ["npm" , "run" ,"start:dev"] \ No newline at end of file