| # |
| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| name: SkyWalking Infra E2E |
| description: End-to-End Tesing framework that help to set up, verify E2E tests. |
| author: Apache SkyWalking |
| inputs: |
| e2e-file: |
| description: File path of e2e file |
| required: true |
| log-dir: |
| description: The container logs directory |
| required: false |
| batch-mode: |
| description: Whether to run in batch mode, all interactive operations are disabled |
| required: false |
| default: 'true' |
| runs: |
| using: "composite" |
| steps: |
| - name: Set up Go 1.18 |
| uses: actions/setup-go@v4 |
| with: |
| go-version: 1.18 |
| cache-dependency-path: ${{ github.action_path }}/go.sum |
| - shell: bash |
| run: make -C $GITHUB_ACTION_PATH install DESTDIR=/usr/local/bin |
| - name: E2E Dir Generator |
| id: 'e2e-dir-generator' |
| shell: bash |
| run: | |
| WORK_DIR="${{ runner.temp }}/skywalking-infra-e2e" |
| echo "work=$WORK_DIR" >> $GITHUB_OUTPUT |
| |
| LOG_DIR="" |
| LOG_JOB_DIR="" |
| if [[ "${{ inputs.log-dir }}" == "" ]] |
| then |
| matrix='${{ toJSON(matrix) }}' |
| if [[ "$matrix" == "null" ]] |
| then |
| LOG_DIR="$WORK_DIR/logs" |
| LOG_JOB_DIR="$LOG_DIR/${{ github.job }}" |
| else |
| combine_matrix=$(echo $matrix|jq -r 'to_entries|map(.value)|tostring') |
| # remove json syntax |
| combine_matrix=`echo $combine_matrix|sed -e 's/\[\|\]\|\"//g'` |
| combine_matrix=`echo $combine_matrix|sed -e 's/[\{|\}]//g'` |
| # replace to path |
| combine_matrix=`echo $combine_matrix|sed -e 's/[^A-Za-z0-9_-]/_/g'` |
| LOG_DIR="$WORK_DIR/logs" |
| LOG_JOB_DIR="$LOG_DIR/${{ github.job }}_$combine_matrix" |
| fi |
| elif [[ "${{ inputs.log-dir }}" == /* ]] |
| then |
| LOG_DIR="${{ inputs.log-dir }}" |
| LOG_JOB_DIR="${{ inputs.log-dir }}" |
| else |
| LOG_DIR="$WORK_DIR/${{ inputs.log-dir }}" |
| LOG_JOB_DIR="$WORK_DIR/${{ inputs.log-dir }}" |
| fi |
| echo "log=$LOG_DIR" >> $GITHUB_OUTPUT |
| echo "log-case=$LOG_JOB_DIR" >> $GITHUB_OUTPUT |
| echo "SW_INFRA_E2E_LOG_DIR=$LOG_DIR" >> $GITHUB_ENV |
| - shell: bash |
| run: | |
| e2e run \ |
| -c "${{ inputs.e2e-file }}" \ |
| --batch-mode "${{ inputs.batch-mode }}" \ |
| -w "${{ steps.e2e-dir-generator.outputs.work }}" \ |
| -l "${{ steps.e2e-dir-generator.outputs.log-case }}" |