1
- name : Deploy to Oracle Cloud Infrastructure
1
+ name : Deploy to Oracle Cloud Container Instance
2
2
3
3
on :
4
4
push :
5
5
branches : [ main ]
6
+ workflow_dispatch :
6
7
7
8
jobs :
8
9
build-and-deploy :
9
10
runs-on : ubuntu-latest
10
11
11
12
steps :
12
13
- name : Checkout code
13
- uses : actions/checkout@v3
14
+ uses : actions/checkout@v2
14
15
15
- - name : Set up Docker Buildx
16
- uses : docker/setup-buildx-action@v2
17
-
18
- - name : Login to Oracle Cloud Infrastructure Registry
19
- uses : docker/login-action@v2
20
- with :
21
- registry : ${{ secrets.OCI_REGISTRY }}
22
- username : ${{ secrets.OCI_USERNAME }}
23
- password : ${{ secrets.OCI_AUTH_TOKEN }}
24
-
25
- - name : Build and push Docker image
26
- uses : docker/build-push-action@v4
16
+ - name : Set up OCI CLI
17
+ uses : oracle-actions/setup-oci-cli@v1
27
18
with :
28
- context : .
29
- push : true
30
- tags : ${{ secrets.OCI_REGISTRY }}/${{ secrets.OCI_NAMESPACE }}/adminhubapi:${{ github.sha }}
19
+ user-id : ${{ secrets.OCI_USER_OCID }}
20
+ fingerprint : ${{ secrets.OCI_FINGERPRINT }}
21
+ private-key : ${{ secrets.OCI_PRIVATE_KEY }}
22
+ tenancy-id : ${{ secrets.OCI_TENANCY_OCID }}
23
+ region : ${{ secrets.OCI_REGION }}
31
24
32
- - name : Install OCI CLI
25
+ - name : Login to Oracle Cloud Container Registry
33
26
run : |
34
- curl -L -O https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh
35
- chmod +x install.sh
36
- ./install.sh --accept-all-defaults
37
- echo "$HOME/lib/oracle-cli/bin" >> $GITHUB_PATH
27
+ oci artifacts container repository login --username ${{ secrets.OCI_USER_OCID }} --password-stdin <<< "${{ secrets.OCI_AUTH_TOKEN }}" --region ${{ secrets.OCI_REGION }} --registry ${{ secrets.OCI_REGISTRY }}
38
28
39
- - name : Configure OCI CLI
29
+ - name : Build and Push Docker Image
40
30
run : |
41
- mkdir -p ~/.oci
42
- echo "${{ secrets.OCI_CONFIG }}" > ~/.oci/config
43
- echo "${{ secrets.OCI_KEY }}" > ~/.oci/key.pem
44
- chmod 600 ~/.oci/key.pem
45
-
46
- - name : Deploy to OCI Container Instance
31
+ # Get timestamp for unique tag
32
+ timestamp=$(date +%Y%m%d%H%M%S)
33
+
34
+ # Build the Docker image
35
+ docker build -t ${{ secrets.OCI_REGISTRY }}/${{ secrets.REPOSITORY_NAME }}:$timestamp -t ${{ secrets.OCI_REGISTRY }}/${{ secrets.REPOSITORY_NAME }}:latest .
36
+
37
+ # Push the Docker image
38
+ docker push ${{ secrets.OCI_REGISTRY }}/${{ secrets.REPOSITORY_NAME }}:$timestamp
39
+ docker push ${{ secrets.OCI_REGISTRY }}/${{ secrets.REPOSITORY_NAME }}:latest
40
+
41
+ # Save the image tag for later use
42
+ echo "IMAGE_TAG=$timestamp" >> $GITHUB_ENV
43
+
44
+ - name : Deploy to Oracle Cloud Container Instance
47
45
run : |
46
+ # Create or update container instance
48
47
oci container-instances container-instance create \
49
48
--compartment-id ${{ secrets.OCI_COMPARTMENT_ID }} \
50
49
--availability-domain ${{ secrets.OCI_AVAILABILITY_DOMAIN }} \
51
- --shape ${{ secrets.OCI_SHAPE }} \
52
- --container-restart-policy ALWAYS \
53
- --containers '[{"image":"${{ secrets.OCI_REGISTRY }}/${{ secrets.OCI_NAMESPACE }}/adminhubapi:${{ github.sha }}","displayName":"adminhubapi"}]'
50
+ --display-name "admin-hub-api" \
51
+ --shape "VM.Standard.E2.1.Micro" \
52
+ --shape-config '{"ocpus": 1, "memoryInGBs": 1}' \
53
+ --vnics '[{"subnetId": "${{ secrets.OCI_SUBNET_ID }}", "displayName": "primary-vnic"}]' \
54
+ --containers '[{
55
+ "displayName": "admin-hub-api",
56
+ "imageUrl": "${{ secrets.OCI_REGISTRY }}/${{ secrets.REPOSITORY_NAME }}:${{ env.IMAGE_TAG }}",
57
+ "isResourcePrincipalDisabled": true
58
+ }]' \
59
+ --wait-for-state SUCCEEDED
0 commit comments