You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

88 lines
3.1 KiB

# This workflow will build a docker container, publish it to Azure Container Registry, and deploy it to Azure Kubernetes Service using a helm chart.
#
# To configure this workflow:
#
# 1. Set up the following secrets in your workspace:
# a. REGISTRY_USERNAME with ACR username
# b. REGISTRY_PASSWORD with ACR Password
# c. AZURE_CREDENTIALS with the output of `az ad sp create-for-rbac --sdk-auth`
#
# 2. Change the values for the REGISTRY_NAME, CLUSTER_NAME, CLUSTER_RESOURCE_GROUP and NAMESPACE environment variables (below).
on:
workflow_dispatch:
# Inputs the workflow accepts.
inputs:
name:
# Friendly description to be shown in the UI instead of 'name'
description: 'exec name'
# Default value if no value is explicitly provided
default: 'default execution'
# Input has to be provided for the workflow to run
required: false
# Environment variables available to all jobs and steps in this workflow
env:
REGISTRY_NAME: ${{ secrets.REGISTRY_NAME }}
CLUSTER_NAME: ${{ secrets.CLUSTER_NAME}}
CLUSTER_RESOURCE_GROUP: ${{ secrets.CLUSER_RG}}
REGISTRY_ENDPOINT: ${{ secrets.REGISTRY_ENDPOINT }}
NAMESPACE: default
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
# Connect to Azure Container registry (ACR)
- uses: azure/docker-login@v1
with:
login-server: ${{ env.REGISTRY_NAME }}.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
# Container build and push to a Azure Container registry (ACR)
- run: |
docker-compose build . -t ${{ secrets.REGISTRY_ENDPOINT }}:linux-dev
docker-compose push ${{ secrets.REGISTRY_ENDPOINT }}:linux-dev
# Set the target Azure Kubernetes Service (AKS) cluster.
- uses: azure/aks-set-context@v1
with:
creds: '${{ secrets.AZURE_CREDENTIALS }}'
cluster-name: ${{ env.CLUSTER_NAME }}
resource-group: ${{ env.CLUSTER_RESOURCE_GROUP }}
# Create namespace if doesn't exist
- run: |
kubectl create namespace ${{ env.NAMESPACE }} --dry-run -o json | kubectl apply -f -
# Create imagepullsecret for Azure Container registry (ACR)
- uses: azure/k8s-create-secret@v1
with:
container-registry-url: ${{ env.REGISTRY_NAME }}.azurecr.io
container-registry-username: ${{ secrets.REGISTRY_USERNAME }}
container-registry-password: ${{ secrets.REGISTRY_PASSWORD }}
secret-name: ${{ env.REGISTRY_NAME }}-registry-connection
namespace: ${{ env.NAMESPACE }}
# Baking the helm chart to generate the manifests to deploy
- uses: azure/k8s-bake@v1
with:
renderEngine: 'helm2'
helmChart: './deploy/k8s/helm/'
helm-version: 'latest'
id: bake
# Deploy app to AKS
- uses: azure/k8s-deploy@v1
with:
manifests: ${{ steps.bake.outputs.manifestsBundle }}
images: |
${{ secrets.REGISTRY_ENDPOINT }}:linux-dev
imagepullsecrets: |
${{ env.REGISTRY_NAME }}-registry-connection
namespace: ${{ env.NAMESPACE }}