Update PR-deploy.yml #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: PR Deploy | |
on: | |
pull_request: | |
types: [opened, synchronize, reopened, closed] | |
push: | |
branches: | |
- staging | |
- main | |
- devops | |
jobs: | |
build_and_deploy: | |
if: github.event_name == 'push' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v2 | |
- name: Build Docker Image | |
run: | | |
IMAGE_TAG="latest" | |
docker buildx build --tag delve_be:${IMAGE_TAG} --file Dockerfile . | |
- name: List Docker Images | |
run: docker images | |
- name: Save Docker Image | |
run: | | |
IMAGE_TAG="latest" | |
docker save delve_be:${IMAGE_TAG} -o delve_be.tar | |
- name: Upload Docker Image Artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: docker-image | |
path: delve_be.tar | |
deploy_to_staging: | |
if: github.event_name == 'push' && (github.ref == 'refs/heads/staging') | |
needs: build_and_deploy | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download Docker Image Artifact | |
uses: actions/download-artifact@v2 | |
with: | |
name: docker-image | |
path: . | |
- name: Transfer Docker Image to Server | |
uses: appleboy/scp-action@master | |
with: | |
host: ${{ secrets.SSH_HOST }} | |
username: ${{ secrets.SSH_USER }} | |
key: ${{ secrets.SSH_KEY }} | |
source: delve_be.tar | |
target: /tmp/php | |
- name: Load and Deploy Docker Image on Server | |
uses: appleboy/[email protected] | |
with: | |
host: ${{ secrets.SSH_HOST }} | |
username: ${{ secrets.SSH_USER }} | |
key: ${{ secrets.SSH_KEY }} | |
script: | | |
IMAGE_TAG="latest" | |
cd /tmp/php | |
docker load < delve_be.tar | |
rm -f delve_be-${IMAGE_TAG}.tar | |
cd /var/www/langlearnai-be/pr-staging | |
git pull origin devops | |
docker-compose -f docker-compose.staging.yml down | |
docker-compose -f docker-compose.staging.yml up -d | |
deploy_to_prod: | |
if: github.event_name == 'push' && (github.ref == 'refs/heads/main') | |
needs: build_and_deploy | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download Docker Image Artifact | |
uses: actions/download-artifact@v2 | |
with: | |
name: docker-image | |
path: . | |
- name: Transfer Docker Image to Server | |
uses: appleboy/scp-action@master | |
with: | |
host: ${{ secrets.SSH_HOST }} | |
username: ${{ secrets.SSH_USER }} | |
key: ${{ secrets.SSH_KEY }} | |
source: delve_be.tar | |
target: /tmp/php | |
- name: Load and Deploy Docker Image on Server | |
uses: appleboy/[email protected] | |
with: | |
host: ${{ secrets.SSH_HOST }} | |
username: ${{ secrets.SSH_USER }} | |
key: ${{ secrets.SSH_KEY }} | |
script: | | |
IMAGE_TAG="latest" | |
cd /tmp/php | |
docker load < delve_be.tar | |
rm -f delve_be-${IMAGE_TAG}.tar | |
cd /var/www/langlearnai-be/pr-prod | |
git pull origin dev | |
docker-compose -f docker-compose.production.yml down | |
docker-compose -f docker-compose.production.yml up -d | |
deploy-pr: | |
if: github.event_name == 'pull_request' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v2 | |
- id: deploy | |
name: Pull Request Deploy | |
uses: hngprojects/pr-deploy@dev | |
with: | |
server_host: ${{ secrets.SSH_HOST }} | |
server_username: ${{ secrets.SSH_USER }} | |
server_password: ${{ secrets.SSH_PASSWORD }} | |
comment: true | |
context: '.' | |
dockerfile: 'Dockerfile' | |
exposed_port: '7001' | |
github_token: ${{ secrets.TOKEN }} | |
- name: Print Preview Url | |
run: | | |
echo "Preview Url: ${{ steps.deploy.outputs.preview-url }}" |