Skip to content

Update OCI workflow to deploy with container instances #3

Update OCI workflow to deploy with container instances

Update OCI workflow to deploy with container instances #3

Workflow file for this run

name: Deploy to Oracle Cloud Container Instance
on:
push:
branches: [ main ]
workflow_dispatch:
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up OCI CLI
uses: oracle-actions/setup-oci-cli@v1
with:
user-id: ${{ secrets.OCI_USER_OCID }}
fingerprint: ${{ secrets.OCI_FINGERPRINT }}
private-key: ${{ secrets.OCI_PRIVATE_KEY }}
tenancy-id: ${{ secrets.OCI_TENANCY_OCID }}
region: ${{ secrets.OCI_REGION }}
- name: Login to Oracle Cloud Container Registry
run: |
oci artifacts container repository login --username ${{ secrets.OCI_USER_OCID }} --password-stdin <<< "${{ secrets.OCI_AUTH_TOKEN }}" --region ${{ secrets.OCI_REGION }} --registry ${{ secrets.OCI_REGISTRY }}
- name: Build and Push Docker Image
run: |
# Get timestamp for unique tag
timestamp=$(date +%Y%m%d%H%M%S)
# Build the Docker image
docker build -t ${{ secrets.OCI_REGISTRY }}/${{ secrets.REPOSITORY_NAME }}:$timestamp -t ${{ secrets.OCI_REGISTRY }}/${{ secrets.REPOSITORY_NAME }}:latest .
# Push the Docker image
docker push ${{ secrets.OCI_REGISTRY }}/${{ secrets.REPOSITORY_NAME }}:$timestamp
docker push ${{ secrets.OCI_REGISTRY }}/${{ secrets.REPOSITORY_NAME }}:latest
# Save the image tag for later use
echo "IMAGE_TAG=$timestamp" >> $GITHUB_ENV
- name: Deploy to Oracle Cloud Container Instance
run: |
# Create or update container instance
oci container-instances container-instance create \
--compartment-id ${{ secrets.OCI_COMPARTMENT_ID }} \
--availability-domain ${{ secrets.OCI_AVAILABILITY_DOMAIN }} \
--display-name "admin-hub-api" \
--shape "VM.Standard.E2.1.Micro" \
--shape-config '{"ocpus": 1, "memoryInGBs": 1}' \
--vnics '[{"subnetId": "${{ secrets.OCI_SUBNET_ID }}", "displayName": "primary-vnic"}]' \
--containers '[{
"displayName": "admin-hub-api",
"imageUrl": "${{ secrets.OCI_REGISTRY }}/${{ secrets.REPOSITORY_NAME }}:${{ env.IMAGE_TAG }}",
"isResourcePrincipalDisabled": true
}]' \
--wait-for-state SUCCEEDED