diff --git a/.github/workflows/deploy-to-ionos.yaml b/.github/workflows/deploy-to-ionos.yaml new file mode 100644 index 0000000..f27b685 --- /dev/null +++ b/.github/workflows/deploy-to-ionos.yaml @@ -0,0 +1,125 @@ +# Please do not edit this file. +# More information under https://docs.ionos.space/docs/github-actions-customization/ +# version: 2022-07-21 + +name: "Deploy Now: Deploy to IONOS" + +on: + workflow_dispatch: + inputs: + version: + required: true + type: string + project-id: + required: true + type: string + branch-id: + required: true + type: string + deployment-ids: + require: true + type: string + push: + path: + - ./.github/workflows/deploy-to-ionos.yaml + +concurrency: ${{ github.ref }} + +jobs: + deploy-to-ionos: + if: ${{ github.event_name == 'workflow_dispatch' }} + runs-on: ubuntu-latest + permissions: + actions: read + strategy: + matrix: + deployment-id: ${{ fromJson(inputs.deployment-ids) }} + steps: + - name: Update deployment status + uses: ionos-deploy-now/project-action@v1 + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: ${{ inputs.project-id }} + branch-id: ${{ inputs.branch-id }} + deployment-id: ${{ matrix.deployment-id }} + action: update-status + status: in_progress + + - name: Retrieve stored deployment + uses: ionos-deploy-now/artifact-action@v1 + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: ${{ inputs.project-id }} + branch-id: ${{ inputs.branch-id }} + version: ${{ inputs.version }} + action: download + + - name: Fetch deployment info + uses: ionos-deploy-now/project-action@v1 + id: deployment + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: ${{ inputs.project-id }} + branch-id: ${{ inputs.branch-id }} + deployment-id: ${{ matrix.deployment-id }} + action: retrieve-info + + - name: Render templates + uses: ionos-deploy-now/template-renderer-action@v2 + id: template + with: + deployment-id: ${{ matrix.deployment-id }} + data: "[${{ steps.deployment.outputs.template-variables }}, ${{ toJson(secrets) }}]" + input-directory: deployment + output-directory: deployment + intermediate-data-file: deployment/.template-renderer-data + + - name: Render real site-url to all files + run: | + for file in `grep -rl 'https://IONOS_DEPLOY_NOW_SITE_URL' .`; do + sed -i $file -e 's|https://IONOS_DEPLOY_NOW_SITE_URL|${{ fromJson(steps.deployment.outputs.info).site-url }}|g' + done + + - name: Render SSH user secret name + run: echo SSH_USERNAME_SECRET=IONOS_DEPLOYMENT_`echo ${{ matrix.deployment-id }} | tr '[:lower:]' '[:upper:]' | tr '-' '_'`_SSH_USERNAME >> $GITHUB_ENV + + - name: Deploy to IONOS + uses: ionos-deploy-now/deploy-to-ionos-action@v2 + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: ${{ inputs.project-id }} + branch-id: ${{ inputs.branch-id }} + deployment-id: ${{ matrix.deployment-id }} + deployment-info: ${{ steps.deployment.outputs.info }} + ssh-user: ${{ secrets[env.SSH_USERNAME_SECRET] }} + ssh-key: ${{ secrets.IONOS_SSH_KEY }} + + - name: Update deployment status + if: ${{ always() }} + uses: ionos-deploy-now/project-action@v1 + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: ${{ inputs.project-id }} + branch-id: ${{ inputs.branch-id }} + deployment-id: ${{ matrix.deployment-id }} + action: update-status + status: ${{ job.status }} + + notify-deployment-finished: + needs: deploy-to-ionos + if: ${{ github.event_name == 'workflow_dispatch' && always() }} + runs-on: ubuntu-latest + steps: + - name: Notify all deployments finished + uses: ionos-deploy-now/project-action@v1 + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: ${{ inputs.project-id }} + branch-id: ${{ inputs.branch-id }} + action: set-deployments-finished diff --git a/.github/workflows/rsv-dossier-build.yaml b/.github/workflows/rsv-dossier-build.yaml new file mode 100644 index 0000000..a58fabe --- /dev/null +++ b/.github/workflows/rsv-dossier-build.yaml @@ -0,0 +1,54 @@ +# To better understand this file read this: +# https://docs.ionos.space/docs/github-actions-customization/ + +name: "Deploy Now: Execute Build" + +on: + workflow_call: + inputs: + site-url: + required: true + type: string + branch-id: + required: true + type: string + +env: + DEPLOYMENT_FOLDER: dist + +jobs: +# Please do not rename this job + build-project: + name: build rsv-dossier + runs-on: ubuntu-latest + steps: + - name: checkout + uses: actions/checkout@v4 + with: + submodules: 'recursive' + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: v22.x + + - name: Build Node assets + env: + CI: true + SITE_URL: ${{ inputs.site-url }} + run: | + npm ci + npm run build + +# Please do not touch the following action + - name: Store deployment content + uses: ionos-deploy-now/artifact-action@v1 + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: 5d169beb-9080-4f66-994d-15b35c2b2814 + branch-id: ${{ inputs.branch-id }} + version: ${{ github.sha }} + folder: ${{ env.DEPLOYMENT_FOLDER }} + config-file: .deploy-now/rsv-dossier/config.yaml + action: upload diff --git a/.github/workflows/rsv-dossier-orchestration.yaml b/.github/workflows/rsv-dossier-orchestration.yaml new file mode 100644 index 0000000..a21ef62 --- /dev/null +++ b/.github/workflows/rsv-dossier-orchestration.yaml @@ -0,0 +1,55 @@ +# Please do not edit this file. +# Build steps can be customized in the rsv-dossier-build.yaml. +# More information under https://docs.ionos.space/docs/github-actions-customization/ +# version: 2022-07-21 + +name: "Deploy Now: Orchestration" +run-name: "Deploy Now: Build rsv-dossier ยท ${{ github.event.head_commit.message || format('Triggered by {0}', github.triggering_actor) }}" + +on: + - push + - workflow_dispatch + +jobs: + retrieve-project: + name: check readiness + runs-on: ubuntu-latest + outputs: + deployment-enabled: ${{ fromJson(steps.project.outputs.info).deployment-enabled }} + branch-id: ${{ fromJson(steps.project.outputs.info).branch-id }} + steps: + - name: Fetch project data + uses: ionos-deploy-now/project-action@v1 + id: project + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: 5d169beb-9080-4f66-994d-15b35c2b2814 + action: retrieve-info + + + build: + name: build + needs: retrieve-project + if: ${{ needs.retrieve-project.outputs.deployment-enabled == 'true' }} + uses: ./.github/workflows/rsv-dossier-build.yaml + with: + site-url: https://IONOS_DEPLOY_NOW_SITE_URL + branch-id: ${{ needs.retrieve-project.outputs.branch-id }} + secrets: inherit + + deploy: + name: trigger deployment + needs: + - retrieve-project + - build + runs-on: ubuntu-latest + steps: + - name: Dispatch deployment(s) + uses: ionos-deploy-now/project-action@v1 + with: + api-key: ${{ secrets.IONOS_API_KEY }} + service-host: api-eu.ionos.space + project-id: 5d169beb-9080-4f66-994d-15b35c2b2814 + branch-id: ${{ needs.retrieve-project.outputs.branch-id }} + action: dispatch-deployments