diff --git a/.github/workflows/staging.yml b/.github/workflows/build_and_deploy.yml similarity index 81% rename from .github/workflows/staging.yml rename to .github/workflows/build_and_deploy.yml index c848bb5..d0a42b5 100644 --- a/.github/workflows/staging.yml +++ b/.github/workflows/build_and_deploy.yml @@ -1,18 +1,19 @@ -name: Deploy to staging when pushing on staging +name: Build and deploy when pushing on staging or main on: push: branches: + - main - staging - feat/github-ci jobs: - deploy-staging: + build-deploy: - environment: staging - - name: Deploy to staging from ${{ github.ref_name }}/${{ github.sha }} + name: Deploy from ${{ github.ref_name }}/${{ github.sha }} + + environment: ${{ github.ref_name == 'main' && 'prod' || 'staging' }} runs-on: ubuntu-latest @@ -21,6 +22,16 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 + - name: Set environment for branch + run: | + if [[ $GITHUB_REF_NAME == 'main' ]]; then + echo "ENV=my-project-stg" >> "$GITHUB_ENV" + echo "EN=staging" >> "$GITHUB_ENV" + else + echo "GLCOUD_PROJECT=my-project-prd" >> "$GITHUB_ENV" + echo "VERCEL_TARGET=production" >> "$GITHUB_ENV" + fi + - name: Get current CI job ID env: GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/prod.yml b/.github/workflows/prod.yml deleted file mode 100644 index 7c9e629..0000000 --- a/.github/workflows/prod.yml +++ /dev/null @@ -1,78 +0,0 @@ -name: Deploy to prod when pushing on main - -on: - push: - branches: - - main - -jobs: - - deploy-prod: - - environment: prod - - name: Deploy to prod from ${{ github.ref_name }}/${{ github.sha }} - - runs-on: ubuntu-latest - - steps: - - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Get current CI job ID - env: - GH_TOKEN: ${{ github.token }} - run: | - jobs=$(gh api repos/${{ github.repository }}/actions/runs/${{ github.run_id}}/attempts/${{ github.run_attempt }}/jobs) - job_id=$(echo $jobs | jq -r '.jobs[] | select(.runner_name=="${{ runner.name }}") | .id') - echo "CI_JOB_ID=$job_id" >> $GITHUB_ENV - echo "This CI job ID is ${{ env.CI_JOB_ID }}" - - - name: Install SSH key - uses: shimataro/ssh-key-action@v2 - with: - key: ${{ secrets.CI_DEPLOY_USER_SSH_PRIVATE_KEY }} - name: id_rsa - known_hosts: ${{ secrets.CI_DEPLOY_HOST }} - - - name: Adding server to known hosts - run: ssh-keyscan -H ${{ secrets.CI_DEPLOY_HOST }} >> ~/.ssh/known_hosts - - - name: Prepare deployment files on runner for this CI job ID - run: | - mkdir -p ./${{ env.CI_JOB_ID }} - cp -r ./app ./${{ env.CI_JOB_ID }} - cp ./docker-compose.yml ./${{ env.CI_JOB_ID }}/docker-compose.yml - cp ./Dockerfile ./${{ env.CI_JOB_ID }}/Dockerfile - cp ./pyproject.toml ./${{ env.CI_JOB_ID }}/pyproject.toml - - - name: Copy deployment files to remote server via SCP - uses: appleboy/scp-action@master - with: - host: ${{ secrets.CI_DEPLOY_HOST }} - username: ${{ secrets.CI_DEPLOY_USER }} - key: ${{ secrets.CI_DEPLOY_USER_SSH_PRIVATE_KEY }} - source: "./${{ env.CI_JOB_ID }}" - target: "/home/${{ secrets.CI_DEPLOY_USER }}/${{ env.CI_JOB_ID }}" - - - name: Execute server commands for deploy - uses: appleboy/ssh-action@master - with: - host: ${{ secrets.CI_DEPLOY_HOST }} - username: ${{ secrets.CI_DEPLOY_USER }} - key: ${{ secrets.CI_DEPLOY_USER_SSH_PRIVATE_KEY }} - script: | - cd /home/${{ secrets.CI_DEPLOY_USER }}/${{ env.CI_JOB_ID }} - mkdir -p /data/tchapbot - - export COMPOSE_FILE=/home/${{ secrets.CI_DEPLOY_USER }}/${{ env.CI_JOB_ID }}/docker-compose.yml - export COMPOSE_PROJECT_NAME=albert-tchapbot - - docker compose down - docker tag albert/tchapbot:latest albert/tchapbot:old || true - docker image rm albert/tchapbot:latest || true - docker compose up --detach - docker image rm albert/tchapbot:old || true - - rm -rf /home/${{ secrets.CI_DEPLOY_USER }}/${{ env.CI_JOB_ID }}