|
name: Dockerize and Push to K8s |
|
|
|
on: |
|
push: |
|
branches: |
|
- main |
|
|
|
permissions: |
|
contents: read |
|
pages: write |
|
id-token: write |
|
|
|
jobs: |
|
|
|
build-and-push: |
|
runs-on: ubuntu-latest |
|
|
|
steps: |
|
- name: Checkout repository |
|
uses: actions/checkout@v2 |
|
|
|
- name: Set dotenv Vault key |
|
env: |
|
DOTENV_VAULT_KEY: ${{ secrets.DOTENV_VAULT_KEY }} |
|
run: echo "DOTENV_VAULT_KEY=${{ secrets.DOTENV_VAULT_KEY }}" >> $GITHUB_ENV |
|
|
|
- name: Install doctl |
|
uses: digitalocean/action-doctl@v2 |
|
with: |
|
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }} |
|
|
|
- name: Build container image |
|
run: docker build -t ${{ secrets.DIGITALOCEAN_REGISTRY }}/warden-ml:${{ github.sha }} . |
|
|
|
- name: Log in to DigitalOcean Container Registry with short-lived credentials |
|
run: doctl registry login |
|
|
|
- name: Push image to DigitalOcean Container Registry |
|
run: docker push ${{ secrets.DIGITALOCEAN_REGISTRY }}/warden-ml:${{ github.sha }} |
|
|
|
- name: Update deployment file |
|
run: | |
|
IMAGE=${{ secrets.DIGITALOCEAN_REGISTRY }}/warden-ml:${{ github.sha }} |
|
sed -i "s|<IMAGE>|$IMAGE|" $GITHUB_WORKSPACE/k8s/deployment.yaml |
|
|
|
- name: Save DigitalOcean kubeconfig with short-lived credentials |
|
run: doctl kubernetes cluster kubeconfig save ${{ secrets.DIGITALOCEAN_CLUSTER_ID }} |
|
|
|
- name: Deploy to DigitalOcean Kubernetes |
|
run: kubectl apply -f $GITHUB_WORKSPACE/k8s/ |
|
|
|
- name: Verify deployment |
|
run: kubectl rollout status deployment/warden-ml |