Skip to content

Commit 4e8fdf8

Browse files
authored
ci: Test deployment via shared GitHub Action (#5)
1 parent 2f9632b commit 4e8fdf8

File tree

2 files changed

+172
-0
lines changed

2 files changed

+172
-0
lines changed

.github/workflows/test-ecmwf.yml

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
name: Deployment Test on ECMWF
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
os-external-network-name:
7+
required: true
8+
default: 'external-internet'
9+
10+
os-private-network-name:
11+
required: true
12+
default: 'private-cci1-ewcloud-eumetsat-ewc-communityhub'
13+
14+
os-security-group-name:
15+
required: true
16+
default: 'ssh'
17+
18+
os-keypair-name:
19+
required: true
20+
default: 'github-keypair'
21+
22+
os-flavor-name:
23+
required: true
24+
default: '8cpu-16gbmem-80gbdisk'
25+
26+
os-image-name:
27+
required: true
28+
default: 'ubuntu-24.04-20250604102601'
29+
30+
instance-name-prefix:
31+
required: true
32+
default: 'github'
33+
34+
ansible-user:
35+
required: true
36+
default: 'ubuntu'
37+
38+
path-to-main-file:
39+
required: true
40+
default: 'playbooks/ecmwf-data-flavour/ecmwf-data-flavour.yml'
41+
42+
path-to-requirements-file:
43+
required: false
44+
default: 'requirements.yml'
45+
46+
input-spec-json:
47+
required: false
48+
default: '{"reboot_if_required":"false","ecmwf_toolbox_env_wipe":"false","ecmwf_toolbox_env_name":"ecmwf-toolbox","ecmwf_toolbox_create_ipykernel":"true","conda_prefix":"/opt/conda","conda_user":"root"}'
49+
50+
permissions:
51+
contents: read
52+
actions: write
53+
54+
jobs:
55+
deploy-test:
56+
runs-on: ubuntu-latest
57+
timeout-minutes: 30
58+
steps:
59+
- name: Checkout code
60+
uses: actions/checkout@v4
61+
62+
- name: Test deployment
63+
uses: ewcloud/ewc-gh-action-test-deploy-ansible-playbook@v1
64+
with:
65+
os-auth-url: '${{ secrets.ECMWF_OS_AUTH_URL }}'
66+
os-region-name: '${{ secrets.ECMWF_OS_REGION_NAME }}'
67+
os-application-credential-id: '${{ secrets.ECMWF_OS_APPLICATION_CREDENTIAL_ID }}'
68+
os-application-credential-secret: '${{ secrets.ECMWF_OS_APPLICATION_CREDENTIAL_SECRET }}'
69+
os-external-network-name: '${{ inputs.os-external-network-name }}'
70+
os-private-network-name: '${{ inputs.os-private-network-name }}'
71+
os-security-group-name: '${{ inputs.os-security-group-name }}'
72+
os-keypair-name: '${{ inputs.os-keypair-name }}'
73+
os-flavor-name: '${{ inputs.os-flavor-name }}'
74+
os-image-name: '${{ inputs.os-image-name }}'
75+
instance-name-prefix: '${{ inputs.instance-name-prefix }}'
76+
ansible-ssh-private-key: '${{ secrets.ANSIBLE_SSH_PRIVATE_KEY }}'
77+
ansible-user: '${{ inputs.ansible-user }}'
78+
path-to-main-file: '${{ inputs.path-to-main-file }}'
79+
path-to-requirements-file: '${{ inputs.path-to-requirements-file }}'
80+
input-spec-json: '${{ inputs.input-spec-json }}'
81+
82+
- name: Upload Build Artifacts
83+
uses: actions/upload-artifact@v4
84+
with:
85+
name: workspace_artifacts
86+
path: ${{ github.workspace }}/artifacts
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
name: Deployment Test on EUMETSAT
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
os-external-network-name:
7+
required: true
8+
default: 'external'
9+
10+
os-private-network-name:
11+
required: true
12+
default: 'private'
13+
14+
os-security-group-name:
15+
required: true
16+
default: 'ssh'
17+
18+
os-keypair-name:
19+
required: true
20+
default: 'github-keypair'
21+
22+
os-flavor-name:
23+
required: true
24+
default: 'eo1.large'
25+
26+
os-image-name:
27+
required: true
28+
default: 'ubuntu-24.04-20250604102601'
29+
30+
instance-name-prefix:
31+
required: true
32+
default: 'github'
33+
34+
ansible-user:
35+
required: true
36+
default: 'ubuntu'
37+
38+
path-to-main-file:
39+
required: true
40+
default: 'playbooks/ecmwf-data-flavour/ecmwf-data-flavour.yml'
41+
42+
path-to-requirements-file:
43+
required: false
44+
default: 'requirements.yml'
45+
46+
input-spec-json:
47+
required: false
48+
default: '{"reboot_if_required":"false","ecmwf_toolbox_env_wipe":"false","ecmwf_toolbox_env_name":"ecmwf-toolbox","ecmwf_toolbox_create_ipykernel":"true","conda_prefix":"/opt/conda","conda_user":"root"}'
49+
50+
permissions:
51+
contents: read
52+
actions: write
53+
54+
jobs:
55+
deploy-test:
56+
runs-on: ubuntu-latest
57+
timeout-minutes: 30
58+
steps:
59+
- name: Checkout code
60+
uses: actions/checkout@v4
61+
62+
- name: Test deployment
63+
uses: ewcloud/ewc-gh-action-test-deploy-ansible-playbook@v1
64+
with:
65+
os-auth-url: '${{ secrets.EUMETSAT_OS_AUTH_URL }}'
66+
os-region-name: '${{ secrets.EUMETSAT_OS_REGION_NAME }}'
67+
os-application-credential-id: '${{ secrets.EUMETSAT_OS_APPLICATION_CREDENTIAL_ID }}'
68+
os-application-credential-secret: '${{ secrets.EUMETSAT_OS_APPLICATION_CREDENTIAL_SECRET }}'
69+
os-external-network-name: '${{ inputs.os-external-network-name }}'
70+
os-private-network-name: '${{ inputs.os-private-network-name }}'
71+
os-security-group-name: '${{ inputs.os-security-group-name }}'
72+
os-keypair-name: '${{ inputs.os-keypair-name }}'
73+
os-flavor-name: '${{ inputs.os-flavor-name }}'
74+
os-image-name: '${{ inputs.os-image-name }}'
75+
instance-name-prefix: '${{ inputs.instance-name-prefix }}'
76+
ansible-ssh-private-key: '${{ secrets.ANSIBLE_SSH_PRIVATE_KEY }}'
77+
ansible-user: '${{ inputs.ansible-user }}'
78+
path-to-main-file: '${{ inputs.path-to-main-file }}'
79+
path-to-requirements-file: '${{ inputs.path-to-requirements-file }}'
80+
input-spec-json: '${{ inputs.input-spec-json }}'
81+
82+
- name: Upload Build Artifacts
83+
uses: actions/upload-artifact@v4
84+
with:
85+
name: workspace_artifacts
86+
path: ${{ github.workspace }}/artifacts

0 commit comments

Comments
 (0)