name: Helm Charts E2E Testing on: schedule: - cron: '0 3 */2 * *' # schedule the test to run every second day at 3:00am push: branches: - main paths: - 'src/main/charts/bamboo/**' - 'src/main/charts/bamboo-agent/**' - 'src/main/charts/bitbucket/**' - 'src/main/charts/confluence/**' - 'src/main/charts/jira/**' pull_request_target: types: [ labeled ] workflow_dispatch: jobs: test: if: ${{ github.event.label.name == 'e2e' || github.event_name == 'push' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' }} name: Deploy Infrastructure and Run E2E Tests runs-on: ubuntu-latest env: AWS_DEFAULT_REGION: us-east-1 AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} TF_VAR_bamboo_license: ${{ secrets.TF_VAR_BAMBOO_LICENSE }} TF_VAR_confluence_license: ${{ secrets.TF_VAR_CONFLUENCE_LICENSE }} TF_VAR_bitbucket_license: ${{ secrets.TF_VAR_BITBUCKET_LICENSE }} TF_VAR_bamboo_admin_password: ${{ secrets.TF_VAR_BAMBOO_ADMIN_PASSWORD }} TF_VAR_bitbucket_admin_password: ${{ secrets.TF_VAR_BITBUCKET_ADMIN_PASSWORD }} TF_VAR_kinesis_log_producers_role_arns: ${{ secrets.TF_VAR_KINESIS_LOG_PRODUCERS_ROLE_ARNS }} TF_VAR_osquery_fleet_enrollment_secret_name: ${{ secrets.TF_VAR_OSQUERY_FLEET_ENROLLMENT_SECRET_NAME }} USE_DOMAIN: "true" steps: - name: Checkout Helm charts uses: actions/checkout@v2 with: fetch-depth: 0 - name: Pin Kubectl version uses: azure/setup-kubectl@v2.0 with: version: 'v1.24.0' - name: Install Helm uses: azure/setup-helm@v1 with: version: v3.7.1 - name: Execute helm dependency update for Helm charts run: | helm dependency update src/main/charts/bamboo helm dependency update src/main/charts/bamboo-agent helm dependency update src/main/charts/bitbucket helm dependency update src/main/charts/confluence helm dependency update src/main/charts/jira - name: Checkout Deployment Automation run: | DEPLOYMENT_REPO='https://github.com/atlassian-labs/data-center-terraform.git' LTS=$(git ls-remote --tags --exit-code --refs "$DEPLOYMENT_REPO" \ | sed -E 's/^[[:xdigit:]]+[[:space:]]+refs\/tags\/(.+)/\1/g' \ | grep '^[0-9]*.[0-9]*.[0-9]*$' | sort -V | tail -1) echo "Using LTS version('${LTS}') of Deployment Automation to provision the infrastructure for Atlassian DC Products." git clone -b $LTS $DEPLOYMENT_REPO tf - name: Setup test environment uses: actions/setup-go@v3 with: go-version: '1.18' - name: Setup Python environment uses: actions/setup-python@v4 with: python-version: '3.9.14' - run: | python -m pip install --upgrade pip pip install boto3 - name: Install test dependencies id: setup-dependencies working-directory: tf/test/ run: | go version go get -v -t -d ./... && go mod tidy echo ::set-output name=exit_code::$? - name: Add private SSH key for Bitbucket tests uses: shimataro/ssh-key-action@v2 with: key: ${{ secrets.BITBUCKET_E2E_TEST_PRIV_SSH_KEY }} name: bitbucket-e2e # optional known_hosts: dummy-entry if_key_exists: fail # replace / ignore / fail; optional (defaults to fail) - name: Add public SSH key for Bitbucket tests run: | echo ${{ secrets.BITBUCKET_E2E_TEST_PUB_SSH_KEY }} > /home/runner/.ssh/bitbucket-e2e.pub - name: Deploy the infrastructure, install helm charts, run E2E tests, and cleanup id: e2e-test working-directory: tf/test/ run: | set -o pipefail # Create test output directory mkdir e2etest/artifacts # Add root of helm chart repo to the config template cat << EOF >> ./e2etest/test-config.tfvars.tmpl # install local helm charts local_helm_charts_path="$(dirname $(dirname $(pwd)))/src/main/charts" EOF # Deploy infrastructure, install helm charts, run e2e tests, and cleanup all aws configure set aws_access_key_id "$AWS_ACCESS_KEY_ID" --profile default && aws configure set aws_secret_access_key "$AWS_SECRET_ACCESS_KEY" --profile default && aws configure set region "$AWS_DEFAULT_REGION" --profile default go test ./e2etest -v -timeout 85m -run Installer | tee ./e2etest/artifacts/e2etest.log - name: Upload test log files if: always() uses: actions/upload-artifact@v2 with: name: e2e-test-artifacts path: tf/test/e2etest/artifacts/