Create main.yml #2
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
name: Build and release | |
on: | |
push: | |
branches: | |
- main | |
jobs: | |
terraform: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Set up Terraform | |
uses: hashicorp/setup-terraform@v1 | |
with: | |
terraform_version: 1.0.0 | |
- name: Azure Login | |
uses: azure/login@v1 | |
with: | |
creds: ${{ secrets.AZURE_CREDENTIALS }} | |
- name: Initialize Terraform | |
run: terraform init | |
- name: Plan Terraform | |
run: terraform plan | |
env: | |
ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} | |
ARM_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} | |
ARM_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} | |
ARM_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} | |
- name: Apply Terraform | |
id: apply | |
run: terraform apply -auto-approve | |
env: | |
ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} | |
ARM_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} | |
ARM_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} | |
ARM_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} | |
- name: Extract ACR Credentials | |
id: acr-creds | |
run: | | |
echo "::set-output name=login_server::$(terraform output -raw registry_login_server)" | |
echo "::set-output name=username::$(terraform output -raw registry_username)" | |
echo "::set-output name=password::$(terraform output -raw registry_password)" | |
docker_build: | |
runs-on: ubuntu-latest | |
needs: terraform | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Login to Azure Container Registry | |
uses: azure/docker-login@v1 | |
with: | |
login-server: ${{ secrets.ACR_LOGIN_SERVER }} | |
username: ${{ steps.terraform.outputs.acr-creds.outputs.username }} | |
password: ${{ steps.terraform.outputs.acr-creds.outputs.password }} | |
- name: Build and push Docker image | |
run: | | |
docker build -t ${{ secrets.ACR_LOGIN_SERVER }}/worldsbx2b:latest . | |
docker push ${{ secrets.ACR_LOGIN_SERVER }}/worldsbx2b:latest | |
kubernetes: | |
runs-on: ubuntu-latest | |
needs: docker_build | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Set up kubectl | |
uses: azure/setup-kubectl@v1 | |
with: | |
version: v1.19.7 | |
- name: Get AKS credentials | |
run: az aks get-credentials --resource-group ${terraform.workspace} --name ${terraform.workspace}_aks_cluster | |
- name: Substitute ACR Image in Kubernetes Manifest | |
run: | | |
sed -i 's|<ACR_LOGIN_SERVER>|${{ secrets.ACR_LOGIN_SERVER }}|g' deployment.yml | |
- name: Apply Kubernetes manifests | |
run: kubectl apply -f deployment.yml |