diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 000000000..d385588d3 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,68 @@ +name: Build & Unit Tests + +permissions: {} + +on: + # push: + # branches: [master] + pull_request: + branches: [master] + +jobs: + # check-if-duplicate-action: + # continue-on-error: true + # runs-on: ubuntu-latest + # outputs: + # should_skip: ${{ steps.skip_check.outputs.should_skip }} + # steps: + # - id: skip_check + # uses: fkirc/skip-duplicate-actions@v5 + # with: + # concurrent_skipping: 'never' + # skip_after_successful_duplicate: 'true' + # paths_ignore: '["master/docs/**"]' + # paths: '["master/**.go", "master/.github"]' + + build: + # needs: check-if-duplicate-action + # if: needs.check-if-duplicate-action.outputs.should_skip != 'true' + runs-on: ubuntu-latest + strategy: + fail-fast: true + matrix: + go: ["stable"] # could be a good idea to consider oldstable as well + + steps: + - name: Check out code + uses: actions/checkout@v3 + + - name: Install Go + uses: actions/setup-go@v4 + with: + go-version: ${{ matrix.go }} + check-latest: true + + - name: Go Format + run: gofmt -s -w . && git diff --exit-code + + - name: Go Vet + continue-on-error: true # option will soon be removed + run: go vet ./... + + - name: Go Tidy + run: go mod tidy && git diff --exit-code + + - name: Go Mod + run: go mod download + + - name: Go Mod Verify + run: go mod verify + + - name: Go Build + run: ./build.sh + + - name: Go Test + run: go test -count=1 ./... # should probably also add -race flag in the future + + - name: Go Benchmark + run: go test -run=- -bench=. -benchtime=1x ./... diff --git a/.github/workflows/integration_tests.yaml b/.github/workflows/integration_tests.yaml new file mode 100644 index 000000000..1161f0204 --- /dev/null +++ b/.github/workflows/integration_tests.yaml @@ -0,0 +1,51 @@ +name: Integration Tests + +on: + # push: + # branches: [master] + pull_request: + branches: [master] + +jobs: + # check-if-duplicate-action: + # # continue-on-error: true # Uncomment once integration is finished + # runs-on: ubuntu-latest + # outputs: + # should_skip: ${{ steps.skip_check.outputs.should_skip }} + # steps: + # - id: skip_check + # uses: fkirc/skip-duplicate-actions@v5 + # with: + # concurrent_skipping: 'never' + # skip_after_successful_duplicate: 'true' + # paths_ignore: '["master/docs/**"]' + # paths: '["master/**.go", "master/*.sh", "master/.github", "master/data/ansible/conf/samples/**", "master/data/tariffplans"]' + + integration-tests: + # needs: check-if-duplicate-action + # if: needs.check-if-duplicate-action.outputs.should_skip != 'true' + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: "3.x" + + - name: Install Ansible + run: | + python -m pip install --upgrade pip + pip install ansible + + - name: Run Ansible Playbook + run: | + ansible-playbook data/ansible/integration_tests/main.yaml -i localhost, -c local -e "ansible_user=$(whoami)" + + - name: Run integration tests + run: | + sudo su <