diff --git a/.github/worflows/create_test_env.yaml b/.github/worflows/create_test_env.yaml deleted file mode 100644 index 8a33c71..0000000 --- a/.github/worflows/create_test_env.yaml +++ /dev/null @@ -1,47 +0,0 @@ ---- -name: Create test environment from PR comment - -on: - pull_request_review_comment: - types: [created] - -jobs: - execute_script: - runs-on: ubuntu-latest - environment: DEV - - steps: - - name: Check if comment contains "create test env" - if: contains(github.event.comment.body, 'create test env') - run: echo "Comment contains 'create test env'" - - - name: Extract branch variable from comment - if: contains(github.event.comment.body, 'create test env') - run: | - echo "${{ github.event.comment.body }}" | grep -oP 'brand:\s*\K\w+' > branch.txt - id: extract_branch - - - name: Read extracted branch - if: steps.extract_brand.outputs.branch - run: | - branch=$(cat branch.txt) - echo "Branch is: $branch" - id: read_branch - - - name: Execute Script on Remote Server - if: contains(github.event.comment.body, 'create test env') - uses: appleboy/ssh-action@master - with: - host: ${{ secrets.TEST_ENV.SSH_HOST }} - username: ${{ secrets.TEST_ENV.SSH_USER }} - key: ${{ secrets.TEST_ENV.SSH_KEY }} - script: | - BRANCH=${{ steps.read_branch.outputs.branch }} - HOST=${{ secrets.TEST_ENV.SSH_HOST }} - USER=${{ secrets.TEST_ENV.SSH_USER }} - KEY=${{ secrets.TEST_ENV.SSH_KEY }} - echo "branch: $BRANCH - HOST: $HOST - USER: $USER - KEY: $KEY" - #sudo BRANCH=${{ steps.read_branch.outputs.brand }} /path/to/pepe.sh diff --git a/.github/workflows/create_test_env.yaml b/.github/workflows/create_test_env.yaml new file mode 100644 index 0000000..e9f5094 --- /dev/null +++ b/.github/workflows/create_test_env.yaml @@ -0,0 +1,84 @@ +--- +name: Create test environment from PR comment + +on: + issue_comment: + types: [created] + +permissions: + issues: write + pull-requests: write + +jobs: + execute_script: + runs-on: ubuntu-latest + environment: DEV + timeout-minutes: 10 + + steps: + - name: Check if comment contains 'create testenv' anywhere + run: | + if ! echo "${{ github.event.comment.body }}" | grep -q "create testenv"; then + echo "The comment does not contain 'create testenv'. Exiting..." + exit 0 + fi + + - name: Extract and set branch variable from PR + run: | + # Extract the pull request URL + PR_URL="${{ github.event.issue.pull_request.url }}" + # Use GitHub API to get the pull request details + PR_DATA=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" "$PR_URL") + # Extract the branch name from the pull request data + BRANCH_NAME=$(echo "$PR_DATA" | jq -r '.head.ref') + + if [ -z "$BRANCH_NAME" ]; then + echo "Branch extraction failed. Exiting..." + exit 1 + fi + + echo "branch=$BRANCH_NAME" >> $GITHUB_ENV + echo "Extracted branch: $BRANCH_NAME" + + - name: Comment "on going" on the PR + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + curl -X POST -H "Authorization: token $GITHUB_TOKEN" \ + -d '{"body": "The environment setup is in progress..."}' \ + ${{ github.event.issue.url }}/comments + + - name: Execute Script on Remote Server + if: ${{ env.branch != '' }} + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.TEST_ENV_SSH_HOST }} + username: ${{ secrets.TEST_ENV_SSH_USER }} + key: ${{ secrets.TEST_ENV_SSH_KEY }} + script: | + eval "$(ssh-agent -s)" + ssh-add ~/.ssh/actions_keys/actions@assek + export TERM=xterm-256color + BRANCH=${{ env.branch }} + SUDO_PWD=${{ secrets.TEST_ENV_SUDO_PWD }} + echo $SUDO_PWD | sudo -S -E /srv/anet_testing/odoo/tools/test_environment/deploy.sh create $BRANCH | tee script_output.log + + - name: Extract last 5 lines of output + if: ${{ env.branch != '' }} + run: | + if [ -f script_output.log ]; then + tail -n 5 script_output.log > last_lines.txt + echo "LAST_LINES=$(cat last_lines.txt)" >> $GITHUB_ENV + else + echo "No script_output.log found. Setting LAST_LINES to empty." + echo "LAST_LINES=" >> $GITHUB_ENV + fi + + - name: Comment on the PR + if: ${{ env.branch != '' }} && success() + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + curl -X POST -H "Authorization: token $GITHUB_TOKEN" \ + -d '{"body": "Action completed successfully. Here are the last 5 lines of output:\n```\n'${LAST_LINES}'\n```"}' \ + ${{ github.event.issue.url }}/comments