Skip to content

Deploy

Deploy #9

name: Deploy
on:
workflow_call:
inputs:
environment:
required: true
type: string
workflow_dispatch:
inputs:
environment:
required: true
type: environment
jobs:
deploy:
name: ${{ inputs.environment }}
environment:
name: ${{ inputs.environment }}
url: ${{ inputs.environment == 'test' && 'https://keycloak-test.robojackets.org' || 'https://keycloak.robojackets.org' }}
permissions:
id-token: write
contents: read
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Nomad
uses: lucasmelin/[email protected]
- name: Set job name
run: |
sed -i '/job "keycloak" {/c\job "keycloak-${{ inputs.environment }}" {' keycloak.nomad
- name: Generate initial username and password
run: |
export KEYCLOAK_USERNAME=$(echo ${RANDOM}${RANDOM}${RANDOM}${RANDOM}${RANDOM}${RANDOM} | md5sum | cut --fields=1 --delimiter=" ")
export KEYCLOAK_PASSWORD=$(echo ${RANDOM}${RANDOM}${RANDOM}${RANDOM}${RANDOM}${RANDOM} | md5sum | cut --fields=1 --delimiter=" ")
echo "KEYCLOAK_USERNAME=${KEYCLOAK_USERNAME}" >> "$GITHUB_ENV"
echo "KEYCLOAK_PASSWORD=${KEYCLOAK_PASSWORD}" >> "$GITHUB_ENV"
echo "::add-mask::${KEYCLOAK_USERNAME}"
echo "::add-mask::${KEYCLOAK_PASSWORD}"
- name: Exchange GitHub JWT for Nomad token
id: get_token
uses: RoboJackets/nomad-jwt-auth@main
with:
url: https://nomad.bcdc.robojackets.net
jwtGithubAudience: https://nomad.bcdc.robojackets.net
methodName: GitHubActions
- name: Run Nomad job
env:
NOMAD_ADDR: https://nomad.bcdc.robojackets.net
run: |
nomad run -var=admin_username=${KEYCLOAK_USERNAME} -var=admin_password=${KEYCLOAK_PASSWORD} keycloak.nomad
- name: Wait for service to become healthy
timeout-minutes: 1
run: |
until curl --silent --show-error --fail ${{ inputs.environment == 'test' && 'https://keycloak-test.robojackets.org/realms/master/.well-known/openid-configuration' || 'https://keycloak.robojackets.org/realms/master/.well-known/openid-configuration' }}
do
sleep 1
done