Skip to content

Commit

Permalink
Add IONOS Deploy Now workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
ionos-deploy-now[bot] committed Oct 12, 2023
1 parent 1ab999b commit 2e11978
Show file tree
Hide file tree
Showing 3 changed files with 235 additions and 0 deletions.
125 changes: 125 additions & 0 deletions .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
55 changes: 55 additions & 0 deletions .github/workflows/tomsjac.info-build.yaml
@@ -0,0 +1,55 @@
# 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 tomsjac.info
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v3
with:
submodules: 'recursive'

- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: v18.x

- name: Build Node assets
env:
CI: true
SITE_URL: ${{ inputs.site-url }}
run: |
npm ci
npm run build
npm run generate
# 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: 7b544a45-ae92-43e9-aacf-9c9cbd7ddda0
branch-id: ${{ inputs.branch-id }}
version: ${{ github.sha }}
folder: ${{ env.DEPLOYMENT_FOLDER }}
config-file: .deploy-now/tomsjac.info/config.yaml
action: upload
55 changes: 55 additions & 0 deletions .github/workflows/tomsjac.info-orchestration.yaml
@@ -0,0 +1,55 @@
# Please do not edit this file.
# Build steps can be customized in the tomsjac.info-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 tomsjac.info · ${{ 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: 7b544a45-ae92-43e9-aacf-9c9cbd7ddda0
action: retrieve-info


build:
name: build
needs: retrieve-project
if: ${{ needs.retrieve-project.outputs.deployment-enabled == 'true' }}
uses: ./.github/workflows/tomsjac.info-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: 7b544a45-ae92-43e9-aacf-9c9cbd7ddda0
branch-id: ${{ needs.retrieve-project.outputs.branch-id }}
action: dispatch-deployments

0 comments on commit 2e11978

Please sign in to comment.