diff --git a/.github/workflows/pr-pipeline.yml b/.github/workflows/pr-pipeline.yml new file mode 100644 index 0000000..9233d6c --- /dev/null +++ b/.github/workflows/pr-pipeline.yml @@ -0,0 +1,100 @@ +name: fair-value-pull-request-pipeline + +on: + pull_request: + branches: + - master + paths-ignore: + - '**.md' + - '.gitignore' + workflow_dispatch: + +permissions: + contents: read + packages: write + +env: + ACTIONS_STEP_DEBUG: ${{ secrets.ACTIONS_STEP_DEBUG }} + +jobs: + push_image_and_deploy: + runs-on: ubuntu-latest + environment: + name: dia-testspace + steps: + - uses: actions/checkout@v4 + + - name: Get Short Commit Hash + run: | + COMMIT_HASH=$(git rev-parse --short HEAD) + echo "COMMIT_HASH=$COMMIT_HASH" >> $GITHUB_ENV + + - name: Checkout lumina-infra repository + env: + LUMINA_INFRA_PAT: ${{ secrets.LUMINA_INFRA_PAT }} + run: | + rm -rf lumina-infra + git clone -q https://$LUMINA_INFRA_PAT@github.com/diadata-org/lumina-infra lumina-infra + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: eu-west-1 + + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v2 + + - name: Build and push to AWS ECR + env: + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + IMAGE_TAG: commit-hash-${{ env.COMMIT_HASH }} + run: | + docker build -f build/Dockerfile -t ${ECR_REGISTRY}/lumina/fair-value:${IMAGE_TAG} . + docker push ${ECR_REGISTRY}/lumina/fair-value:${IMAGE_TAG} + echo "Pushed image to AWS ECR:" + echo " ${ECR_REGISTRY}/lumina/fair-value:${IMAGE_TAG}" + + - name: Update AWS testnet feeder values and push to lumina-infra + env: + LUMINA_INFRA_PAT: ${{ secrets.LUMINA_INFRA_PAT }} + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + run: | + cd lumina-infra + + git config user.name "DIA Lumina Bot" + git config user.email "infrastructure@diadata.org" + + # Update image registry and tag for fair-value feeders + FEEDERS="301-fair-value-feeder-testnet-aws 302-fair-value-feeder-testnet-aws 303-fair-value-feeder-testnet-aws 304-fair-value-feeder-testnet-aws 305-fair-value-feeder-testnet-aws" + for feeder in $FEEDERS; do + VALUES_FILE="helmcharts/fair-value-feeders-aws/${feeder}/values.yaml" + if [ -f "$VALUES_FILE" ]; then + echo "Updating $VALUES_FILE" + sed -i "s|image: [^,]*|image: ${ECR_REGISTRY}/lumina/fair-value|" "$VALUES_FILE" + sed -i "s|tag: [^}]*|tag: commit-hash-${{ env.COMMIT_HASH }}|" "$VALUES_FILE" + fi + done + + echo "Changes to be committed:" + git diff helmcharts/fair-value-feeders-aws/*/values.yaml + + if ! git diff --quiet; then + git add helmcharts/fair-value-feeders-aws/*/values.yaml + git commit -m "PR #${{ github.event.pull_request.number }}: Update fair-value feeders to commit-hash-${{ env.COMMIT_HASH }}" + git push https://$LUMINA_INFRA_PAT@github.com/diadata-org/lumina-infra.git HEAD:master + echo "Pushed updates to lumina-infra. ArgoCD will sync fair-value feeders automatically." + else + echo "No changes to commit" + fi + + cd .. + + - name: Cleanup cloned repository + run: | + rm -rf lumina-infra