Skip to content

add dynamic checks for required providers #1740

add dynamic checks for required providers

add dynamic checks for required providers #1740

Workflow file for this run

name: solidblocks
on:
workflow_dispatch:
push:
branches:
- 'main'
- 'next'
tags:
- 'v[0-9]+.[0-9]+.[0-9]+'
- 'v[0-9]+.[0-9]+.[0-9]+-rc[0-9]*'
env:
#SKIP_TESTS: ${{ contains(github.event.head_commit.message, '#skip-tests') || contains(github.event.ref, '-pre') }}
SKIP_TESTS: "integration"
BUILD_FAST: ${{ (github.ref == 'refs/heads/main' || contains(github.ref, '-rc') || contains(github.ref, 'next')) && 'true' || 'false' }}
HCLOUD_TOKEN: ${{ secrets.HCLOUD_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
GCP_SERVICE_ACCOUNT_KEY: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}
SOLIDBLOCKS_AWS_TEST_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
SOLIDBLOCKS_AWS_TEST_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
SOLIDBLOCKS_HETZNER_TEST_S3_ACCESS_KEY_ID: ${{ secrets.SOLIDBLOCKS_HETZNER_TEST_S3_ACCESS_KEY_ID }}
SOLIDBLOCKS_HETZNER_TEST_S3_SECRET_KEY: ${{ secrets.SOLIDBLOCKS_HETZNER_TEST_S3_SECRET_KEY }}
concurrency:
group: solidblocks
cancel-in-progress: true
permissions:
pages: write
id-token: write
contents: write
packages: write
checks: write
jobs:
info:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: Info
run: mise :info
solidblocks-cli:
strategy:
max-parallel: 4
fail-fast: false
matrix:
job:
- { runner: macos-latest, target: darwin-amd64 }
- { runner: macos-latest, target: darwin-arm64 }
- { runner: ubuntu-24.04, target: linux-amd64 }
- { runner: ubuntu-24.04, target: jvm-all }
- { runner: windows-latest, target: windows-amd64 }
runs-on: ${{ matrix.job.runner }}
env:
BUILD_TARGET: "${{ matrix.job.target }}"
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- uses: graalvm/setup-graalvm@v1
# mise currently does not support setting up graalvm on windows
if: ${{ env.BUILD_TARGET == 'windows-amd64' }}
with:
java-version: '24'
distribution: 'graalvm'
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Build Windows
if: ${{ env.BUILD_TARGET != 'jvm-all' && env.BUILD_TARGET == 'windows-amd64' }}
env:
# workaround https://github.com/graalvm/native-build-tools/issues/754#issuecomment-3450913085
#GRADLE_OPTS: "-Djava.io.tmpdir=${{ runner.temp }}"
GRADLE_OPTS: "-Djava.io.tmpdir=D:/a/_temp"
run: |
mise //solidblocks-cli:build:native ${{ matrix.job.target }}
- name: Build Non-Windows
if: ${{ env.BUILD_TARGET != 'jvm-all' && env.BUILD_TARGET != 'windows-amd64' }}
run: |
mise //solidblocks-cli:build:native ${{ matrix.job.target }}
- name: Build JVM
if: ${{ env.BUILD_TARGET == 'jvm-all' }}
shell: bash
working-directory: solidblocks-cli/
run: mise :build:jvm:all
- name: Archive Artifacts
uses: actions/upload-artifact@v7
with:
name: solidblocks-cli-${{ matrix.job.target }}
path: |
solidblocks-cli/build/blcks-cli-*.zip
solidblocks-cli-test:
needs:
- solidblocks-cli
- solidblocks-cloud-init
- solidblocks-rds-postgresql-hetzner-test
strategy:
max-parallel: 1
fail-fast: false
matrix:
job:
- { runner: macos-latest, target: darwin-amd64 }
- { runner: macos-latest, target: darwin-arm64 }
- { runner: ubuntu-24.04, target: linux-amd64 }
- { runner: windows-latest, target: windows-amd64 }
runs-on: ${{ matrix.job.runner }}
env:
BUILD_TARGET: ${{ matrix.job.target }}
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: Download all workflow run artifacts
uses: actions/download-artifact@v8
- name: Rename blcks
shell: bash
run: |
find ./solidblocks-cli-${{ matrix.job.target }} -name "blcks-cli-*.zip" -exec unzip {} \;
chmod +x ./blcks
cp ./blcks ./solidblocks-cli/blcks
- name: Test Integration
shell: bash
run: ./gradlew :solidblocks-cli:testIntegration
- name: Publish JUnit Results
uses: mikepenz/action-junit-report@v6
if: always()
with:
report_paths: "solidblocks-cli-test/build/test-results/**/*.xml"
check_name: solidblocks-cli-test-${{ matrix.job.target }}-junit
solidblocks-shell:
runs-on: ubuntu-24.04
defaults:
run:
working-directory: solidblocks-shell
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: install bzip2
run: sudo apt-get install -y bzip2
- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build
run: mise :build
- name: Test
run: mise :test
- name: Publish JUnit Results
uses: mikepenz/action-junit-report@v6
if: always()
with:
report_paths: '**/build/test-results/**/*.xml'
check_name: solidblocks-shell-junit
- name: Archive Test Artifacts
uses: actions/upload-artifact@v7
if: always()
with:
name: solidblocks-shell-test
path: |
**/build/reports/tests
- name: Archive Artifacts
uses: actions/upload-artifact@v7
with:
name: solidblocks-shell
path: |
solidblocks-shell/build/blcks-shell-*.zip
solidblocks-shell/build/snippets/*
solidblocks-do-python:
runs-on: ubuntu-24.04
defaults:
run:
working-directory: solidblocks-do-python
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: Build
run: mise :build
- name: Test
run: mise :test
- name: Archive Artifacts
uses: actions/upload-artifact@v7
with:
name: solidblocks-do-python
path: |
solidblocks-do-python/build/blcks_do*
solidblocks-k3s-ansible:
runs-on: ubuntu-24.04
defaults:
run:
working-directory: solidblocks-k3s-ansible
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: Build
run: mise :build
- name: Test Integration
run: mise :test:integration
- name: Archive Artifacts
uses: actions/upload-artifact@v7
with:
name: solidblocks-k3s-ansible
path: |
solidblocks-k3s-ansible/build/blcks-k3s-*
solidblocks-ansible:
runs-on: ubuntu-24.04
defaults:
run:
working-directory: solidblocks-ansible
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: Build
run: mise :build
- name: Test
run: mise :test
- name: Archive Artifacts
uses: actions/upload-artifact@v7
with:
name: solidblocks-ansible
path: |
solidblocks-ansible/build/blcks-*
solidblocks-rds-postgresql-ansible:
runs-on: ubuntu-24.04
defaults:
run:
working-directory: solidblocks-rds-postgresql-ansible
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: Build
run: mise :build
- name: Archive Artifacts
uses: actions/upload-artifact@v7
with:
name: solidblocks-rds-postgresql-ansible
path: |
solidblocks-rds-postgresql-ansible/build/*
solidblocks-test:
runs-on: ubuntu-24.04
defaults:
run:
working-directory: solidblocks-test
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: Download all workflow run artifacts
uses: actions/download-artifact@v8
- name: Build
run: mise :build
- name: Test
run: mise :test
- name: Publish JUnit Results
uses: mikepenz/action-junit-report@v6
if: always()
with:
report_paths: '**/build/test-results/**/*.xml'
check_name: solidblocks-test-junit
- name: Archive Test Artifacts
uses: actions/upload-artifact@v7
if: always()
with:
name: solidblocks-test-test
path: |
**/build/reports/tests
solidblocks-cloud:
runs-on: ubuntu-24.04
defaults:
run:
working-directory: solidblocks-cloud
env:
BLCKS_PASS_PROVIDER_SKIP_VALIDATION: "true"
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: Build
run: mise :build
- name: Test
run: mise :test
- name: Publish JUnit Results
uses: mikepenz/action-junit-report@v6
if: always()
with:
report_paths: '**/build/test-results/**/*.xml'
check_name: solidblocks-cloud-junit
- name: Archive Test Artifacts
if: always()
uses: actions/upload-artifact@v7
with:
name: solidblocks-cloud-test
path: |
**/build/reports/tests
solidblocks-cloud/build/*.schema.json
solidblocks-cloud-init:
runs-on: ubuntu-24.04
defaults:
run:
working-directory: solidblocks-cloud-init
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: Build
run: mise :build
- name: Test
run: mise :test
- name: Publish JUnit Results
uses: mikepenz/action-junit-report@v6
if: always()
with:
report_paths: "solidblocks-cloud-init/build/test-results/**/*.xml"
check_name: solidblocks-cloud-init-junit
- name: Archive Test Artifacts
if: always()
uses: actions/upload-artifact@v7
with:
name: solidblocks-cloud-init-test
path: |
**/build/reports/tests
- name: Archive Artifacts
uses: actions/upload-artifact@v7
with:
name: solidblocks-cloud-init
path: |
solidblocks-cloud-init/build/blcks-cloud-init-*.zip
solidblocks-cloud-init/build/snippets/blcks-cloud-init-bootstrap-*.sh
solidblocks-cloud-init/build/blcks-cloud-init-bootstrap.sh
solidblocks-rds-postgresql-hetzner:
runs-on: ubuntu-24.04
defaults:
run:
working-directory: solidblocks-rds-postgresql-hetzner
needs:
- solidblocks-cloud-init
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: Download all workflow run artifacts
uses: actions/download-artifact@v8
- name: Build
run: mise :build
- name: Archive Artifacts
uses: actions/upload-artifact@v7
with:
name: solidblocks-rds-postgresql-hetzner
path: |
solidblocks-rds-postgresql-hetzner/build/snippets/*
solidblocks-rds-postgresql-hetzner/build/blcks-terraform-rds-postgresql-hetzner-*.zip
solidblocks-web-s3-docker-hetzner:
runs-on: ubuntu-24.04
defaults:
run:
working-directory: solidblocks-web-s3-docker-hetzner
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: Build
run: mise :build
- name: Archive Artifacts
uses: actions/upload-artifact@v7
with:
name: solidblocks-web-s3-docker-hetzner
path: |
solidblocks-web-s3-docker-hetzner/build/snippets/*
solidblocks-web-s3-docker-hetzner/build/blcks-terraform-hcloud-web-s3-docker-*.zip
solidblocks-rds-postgresql-hetzner-test:
runs-on: ubuntu-24.04
needs:
- solidblocks-rds-postgresql-hetzner
- solidblocks-rds-postgresql-docker
strategy:
max-parallel: 4
fail-fast: false
matrix:
test_name: [ test-migration, test-restore-local, test-restore-s3, test-restore-gcp, test-private-network, test-arm, test-ssl ]
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: install postgresql-client
run: sudo apt-get install -y postgresql-client
- name: Download all workflow run artifacts
uses: actions/download-artifact@v8
- name: Build
run: mise //solidblocks-rds-postgresql-hetzner:build
- name: Test
run: mise //solidblocks-rds-postgresql-hetzner:${{ matrix.test_name }}
solidblocks-debug-container:
name: solidblocks-debug-container
runs-on: ubuntu-24.04
defaults:
run:
working-directory: solidblocks-debug-container
steps:
- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Checkout
uses: actions/checkout@v6
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: Set up QEMU
uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Build
run: mise :build
- name: Test
run: mise :test
- name: Publish JUnit Results
uses: mikepenz/action-junit-report@v6
if: always()
with:
report_paths: '**/build/test-results/**/*.xml'
check_name: solidblocks-debug-container-junit
- name: Archive Test Artifacts
if: always()
uses: actions/upload-artifact@v7
with:
name: solidblocks-debug-container-test
path: |
**/build/reports/tests
solidblocks-rds-postgresql-docker:
strategy:
max-parallel: 10
fail-fast: false
matrix:
job:
- { version: 14 }
- { version: 15 }
- { version: 16 }
- { version: 17 }
- { version: 18 }
runs-on: ubuntu-24.04
steps:
- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Checkout
uses: actions/checkout@v6
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: Restore cached layers
id: docker-layers-cache-restore
uses: actions/cache/restore@v5
with:
path: |
solidblocks-rds-postgresql-docker/.cache
key: ${{ runner.os }}-docker-layers
- name: Set up QEMU
uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Build
run: mise //solidblocks-rds-postgresql-docker:build-${{ matrix.job.version }}
- name: Save cached layers
id: cache-primes-save
uses: actions/cache/save@v5
with:
path: |
solidblocks-rds-postgresql-docker/.cache
key: ${{ runner.os }}-docker-layers
solidblocks-rds-postgresql-test:
runs-on: ubuntu-24.04
needs:
- solidblocks-rds-postgresql-docker
steps:
- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Checkout
uses: actions/checkout@v6
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: Test
run: mise //solidblocks-rds-postgresql-docker:test
- name: Publish JUnit Results
uses: mikepenz/action-junit-report@v6
if: always()
with:
report_paths: '**/build/test-results/**/*.xml'
check_name: solidblocks-rds-postgresql-test-junit
- name: Archive Test Artifacts
if: always()
uses: actions/upload-artifact@v7
with:
name: solidblocks-rds-postgresql-test
path: |
**/build/reports/tests
clean-cloud-resources:
runs-on: ubuntu-24.04
if: ${{ always() }}
needs:
- solidblocks-cloud
- solidblocks-cloud-init
- solidblocks-rds-postgresql-docker
- solidblocks-rds-postgresql-test
- solidblocks-rds-postgresql-hetzner
- solidblocks-cli-test
- solidblocks-cli
- solidblocks-rds-postgresql-hetzner-test
- solidblocks-debug-container
- solidblocks-test
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Download all workflow run artifacts
uses: actions/download-artifact@v8
- name: Hetzner Nuke
run: |
find ./solidblocks-cli-linux-amd64 -name "blcks-cli-*.zip" -exec unzip {} \;
chmod +x ./blcks
./blcks hetzner nuke --do-nuke
release:
runs-on: ubuntu-24.04
if: startsWith(github.ref, 'refs/tags/v')
needs:
- solidblocks-cloud
- solidblocks-shell
- solidblocks-cloud-init
- solidblocks-rds-postgresql-docker
- solidblocks-cli
- solidblocks-cli-test
- solidblocks-rds-postgresql-test
- solidblocks-rds-postgresql-hetzner
- solidblocks-rds-postgresql-hetzner-test
- solidblocks-debug-container
- solidblocks-do-python
- solidblocks-rds-postgresql-ansible
- solidblocks-k3s-ansible
- solidblocks-ansible
- solidblocks-web-s3-docker-hetzner
steps:
- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: Checkout
uses: actions/checkout@v6
- name: Download all workflow run artifacts
uses: actions/download-artifact@v8
- name: Login to Docker Hub
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Release Artifacts
env:
ORG_GRADLE_PROJECT_SIGNINGINMEMORYKEY: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGINMEMORYKEY }}
ORG_GRADLE_PROJECT_SIGNINGINMEMORYKEYPASSWORD: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGINMEMORYKEYPASSWORD }}
ORG_GRADLE_PROJECT_MAVENCENTRALUSERNAME: ${{ secrets.ORG_GRADLE_PROJECT_MAVENCENTRALUSERNAME }}
ORG_GRADLE_PROJECT_MAVENCENTRALPASSWORD: ${{ secrets.ORG_GRADLE_PROJECT_MAVENCENTRALPASSWORD }}
run: mise //...:release:artifacts
- name: Release Artifacts
uses: softprops/action-gh-release@v3
with:
body_path: CHANGELOG.md
files: |
solidblocks-shell/blcks-shell-*.zip
solidblocks-shell/snippets/*
solidblocks-cloud-init/blcks-cloud-init-*.zip
solidblocks-cloud-init/snippets/*
solidblocks-rds-postgresql-hetzner/snippets/*.zip
solidblocks-rds-postgresql-hetzner/blcks-terraform-rds-postgresql-hetzner-*.zip
solidblocks-cli-*/blcks-cli-*
solidblocks-do-python/blcks_do*
solidblocks-rds-postgresql-ansible/blcks-rds*
solidblocks-k3s-ansible/blcks-k3s-*
solidblocks-ansible/blcks-*
solidblocks-web-s3-docker-hetzner/snippets/*
solidblocks-web-s3-docker-hetzner/blcks-terraform-hcloud-web-s3-docker-*.zip
solidblocks-cloud/*.schema.json
documentation:
needs:
- solidblocks-shell
- solidblocks-cloud-init
- solidblocks-rds-postgresql-docker
- solidblocks-cli
- solidblocks-cli-test
- solidblocks-rds-postgresql-test
- solidblocks-rds-postgresql-hetzner
- solidblocks-rds-postgresql-hetzner-test
- solidblocks-debug-container
- solidblocks-test
- solidblocks-do-python
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-24.04
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: recursive
- name: Mise setup
uses: jdx/mise-action@v4
with:
experimental: true
- name: Download all workflow run artifacts
uses: actions/download-artifact@v8
- name: Build Documentation
run: mise documentation:build
- name: Setup Pages
uses: actions/configure-pages@v6
- name: Upload artifact
uses: actions/upload-pages-artifact@v5
with:
path: './build/documentation/public'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v5