diff --git a/.github/workflows/web-container.yml b/.github/workflows/web-container.yml new file mode 100644 index 0000000..fdd5bae --- /dev/null +++ b/.github/workflows/web-container.yml @@ -0,0 +1,65 @@ +name: Web Deployment Container +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 + nonprod-deploy: + needs: determine-workflow + if: needs.determine-workflow.outputs.workflow_type != 'release' + strategy: + max-parallel: 1 + matrix: + env: ${{ fromJson(needs.determine-workflow.outputs.workflow_envs) }} + uses: Doble-Technologies/ShiftSync-Website/.github/workflows/web-deploy-nonprod.yml@main + with: + environments: ${{ matrix.env }} + workflow_type: ${{ needs.determine-workflow.outputs.workflow_type }} + branch: ${{ github.ref_name }} + prod-deploy: + needs: determine-workflow + if: needs.determine-workflow.outputs.workflow_type == 'release' + strategy: + max-parallel: 1 + matrix: + env: ${{ fromJson(needs.determine-workflow.outputs.workflow_envs) }} + uses: Doble-Technologies/ShiftSync-Website/.github/workflows/web-deploy-prod.yml@main + with: + environments: ${{ matrix.env }} + workflow_type: ${{ needs.determine-workflow.outputs.workflow_type }} + branch: ${{ github.ref_name }} diff --git a/.github/workflows/web-deploy-nonprod.yml b/.github/workflows/web-deploy-nonprod.yml new file mode 100644 index 0000000..fd46a34 --- /dev/null +++ b/.github/workflows/web-deploy-nonprod.yml @@ -0,0 +1,53 @@ +name: Web Deployment Non-Production +on: + workflow_call: + inputs: + environments: + type: string + description: An optional list of environments to deploy to. + default: '["dev"]' + workflow_type: + type: string + description: An optional string for workflow types. + default: 'dev' + branch: + type: string + description: An optional string to define which branch to checkout. + default: 'main' +jobs: + build: + if: inputs.workflow_type != 'release' + environment: ${{ input.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:latest_web ./web --build-arg TEST=${{ secrets.TEST }} + - name: Docker Push Backend + run: docker push john4064/shiftsync:latest_web + # deploy: + # needs: build + # if: needs.build.result == 'success' && inputs.workflow_type != 'release' + # environment: ${{ input.environments }} + # runs-on: 'ubuntu-latest' + # permissions: + # contents: read + # packages: write + # steps: + # - name: Deploy to Coolify + # run: | + # echo ${{ inputs.workflow_type }} + # curl --request GET '${{ secrets.COOLIFY_WEBHOOK }}' --header 'Authorization: Bearer ${{ secrets.COOLIFY_TOKEN }}' + diff --git a/.github/workflows/web-deploy.yml b/.github/workflows/web-deploy.yml deleted file mode 100644 index 0fbd8a3..0000000 --- a/.github/workflows/web-deploy.yml +++ /dev/null @@ -1,112 +0,0 @@ -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 - nonprod-build: - needs: determine-workflow - if: needs.determine-workflow.outputs.workflow_type != 'release' - environment: dev - runs-on: 'ubuntu-latest' - outputs: - workflow_type: needs.determine-workflow.outputs.workflow_type - 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 - nonprod-deploy: - needs: nonprod-build - if: needs.nonprod-build.result == 'success' && needs.nonprod-build.outputs.workflow_type != 'release' - environment: dev - 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 }}' - prod-build: - needs: determine-workflow - if: needs.determine-workflow.outputs.workflow_type == 'release' - environment: prod - runs-on: 'ubuntu-latest' - outputs: - workflow_type: needs.determine-workflow.outputs.workflow_type - 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 - prod-deploy: - needs: prod-build - if: needs.prod-build.result == 'success' && needs.prod-build.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 }}' -