name: system tests on: pull_request jobs: build: name: RunTests runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - set: 1 LOCAL_FOLDER: /tmp/gw1 BUCKET_ONE_NAME: versity-gwtest-bucket-one-1 BUCKET_TWO_NAME: versity-gwtest-bucket-two-1 IAM_TYPE: folder USERS_FOLDER: /tmp/iam1 AWS_ENDPOINT_URL: https://127.0.0.1:7070 RUN_SET: "s3cmd" RECREATE_BUCKETS: "true" PORT: 7070 - set: 2 LOCAL_FOLDER: /tmp/gw2 BUCKET_ONE_NAME: versity-gwtest-bucket-one-2 BUCKET_TWO_NAME: versity-gwtest-bucket-two-2 IAM_TYPE: folder USERS_FOLDER: /tmp/iam2 AWS_ENDPOINT_URL: https://127.0.0.1:7071 RUN_SET: "s3" RECREATE_BUCKETS: "true" PORT: 7071 - set: 3 LOCAL_FOLDER: /tmp/gw3 BUCKET_ONE_NAME: versity-gwtest-bucket-one-3 BUCKET_TWO_NAME: versity-gwtest-bucket-two-3 IAM_TYPE: folder USERS_FOLDER: /tmp/iam3 AWS_ENDPOINT_URL: https://127.0.0.1:7072 RUN_SET: "s3api" RECREATE_BUCKETS: "true" PORT: 7072 - set: 4 LOCAL_FOLDER: /tmp/gw4 BUCKET_ONE_NAME: versity-gwtest-bucket-one-4 BUCKET_TWO_NAME: versity-gwtest-bucket-two-4 IAM_TYPE: folder USERS_FOLDER: /tmp/iam4 AWS_ENDPOINT_URL: https://127.0.0.1:7073 RUN_SET: "mc" RECREATE_BUCKETS: "true" PORT: 7073 - set: 5 LOCAL_FOLDER: /tmp/gw5 BUCKET_ONE_NAME: versity-gwtest-bucket-one-5 BUCKET_TWO_NAME: versity-gwtest-bucket-two-5 IAM_TYPE: s3 USERS_BUCKET: versity-gwtest-iam AWS_ENDPOINT_URL: https://127.0.0.1:7074 RUN_SET: "aws-user" RECREATE_BUCKETS: "true" PORT: 7074 - set: 6 LOCAL_FOLDER: /tmp/gw6 BUCKET_ONE_NAME: versity-gwtest-bucket-one-6 BUCKET_TWO_NAME: versity-gwtest-bucket-two-6 IAM_TYPE: folder USERS_FOLDER: /tmp/iam6 AWS_ENDPOINT_URL: https://127.0.0.1:7075 RUN_SET: "aws" RECREATE_BUCKETS: "false" PORT: 7075 steps: - name: Check out code into the Go module directory uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version: 'stable' id: go - name: Get Dependencies run: | go get -v -t -d ./... - name: Install BATS run: | git clone https://github.com/bats-core/bats-core.git cd bats-core && ./install.sh $HOME - name: Install s3cmd run: | sudo apt-get install s3cmd - name: Install mc run: | curl https://dl.min.io/client/mc/release/linux-amd64/mc --create-dirs -o /usr/local/bin/mc chmod 755 /usr/local/bin/mc - name: Build and run, posix backend env: LOCAL_FOLDER: ${{ matrix.LOCAL_FOLDER }} BUCKET_ONE_NAME: ${{ matrix.BUCKET_ONE_NAME }} BUCKET_TWO_NAME: ${{ matrix.BUCKET_TWO_NAME }} USERS_FOLDER: ${{ matrix.USERS_FOLDER }} USERS_BUCKET: ${{ matrix.USERS_BUCKET }} IAM_TYPE: ${{ matrix.IAM_TYPE }} AWS_ENDPOINT_URL: ${{ matrix.AWS_ENDPOINT_URL }} RUN_SET: ${{ matrix.RUN_SET }} PORT: ${{ matrix.PORT }} AWS_PROFILE: versity VERSITY_EXE: ${{ github.workspace }}/versitygw RUN_VERSITYGW: true BACKEND: posix RECREATE_BUCKETS: ${{ matrix.RECREATE_BUCKETS }} CERT: ${{ github.workspace }}/cert.pem KEY: ${{ github.workspace }}/versitygw.pem S3CMD_CONFIG: tests/s3cfg.local.default MC_ALIAS: versity LOG_LEVEL: 4 GOCOVERDIR: ${{ github.workspace }}/cover run: | make testbin export AWS_ACCESS_KEY_ID=ABCDEFGHIJKLMNOPQRST export AWS_SECRET_ACCESS_KEY=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn export AWS_REGION=us-east-1 aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID --profile versity aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY --profile versity aws configure set aws_region $AWS_REGION --profile versity mkdir $LOCAL_FOLDER export WORKSPACE=$GITHUB_WORKSPACE openssl genpkey -algorithm RSA -out $KEY -pkeyopt rsa_keygen_bits:2048 openssl req -new -x509 -key $KEY -out $CERT -days 365 -subj "/C=US/ST=California/L=San Francisco/O=Versity/OU=Software/CN=versity.com" mkdir $GOCOVERDIR $USERS_FOLDER if [[ $RECREATE_BUCKETS == "false" ]]; then BYPASS_ENV_FILE=true ${{ github.workspace }}/tests/setup_static.sh fi BYPASS_ENV_FILE=true ${{ github.workspace }}/tests/run.sh $RUN_SET #- name: Build and run, s3 backend # run: | # make testbin # export AWS_ACCESS_KEY_ID=ABCDEFGHIJKLMNOPQRST # export AWS_SECRET_ACCESS_KEY=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn # export AWS_REGION=us-east-1 # aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID --profile versity_s3 # aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY --profile versity_s3 # aws configure set aws_region $AWS_REGION --profile versity_s3 # export AWS_ACCESS_KEY_ID_TWO=ABCDEFGHIJKLMNOPQRST # export AWS_SECRET_ACCESS_KEY_TWO=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn # export WORKSPACE=$GITHUB_WORKSPACE # VERSITYGW_TEST_ENV=./tests/.env.s3 GOCOVERDIR=/tmp/cover ./tests/run_all.sh - name: Coverage report run: | go tool covdata percent -i=cover