name: Prod - Build & Deploy to Scaleway on: push: branches: [main] env: PROJECT_ID: c0ed1e9e-d945-461f-920c-98c844ef1ad4 NAMESPACE_ID: 17374437-5428-468c-9f41-d89787ffce0e CONTAINER_REGISTRY_ENDPOINT: rg.fr-par.scw.cloud/funcscwlecoffreprdg7h5bbub PROJECT_ID_LECOFFRE: 72d08499-37c2-412b-877e-f8af0471654a NAMESPACE_ID_LECOFFRE: 8fbbce9d-31d1-4368-94c4-445e79f10834 CONTAINER_REGISTRY_ENDPOINT_LECOFFRE: rg.fr-par.scw.cloud/funcscwlecoffreprdjulp9mam IMAGE_NAME: front CONTAINER_NAME: front jobs: build-and-push-image: 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 }} registry: ${{ env.CONTAINER_REGISTRY_ENDPOINT }} - name: Build the Docker Image run: docker build . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT }}/${{ env.IMAGE_NAME }} - name: Push the Docker Image to Scaleway Container Registry run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT }}/${{ env.IMAGE_NAME }} 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: Build the Docker Image run: docker build . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} - name: Push the Docker Image to Scaleway Container Registry run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} deploy-to-scaleway: needs: build-and-push-image runs-on: ubuntu-latest environment: prod steps: - name: Install CLI uses: scaleway/action-scw@v0 - name: Get container ID run: | echo "CONTAINER_ID=$(scw container container list namespace-id=${{env.NAMESPACE_ID}} -o json | jq -r '.[] | select(.name == "${{ env.CONTAINER_NAME }}") | .id')" >> $GITHUB_ENV env: SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY }} SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID }} SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID }} - 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/ $//') scw container container update ${{ env.CONTAINER_ID }} $env_string env: ENV_VARS: ${{ secrets.ENV }} SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY }} SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID }} SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID }} deploy-to-scaleway-lecoffre: needs: build-and-push-image-lecoffre runs-on: ubuntu-latest environment: prod steps: - name: Install CLI uses: scaleway/action-scw@v0 - name: Get container ID run: | echo "CONTAINER_ID=$(scw container container list namespace-id=${{env.NAMESPACE_ID_LECOFFRE}} -o json | jq -r '.[] | select(.name == "${{ env.CONTAINER_NAME }}") | .id')" >> $GITHUB_ENV 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/ $//') scw container container update ${{ env.CONTAINER_ID }} $env_string 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 }}