name: Web Deployment on: workflow_dispatch: {} pull_request: branches: - main types: - opened - reopened - synchronize - ready_for_review push: branches: - main paths: - web/** jobs: determine-workflow: runs-on: 'ubuntu-latest' outputs: workflow_type: ${{ steps.workflow.outputs.workflow_type }} workflow_envs: ${{ steps.workflow.outputs.workflow_envs }} release_type: ${{ steps.workflow.outputs.release_type }} steps: - name: Determine Workflow id: workflow shell: bash run: | event=${{ github.event_name }} workflow_type='dev'; workflow_envs='["dev"]' if [[ $event == 'workflow_dispatch' && '${{ github.ref_name }}' == 'main' ]]; then workflow_type='release'; workflow_envs='["prod"]' fi echo "workflow_type=$workflow_type" >> $GITHUB_OUTPUT echo "workflow_envs=$workflow_envs" >> $GITHUB_OUTPUT echo "Running $workflow_type pipeline in environments: $workflow_envs" >> $GITHUB_STEP_SUMMARY build: environment: dev needs: determine-workflow runs-on: 'ubuntu-latest' permissions: contents: read packages: write steps: - uses: actions/checkout@v4 - name: Login to Docker uses: docker/login-action@v3 with: registry: docker.io username: ${{ secrets.DOCKERHUB_USER }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Docker Build Backend run: docker build -f web/Dockerfile -t john4064/shiftsync:latest_web ./web --build-arg TEST=${{ secrets.TEST }} - name: Docker Push Backend run: docker push john4064/shiftsync:latest_web deploy: needs: [build, determine-workflow] if: needs.build.result == 'success' && ${{ needs.determine-workflow.outputs.workflow_type }} == 'release' environment: prod runs-on: 'ubuntu-latest' permissions: contents: read packages: write steps: - name: Deploy to Coolify run: | echo ${{ needs.determine-workflow.outputs.workflow_type }} curl --request GET '${{ secrets.COOLIFY_WEBHOOK }}' --header 'Authorization: Bearer ${{ secrets.COOLIFY_TOKEN }}'