xopera venv #67
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# GitHub runner seems not to support ipv6, thus, we can not test on bwCloud. | |
# See https://github.com/actions/runner-images/issues/668 | |
name: Night | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: '20 4 * * 2' | |
push: | |
branches: | |
- fix-night-workflow | |
concurrency: night | |
jobs: | |
night: | |
name: Night | |
runs-on: ubuntu-22.04 | |
steps: | |
################################################### | |
# | |
# Prepare | |
# | |
################################################### | |
- name: (PREPARE) Checkout Repository | |
uses: actions/checkout@v3 | |
with: | |
lfs: true | |
- name: (PREPARE) Setup Git | |
run: | | |
git config --global user.name "${GITHUB_ACTOR}" | |
git config --global user.email "${GITHUB_ACTOR}@users.noreply.${GITHUB_DOMAIN:-"github.com"}" | |
- name: (PREPARE) Setup gcloud CLI | |
uses: google-github-actions/setup-gcloud@v1 | |
with: | |
version: 438.0.0 | |
- name: (PREPARE) Setup GCP credentials | |
uses: actions/github-script@v3 | |
with: | |
script: | | |
if (!process.env.GCP_CREDENTIALS) throw 'GCP_CREDENTIALS undefined' | |
const fs = require('fs') | |
const file = 'gcp-credentials.json' | |
const content = new Buffer.from(process.env.GCP_CREDENTIALS, 'base64').toString('utf-8') | |
fs.writeFileSync(file, content) | |
env: | |
GCP_CREDENTIALS: ${{ secrets.GCP_CREDENTIALS }} | |
- name: (PREPARE) Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.10.13 | |
cache: pip | |
- name: (PREPARE) Cache Unfurl | |
uses: actions/cache@v3 | |
with: | |
path: /home/runner/.opera | |
key: xopera | |
- name: (PREPARE) Install xOpera | |
run: | | |
mkdir /home/runner/.opera | |
cd /home/runner/.opera | |
python3 -m venv .venv && . .venv/bin/activate | |
pip install --upgrade pip | |
pip install openstacksdk==0.61 pyyaml==5.3.1 opera==0.6.9 | |
# TODO: ./src/assets/scripts/install-unfurl.sh installs unfurl for root and not for "runner" | |
- name: (PREPARE) Install Unfurl | |
run: pip install unfurl==0.9.1 | |
################################################### | |
# | |
# Installation | |
# | |
################################################### | |
- name: (INSTALLATION) Install vintner | |
run: curl -fsSL https://vintner.opentosca.org/install.sh | sudo bash - | |
- name: (INSTALLATION) Verify signature | |
run: | | |
curl https://vintner.opentosca.org/vintner-release.gpg | gpg --import | |
wget https://github.com/opentosca/opentosca-vintner/releases/download/latest/vintner-linux-x64.asc | |
gpg --verify vintner-linux-x64.asc /usr/bin/vintner | |
################################################### | |
# | |
# Vintner | |
# | |
################################################### | |
- name: (VINTNER) Ensure that version is overridden | |
run: | | |
if [ "$(vintner --version)" == "__VERSION__" ]; then | |
exit 1 | |
fi | |
- name: (VINTNER) Ensure that license is overridden | |
run: | | |
if [ "$(vintner info license)" == "$(cat src/assets/LICENSE)" ]; then | |
exit 1 | |
fi | |
- name: (VINTNER) Ensure that dependencies are overridden | |
run: | | |
if [ "$(vintner info dependencies)" == "$(cat src/assets/dependencies.csv)" ]; then | |
exit 1 | |
fi | |
- name: (VINTNER) Test filesystem initialization | |
run: vintner setup init | |
- name: (VINTNER) Test resolver | |
run: vintner setup benchmark --seeds 10 250 | |
################################################### | |
# | |
# xOpera Motivation | |
# | |
################################################### | |
- name: (XOPERA-MOTIVATION) Deploy the production variant of xopera-motivation on GCP | |
run: | | |
vintner setup clean --force | |
vintner setup init | |
vintner orchestrators init xopera --dir /home/runner/.opera | |
vintner orchestrators enable --orchestrator xopera | |
vintner orchestrators attest --orchestrator xopera | |
vintner templates import --template motivation --path examples/xopera-motivation | |
vintner instances init --instance motivation --template motivation | |
vintner instances resolve --instance motivation --presets prod | |
vintner instances validate --instance motivation | |
cp examples/xopera-motivation/deployment-inputs.example.yaml examples/xopera-motivation/deployment-inputs.ignored.yaml | |
sed -i "/gcp_service_account_file:/c\gcp_service_account_file: $(pwd)/gcp-credentials.json" examples/xopera-motivation/deployment-inputs.ignored.yaml | |
vintner instances deploy --instance motivation --inputs examples/xopera-motivation/deployment-inputs.ignored.yaml | |
- name: (XOPERA-MOTIVATION) Test the production variant of xopera-motivation on GCP | |
run: curl --fail-with-body https://application-dot-stoetzms-387808.ey.r.appspot.com | |
- name: (XOPERA-MOTIVATION) Undeploy the production variant of xopera-motivation on GCP | |
run: vintner instances undeploy --instance motivation | |
if: always() | |
################################################### | |
# | |
# xOpera Pruning | |
# | |
################################################### | |
- name: (XOPERA-PRUNING) Deploy the elastic variant of xopera-pruning on GCP | |
run: | | |
vintner setup clean --force | |
vintner setup init | |
vintner orchestrators init xopera --dir /home/runner/.opera | |
vintner orchestrators enable --orchestrator xopera | |
vintner orchestrators attest --orchestrator xopera | |
vintner templates import --template pruning --path examples/xopera-pruning | |
vintner instances init --instance pruning --template pruning | |
vintner instances resolve --instance pruning --presets elastic | |
vintner instances validate --instance pruning | |
echo "gcp_service_account_file: $(pwd)/gcp-credentials.json" > examples/xopera-pruning/deployment-inputs.ignored.yaml | |
vintner instances deploy --instance pruning --inputs examples/xopera-pruning/deployment-inputs.ignored.yaml | |
- name: (XOPERA-PRUNING) Test the elastic variant of xopera-pruning on GCP | |
run: curl --fail-with-body https://shop-dot-stoetzms-387808.ey.r.appspot.com | |
- name: (XOPERA-PRUNING) Undeploy the elastic variant of xopera-pruning on GCP | |
run: vintner instances undeploy --instance pruning | |
if: always() | |
################################################### | |
# | |
# Unfurl Artifacts | |
# | |
################################################### | |
- name: (UNFURL-ARTIFACTS) Deploy the enterprise plan of unfurl-artifacts on GCP | |
run: | | |
vintner setup clean --force | |
vintner setup init | |
vintner orchestrators init unfurl --no-venv | |
vintner orchestrators enable --orchestrator unfurl | |
vintner orchestrators attest --orchestrator unfurl | |
vintner templates import --template artifacts --path examples/unfurl-artifacts | |
vintner instances init --instance artifacts --template artifacts | |
vintner instances resolve --instance artifacts --inputs examples/unfurl-artifacts/tests/enterprise/inputs.yaml | |
echo "gcp_credentials: $(pwd)/gcp-credentials.json" > examples/unfurl-artifacts/deployment-inputs.ignored.yaml | |
vintner instances deploy --instance artifacts --inputs examples/unfurl-artifacts/deployment-inputs.ignored.yaml | |
- name: (UNFURL-ARTIFACTS) Test the enterprise plan of unfurl-artifacts on GCP | |
run: curl --fail-with-body https://shop-dot-stoetzms-387808.ey.r.appspot.com | |
- name: (UNFURL-ARTIFACTS) Undeploy the enterprise plan of unfurl-artifacts on GCP | |
run: vintner instances undeploy --instance artifacts | |
if: always() | |
################################################### | |
# | |
# Notification | |
# | |
################################################### | |
- name: (NOTIFICATION) Send success notification | |
run: | | |
curl -i -H "Accept: application/json" -H "Content-Type:application/json" -X POST --data "{\"content\": \"Night workflow [${GITHUB_RUN_ID}](https://github.com/OpenTOSCA/opentosca-vintner/actions/runs/${GITHUB_RUN_ID}) succeeded.\"}" ${DISCORD_WEBHOOK_NIGHT_WORKFLOW} | |
env: | |
DISCORD_WEBHOOK_NIGHT_WORKFLOW: ${{ secrets.DISCORD_WEBHOOK_NIGHT_WORKFLOW }} | |
if: success() | |
- name: (NOTIFICATION) Send failure notification | |
run: | | |
curl -i -H "Accept: application/json" -H "Content-Type:application/json" -X POST --data "{\"content\": \"Night workflow [${GITHUB_RUN_ID}](https://github.com/OpenTOSCA/opentosca-vintner/actions/runs/${GITHUB_RUN_ID}) failed.\"}" ${DISCORD_WEBHOOK_NIGHT_WORKFLOW} | |
env: | |
DISCORD_WEBHOOK_NIGHT_WORKFLOW: ${{ secrets.DISCORD_WEBHOOK_NIGHT_WORKFLOW }} | |
if: failure() | |
- name: (DISCORD) Send cancel notification | |
run: | | |
curl -i -H "Accept: application/json" -H "Content-Type:application/json" -X POST --data "{\"content\": \"Night workflow [${GITHUB_RUN_ID}](https://github.com/OpenTOSCA/opentosca-vintner/actions/runs/${GITHUB_RUN_ID}) cancelled.\"}" ${DISCORD_WEBHOOK_NIGHT_WORKFLOW} | |
env: | |
DISCORD_WEBHOOK_NIGHT_WORKFLOW: ${{ secrets.DISCORD_WEBHOOK_NIGHT_WORKFLOW }} | |
if: cancelled() |