diff --git a/.github/workflows/solar-system.yml b/.github/workflows/solar-system.yml index 2f79be49..b7719bc2 100644 --- a/.github/workflows/solar-system.yml +++ b/.github/workflows/solar-system.yml @@ -6,7 +6,11 @@ on: branches: - main - 'feature/*' - +env: + MONGO_URI: mongodb+srv://supercluster.d83jj.mongodb.net/superData + MONGO_USERNAME: superuser + MONGO_PASSWORD: ${{ secrets.MONGO_PASSWORD }} + jobs: unit-testing: name: Unit Testing @@ -30,4 +34,99 @@ jobs: uses: actions/upload-artifact@v3 with: name: Mocha-Test-Result - path: test-results.xml \ No newline at end of file + path: test-results.xml + docker: + permissions: #added + packages: write #added + runs-on: ubuntu-latest + needs: + #- code-coverage + - unit-testing + steps: + - uses: actions/checkout@v4 + - uses: docker/login-action@v2.2.0 + with: + #registry: ghcr.io + registry: docker.io + #username: '${{ github.repository_owner }}' + username: 'seyiogunniran' + # password: '${{ secrets.GITHUB_TOKEN }}' + password: '${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}' + - uses: docker/build-push-action@v4 + with: + context: . + push: true + tags: 'docker.io/seyiogunniran/solar-system:${{ github.sha }}' + #tags: 'ghcr.io/${{ github.repository_owner }}/solar-system:${{ github.sha }}' + + dev-deploy: + needs: docker + runs-on: ubuntu-latest + environment: + name: development + + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v3 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ vars.AWS_REGION }} + mask-aws-account-id: "no" + + - name: Install kubectl Cli + uses: azure/setup-kubectl@v3 + with: + version: v1.26.0 + + - name: Set kubconfig file + uses: azure/k8s-set-context@v3 + with: + method: kubeconfig + kubeconfig: '${{ secrets.KUBECONFIG }}' + + - name: Fetch kubernetes cluster details + run: | + aws eks update-kubeconfig --name basic-cluster --region eu-north-1 + kubectl version --short -o yaml + echo -------------------------- + kubectl get nodes + + - name: Save AWS Ingress Controller IP as a GITHUB Env variable + run: | + kubectl get ingress -n game-2048 + + - name: Replace Token in Manifest files + uses: cschleiden/replace-tokens@v1 + with: + tokenPrefix: '_{_' + tokenSuffix: '_}_' + files: '["kubernetes/development/*.yaml"]' + env: + NAMESPACE: ${{ vars.NAMESPACE }} + REPLICAS: ${{ vars.REPLICAS }} + IMAGE: docker.io/seyiogunniran/solar-systems:${{ github.sha }} + + - name: Check files list + run: cat kubernetes/development/*.yaml + + # - name: Create MongoDB Seceret + # run: | + # kubectl -n ${{ vars.NAMESPACE }} create secret generic mongo-db-creds + # ---literal=MONGO_URI=${{ env.MONGO_URI }} \ + # ---literal=MONGO_USERNAME=${{ env.MONGO_USERNAME }} \ + # ---literal=MONGO_PASSWORD=${{ secrets.MONGO_PASSWORD }} \ + # ---save-config \ + # ---dry-run=client \ + # -o yaml | kubectl apply -f - + + - name: Deploy kubernetes + run: | + kubectl apply -f kubernetes/development + + + + diff --git a/kubernetes/development/ingress.yaml b/kubernetes/development/ingress.yamlx similarity index 93% rename from kubernetes/development/ingress.yaml rename to kubernetes/development/ingress.yamlx index bd781abe..cca1fab7 100644 --- a/kubernetes/development/ingress.yaml +++ b/kubernetes/development/ingress.yamlx @@ -21,4 +21,4 @@ spec: tls: - hosts: - solar-system-_{_NAMESPACE_}_._{_INGRESS_IP_}_.nip.io - secretName: ingress-local-tls \ No newline at end of file + secretName: ingress-local-tls diff --git a/kubernetes/development/ingressALB.yaml b/kubernetes/development/ingressALB.yaml new file mode 100644 index 00000000..ed00ac37 --- /dev/null +++ b/kubernetes/development/ingressALB.yaml @@ -0,0 +1,20 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + namespace: solar + name: ingress-2048 + annotations: + alb.ingress.kubernetes.io/scheme: internet-facing + alb.ingress.kubernetes.io/target-type: ip +spec: + ingressClassName: alb + rules: + - http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: solar-system + port: + number: 3000