name: Staging - Build & Deploy to Scaleway on: push: branches: [staging] env: PROJECT_ID_LECOFFRE: 72d08499-37c2-412b-877e-f8af0471654a NAMESPACE_ID_LECOFFRE: f8137e85-47ad-46a5-9e2e-18af5de829c5 CONTAINER_REGISTRY_ENDPOINT_LECOFFRE: rg.fr-par.scw.cloud/funcscwlecoffrestgbqbfhtv6 IMAGE_NAME: front CONTAINER_NAME: front jobs: build-and-push-image-lecoffre: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup SSH run: | mkdir -p ~/.ssh echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts env: SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} - name: Copy SSH run: cp ~/.ssh/id_rsa id_rsa - name: Login to Scaleway Container Registry uses: docker/login-action@v3 with: username: nologin password: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} registry: ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }} - name: Get Git Commit SHA id: get_commit_sha run: echo "COMMIT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV - name: Build the Docker Image run: docker build . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }}:${{ env.COMMIT_SHA }} env: COMMIT_SHA: ${{ steps.get_commit_sha.outputs.COMMIT_SHA }} - name: Push the Docker Image to Scaleway Container Registry run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }}:${{ env.COMMIT_SHA }} env: COMMIT_SHA: ${{ steps.get_commit_sha.outputs.COMMIT_SHA }} deploy-to-scaleway-lecoffre: needs: build-and-push-image-lecoffre runs-on: ubuntu-latest environment: staging steps: - name: Install CLI uses: scaleway/action-scw@v0 - name: Verify Commit SHA run: | echo "Deploying image with Commit SHA: ${{ env.COMMIT_SHA }}" env: COMMIT_SHA: ${{ steps.get_commit_sha.outputs.COMMIT_SHA }} - name: Get container ID run: | CONTAINER_ID=$(scw container container list namespace-id=${{ env.NAMESPACE_ID_LECOFFRE }} -o json | jq -r '.[] | select(.name == "${{ env.CONTAINER_NAME }}") | .id') echo "CONTAINER_ID=${CONTAINER_ID}" >> $GITHUB_ENV echo "Container ID is: ${CONTAINER_ID}" env: SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} - name: Deploy the container based on the new image run: | env_string="" while IFS= read -r line; do if [[ "$line" == *"="* ]]; then key=$(echo "$line" | cut -d '=' -f 1) value=$(echo "$line" | cut -d '=' -f 2-) if [[ -n "$key" ]]; then env_string+="environment-variables.$key=$value " fi fi done <<< "$ENV_VARS" env_string=$(echo $env_string | sed 's/ $//') echo "Updating container with ID: ${{ env.CONTAINER_ID }} using image: ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }}:${{ env.COMMIT_SHA }}" scw container container update ${{ env.CONTAINER_ID }} $env_string registry-image=${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }}:${{ env.COMMIT_SHA }} env: ENV_VARS: ${{ secrets.ENV }} SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} COMMIT_SHA: ${{ steps.get_commit_sha.outputs.COMMIT_SHA }}