name: Web Deployment Production on: workflow_call: inputs: environments: type: string description: An optional list of environments to deploy to. default: 'prod' workflow_type: type: string description: An optional string for workflow types. default: 'prod' branch: type: string description: An optional string to define which branch to checkout. default: 'main' current_version: type: string description: Current Version of the package.json. default: '0.0.0' secrets: DOCKERHUB_USER: {} DOCKERHUB_TOKEN: {} TEST: {} COOLIFY_WEBHOOK: {} COOLIFY_TOKEN: {} jobs: check-inputs: runs-on: 'ubuntu-latest' environment: ${{ inputs.environments }} steps: - name: Check secrets present run: | if [[ -z "${{ secrets.COOLIFY_WEBHOOK }}" ]]; then echo "COOLIFY_WEBHOOK secret is empty or missing" exit 1 else echo "COOLIFY_WEBHOOK secret is set" fi if [[ -z "${{ secrets.COOLIFY_TOKEN }}" ]]; then echo "COOLIFY_TOKEN secret is empty or missing" exit 1 else echo "COOLIFY_TOKEN secret is set" fi if [[ -z "${{ secrets.DOCKERHUB_USER }}" ]]; then echo "DOCKERHUB_USER secret is empty or missing" exit 1 else echo "DOCKERHUB_USER secret is set" fi if [[ -z "${{ secrets.DOCKERHUB_TOKEN }}" ]]; then echo "DOCKERHUB_TOKEN secret is empty or missing" exit 1 else echo "DOCKERHUB_TOKEN secret is set" fi echo "Current Version: ${{inputs.current_version}}" build: needs: check-inputs if: needs.check-inputs.result == 'success' && inputs.workflow_type == 'release' environment: ${{ inputs.environments }} runs-on: 'ubuntu-latest' permissions: contents: read packages: write steps: - name: Branch Checkout uses: actions/checkout@v4 with: ref: ${{ inputs.branch }} - 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:prod_web ./web --build-arg ENVIRONMENT=prod - name: Docker Push Backend run: docker push john4064/shiftsync:prod_web deploy: needs: build if: needs.build.result == 'success' && inputs.workflow_type == 'release' environment: ${{ inputs.environments }} runs-on: 'ubuntu-latest' permissions: contents: read packages: write steps: - name: Deploy to Coolify run: | curl --request GET '${{ secrets.COOLIFY_WEBHOOK }}' --header 'Authorization: Bearer ${{ secrets.COOLIFY_TOKEN }}'