Files
stream-applications/.github/workflows/recreate-runners.yml
Corneil du Plessis 670595e2ce Update setup-kubectl
2023-04-05 12:04:07 +02:00

145 lines
5.2 KiB
YAML

name: 'Recreate Runners'
on:
workflow_call:
inputs:
github_personal_access_token:
type: string
required: false
verbose:
type: string
required: false
default: 'false'
description: 'Increase verbosity of scripts'
secrets:
TMC_API_TOKEN:
required: true
GCP_CRED_JSON:
required: true
DOCKERHUB_USERNAME:
required: true
DOCKERHUB_TOKEN:
required: true
GH_ARC_APP_ID:
required: false
GH_ARC_INSTALLATION_ID:
required: false
GH_ARC_PRIVATE_KEY:
required: false
GH_ARC_PAT:
required: false
workflow_dispatch:
inputs:
github_personal_access_token:
description: 'Github PAT for scdf bot account. If not provided will use GH_ARC_APP_ID'
required: false
verbose:
required: false
description: 'Increase verbosity of scripts'
default: 'false'
jobs:
recreate-runners:
runs-on: ubuntu-latest
concurrency:
group: stream-apps-gh-runners
cancel-in-progress: false
steps:
- name: 'Configure: checkout stream-applications'
uses: actions/checkout@v3
- name: 'Configure: ensure scripts are executable'
shell: bash
run: find . -type f -name "*.sh" -exec chmod a+x '{}' \;
# - name: 'Check: active workflows'
# uses: ./.github/actions/there_can_be_only_one
# with:
# github_token: ${{ secrets.GITHUB_TOKEN }}
- name: 'Configure: runner type and cluster name'
shell: bash
run: |
echo "RUNNER_TYPE=$(./scripts/determine-provider.sh stream-apps-gh-runners)" >> $GITHUB_ENV
echo "CLUSTER_NAME=stream-apps-gh-runners" >> $GITHUB_ENV
- name: 'Configure: install TMC'
if: ${{ env.RUNNER_TYPE == 'tmc' }}
uses: ./.github/actions/install-tmc
- name: 'Configure: login to TMC'
if: ${{ env.RUNNER_TYPE == 'tmc' }}
uses: ./.github/actions/auth-tmc
with:
tmc_api_token: ${{ secrets.TMC_API_TOKEN }}
- name: 'Configure: install kubectl'
if: ${{ env.RUNNER_TYPE == 'tmc' }}
uses: azure/setup-kubectl@v3
- name: 'Configure: install carvel'
if: ${{ env.RUNNER_TYPE == 'gke' }}
uses: vmware-tanzu/carvel-setup-action@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: 'Configure: install helm'
uses: azure/setup-helm@v3
with:
version: '3.9.0'
token: ${{ secrets.GITHUB_TOKEN }}
- name: 'Configure: install gcloud cli'
if: ${{ env.RUNNER_TYPE == 'gke' }}
uses: ./.github/actions/install-gcloud
- name: 'Action: gcloud auth'
if: ${{ env.RUNNER_TYPE == 'gke' }}
id: auth_gcloud
uses: 'google-github-actions/auth@v0'
with:
create_credentials_file: true
credentials_json: ${{ secrets.GCP_CRED_JSON }}
- name: 'Configure: gcp credentials filename'
if: ${{ env.RUNNER_TYPE == 'gke' }}
shell: bash
run: echo "GCP_CRED_JSON_FILE=${{ steps.auth_gcloud.outputs.credentials_file_path }}" >> $GITHUB_ENV
- name: 'Configure: install Terraform'
if: ${{ env.RUNNER_TYPE == 'gke' }}
uses: hashicorp/setup-terraform@v2
- name: 'Action: delete GH Runners Cluster'
shell: bash
timeout-minutes: 10
env:
VERBOSE: ${{ inputs.verbose == 'true' && '--verbose' || '' }}
run: |
set +e
source ./scripts/kubeconfig-runners.sh
./scripts/delete-runners.sh
./scripts/delete-runners-${RUNNER_TYPE}.sh
- name: 'Action: create GH Runners Cluster'
shell: bash
timeout-minutes: 30
env:
VERBOSE: ${{ inputs.verbose == 'true' && '--verbose' || '' }}
run: ./scripts/create-runners-cluster-${RUNNER_TYPE}.sh
- name: 'Wait: for cluster'
shell: bash
timeout-minutes: 25
env:
VERBOSE: ${{ inputs.verbose == 'true' && '--verbose' || '' }}
run: ./scripts/wait-for-cluster-${RUNNER_TYPE}.sh stream-apps-gh-runners
- name: 'Configure: kubectl for stream-apps-gh-runners'
shell: bash
env:
VERBOSE: ${{ inputs.verbose == 'true' && '--verbose' || '' }}
run: |
source ./scripts/kubeconfig-${RUNNER_TYPE}.sh stream-apps-gh-runners
echo "KUBECONFIG=$KUBECONFIG" >> $GITHUB_ENV
- name: 'Configure: deploy actions-runner-controller into stream-apps-gh-runners'
shell: bash
timeout-minutes: 30
env:
VERBOSE: ${{ inputs.verbose == 'true' && '--verbose' || '' }}
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
GH_ARC_APP_ID: ${{ secrets.GH_ARC_APP_ID }}
GH_ARC_INSTALLATION_ID: ${{ secrets.GH_ARC_INSTALLATION_ID }}
GH_ARC_PRIVATE_KEY: ${{ secrets.GH_ARC_PRIVATE_KEY }}
GH_ARC_PAT: ${{ inputs.github_personal_access_token }}
run: ./scripts/deploy-gh-runners-${RUNNER_TYPE}.sh
- name: 'Retrieve: Pod Logs'
if: ${{ failure() }}
shell: bash
run: |
./scripts/get-logs-pods.sh actions-runner-system | tee ./pods.log