From e04b8c862dd055622e7dfd5c276572dc4adaee36 Mon Sep 17 00:00:00 2001 From: Yuriy Kohut Date: Fri, 7 Jun 2024 12:39:49 +0300 Subject: [PATCH] Setup and start self-hosted EC2 runner #18 --- .../almalinux-compose-test-arm64.yml | 188 ++---------------- 1 file changed, 22 insertions(+), 166 deletions(-) diff --git a/.github/workflows/almalinux-compose-test-arm64.yml b/.github/workflows/almalinux-compose-test-arm64.yml index 3982ef1..655b184 100644 --- a/.github/workflows/almalinux-compose-test-arm64.yml +++ b/.github/workflows/almalinux-compose-test-arm64.yml @@ -23,57 +23,14 @@ on: jobs: - # start-runner: - # name: Setup and start self-hosted EC2 runner - # runs-on: ubuntu-latest - # steps: - # - 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: ${{ secrets.AWS_REGION }} - - # - name: Start EC2 runner - # id: start-ec2-runner - # uses: bitovi/github-actions-deploy-github-runner-to-ec2@v0.1.2 - # with: - # aws_access_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }} - # aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - # aws_default_region: ${{ secrets.AWS_REGION }} - # aws_ec2_additional_tags: '{\"github-actions\":\"ssh-access\"}' - - # aws_ec2_instance_type: t4g.small - # aws_ec2_ami_id: ${{ inputs.version_major == '9' && 'ami-0ce12a8fbc3cc15a5' || 'ami-01e3e647c7acbc64b' }} - # # aws_ec2_security_group_name: sg-07e22182e33675edc - # # aws_vpc_subnet_id: subnet-64063c29 - # aws_vpc_create: false - # aws_ec2_instance_public_ip: true - - # # ec2_instance_public_ip: false - # # ec2_additional_tags: '{\"key3\":\"value3\",\"key4\":\"value4\"}' - - # repo_url: https://github.com/yuravk/compose-tests - # repo_access_token: AAL376ZHV6H5WYSS7NLLWFTGMBSKY - - # # stack_destroy: false - # # tf_state_bucket_destroy: true - start-runner: - timeout-minutes: 5 # normally it only takes 1-2 minutes + timeout-minutes: 10 # normally it only takes 1-2 minutes name: Setup and start self-hosted EC2 runner runs-on: ubuntu-latest permissions: actions: write steps: - # - 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: ${{ secrets.AWS_REGION }} - - - name: Start EC2 runner + - name: Setup and start self-hosted EC2 runner id: start-ec2-runner uses: NextChapterSoftware/ec2-action-builder@v1.5 with: @@ -92,37 +49,9 @@ jobs: [ {"Key": "compose-tests", "Value": "${{ github.actor }}"} ] - - - # start-runner: - # name: Start self-hosted EC2 runner - # runs-on: ubuntu-latest - # outputs: - # label: ${{ steps.start-ec2-runner.outputs.label }} - # ec2-instance-id: ${{ steps.start-ec2-runner.outputs.ec2-instance-id }} - # steps: - # - 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: ${{ secrets.AWS_REGION }} - - # - name: Start EC2 runner - # id: start-ec2-runner - # uses: machulav/ec2-github-runner@v2 - # with: - # mode: start - # github-token: ${{ secrets.GIT_HUB_TOKEN }} - # ec2-image-id: ${{ inputs.version_major == '9' && 'ami-0f76592d493cc4dbb' || 'ami-0b68c0cf818f25ecf' }} - # ec2-instance-type: t4g.small - # subnet-id: subnet-64063c29 - # security-group-id: sg-07e22182e33675edc compose-test: name: Testing AlmaLinux ${{ inputs.version_major }} - # runs-on: almalinux${{ inputs.version_major }}-arm64-aws-ec2-us-east-1 - # runs-on: ${{ needs.start-runner.outputs.label }} # run the job on the newly created runner runs-on: ${{ github.run_id }} needs: start-runner # required to start the main job when the runner is ready @@ -142,54 +71,16 @@ jobs: fi echo "dnf_crb_repo=${dnf_crb_repo}" >> $GITHUB_ENV - # # Clean up tmt run results and repos - # sudo rm -rf /var/tmp/tmt/run-* \ - # /etc/yum.repos.d/almalinux-pungi.repo \ - # /etc/yum.repos.d/almalinux-pulp.repo - - # # Verify that CPU supports hardware virtualization - # echo -n "Number of vmx|svm CPUs: " && grep -E -c '(vmx|svm)' /proc/cpuinfo - - # # Use proper Vagrantfile and set ENV variable of config.vm.box - # cp -av ci/Vagrant/Vagrantfile ./ - # echo vm_box='almalinux/${{ inputs.version_major }}' > .env - - # - name: Install KVM Packages and Start libvirt - # run: | - # sudo apt-get -y update - # sudo apt-get -y install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils - # sudo systemctl enable --now libvirtd - # sudo adduser "$(id -un)" libvirt - # sudo adduser "$(id -un)" kvm + # TMT tests run directory + echo "tmt_run_dir=/var/tmp/tmt/run-001" >> $GITHUB_ENV - # - name: Enable KVM group perms - # run: | - # echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules - # sudo udevadm control --reload-rules - # sudo udevadm trigger --name-match=kvm - - # - name: Tune libvirt - # run: virsh list --all - - # - name: Install Vagrant - # run: | - # sudo apt-get -y install vagrant - # sudo vagrant --version - # sudo vagrant plugin install vagrant-reload - # sudo vagrant plugin install vagrant-env - - # - name: Install the Vagrant libvirt Plugin - # run: | - # sudo cp /etc/apt/sources.list /etc/apt/sources.list."$(date +"%F")" - # sudo sed -i -e '/^# deb-src.*universe$/s/# //g' /etc/apt/sources.list - # sudo apt-get -y update - # sudo apt-get -y install nfs-kernel-server - # sudo systemctl enable --now nfs-server - # sudo apt-get -y build-dep vagrant ruby-libvirt - # sudo apt-get -y install ebtables dnsmasq-base - # sudo apt-get -y install libxslt-dev libxml2-dev libvirt-dev zlib1g-dev ruby-dev - # sudo vagrant plugin install vagrant-libvirt - # sudo vagrant plugin install vagrant-scp + # Fail tasts if both pungi and pulp repositories are used + if [ "x${{ inputs.pungi_repository }}" = "xtrue" -a "x${{ inputs.pulp_repository }}" = "xtrue" ]; then + echo "[Debug]" + echo "Both pungi and pulp repositories can't be used." + exit 1 + fi + exit 0 - name: Create AlmaLinux pungi repository if: inputs.pungi_repository @@ -231,9 +122,6 @@ jobs: name = almalinux-${{ inputs.version_major }}-${{ env.dnf_crb_repo }}-pulp EOF - # - name: Run vagrant up - # run: sudo vagrant up almalinux - - name: Update the system run: | sudo dnf -y clean all @@ -247,29 +135,30 @@ jobs: enable_repo=${{ env.dnf_crb_repo }} sudo dnf install -y --enablerepo=${enable_repo,,} tmt - # - name: Get compose-tests - # run: sudo vagrant ssh almalinux -c 'sudo cp -a /vagrant /compose-tests' - - name: Run tests run: sudo sh -c 'export pungi_repository=${{ inputs.pungi_repository }}; export pulp_repository=${{ inputs.pulp_repository }}; tmt -vvv -c distro=centos-stream-${{ inputs.version_major }} run --all provision --how=local test --name "/tests/legacy/p_cpio"' - name: Print tests results if: success() || failure() run: | - sudo cat /var/tmp/tmt/run-001/plans/legacy/execute/results.yaml /var/tmp/tmt/run-001/plans/ng/execute/results.yaml - sudo /bin/cp -av /var/tmp/tmt/run-001/plans/legacy/execute/results.yaml ${{github.action_path}}/legacy.results.yaml - sudo /bin/cp -av /var/tmp/tmt/run-001/plans/ng/execute/results.yaml ${{github.action_path}}/ng.results.yaml + #[Debug] + sudo cat ${{ env.tmt_run_dir }}/plans/legacy/execute/results.yaml ${{ env.tmt_run_dir }}/plans/ng/execute/results.yaml + + sudo /bin/cp -av ${{ env.tmt_run_dir }}/plans/legacy/execute/results.yaml ${{github.action_path}}/legacy.results.yaml + sudo /bin/cp -av ${{ env.tmt_run_dir }}/plans/ng/execute/results.yaml ${{github.action_path}}/ng.results.yaml - name: Print tests log if: success() || failure() run: | - sudo cat /var/tmp/tmt/run-001/log.txt - sudo /bin/cp -av /var/tmp/tmt/run-001/log.txt ${{github.action_path}}/log.txt + #[Debug] + sudo cat ${{ env.tmt_run_dir }}/log.txt + + sudo /bin/cp -av ${{ env.tmt_run_dir }}/log.txt ${{github.action_path}}/log.txt - name: Collect tests output if: success() || failure() run: | - cd /var/tmp/tmt/run-001/ + cd ${{ env.tmt_run_dir }}/ tar cf ${{github.action_path}}/output.tar $( find . -name output.txt ) || true - uses: actions/upload-artifact@v4 @@ -288,37 +177,4 @@ jobs: if: success() || failure() with: name: Tests output - path: ${{github.action_path}}/output.tar - - # - name: Clean up tmt run results and repos - # if: success() || failure() - # run: | - # sudo rm -rf /var/tmp/tmt/run-* \ - # ${{github.action_path}}/output.tar \ - # ${{github.action_path}}/*.results.yaml \ - # ${{github.action_path}}/log.txt \ - # /etc/yum.repos.d/almalinux-pungi.repo \ - # /etc/yum.repos.d/almalinux-pulp.repo - - # stop-runner: - # name: Stop self-hosted EC2 runner - # needs: - # - start-runner # required to get output from the start-runner job - # - compose-test # required to wait when the main job is done - # runs-on: ubuntu-latest - # if: ${{ always() }} # required to stop the runner even if the error happened in the previous jobs - # steps: - # - 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: ${{ secrets.AWS_REGION }} - - # - name: Stop EC2 runner - # uses: machulav/ec2-github-runner@v2 - # with: - # mode: stop - # github-token: ${{ secrets.GIT_HUB_TOKEN }} - # label: ${{ needs.start-runner.outputs.label }} - # ec2-instance-id: ${{ needs.start-runner.outputs.ec2-instance-id }} \ No newline at end of file + path: ${{github.action_path}}/output.tar \ No newline at end of file