# Based on https://github.com/aptly-dev/aptly/blob/master/.travis.yml name: CI on: pull_request: push: tags: - 'v*' branches: - 'master' defaults: run: # see: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#using-a-specific-shell shell: bash --noprofile --norc -eo pipefail -x {0} env: DEBIAN_FRONTEND: noninteractive jobs: build: name: test runs-on: ubuntu-20.04 continue-on-error: ${{ matrix.allow_failure }} timeout-minutes: 30 strategy: fail-fast: true matrix: go: [1.16, 1.17, 1.18] run_long_tests: [no] allow_failure: [false] include: # Disable this for now as it's not clear how to select the latest master branch # version of go using actions/setup-go@v2. # - go: master # run_long_tests: no # allow_failure: true - go: 1.17 run_long_tests: yes allow_failure: false env: NO_FTP_ACCESS: yes BOTO_CONFIG: /dev/null GO111MODULE: "on" GOPROXY: "https://proxy.golang.org" steps: - name: Checkout repository uses: actions/checkout@v2 - name: Setup Go uses: actions/setup-go@v3 with: go-version: ${{ matrix.go }} - name: Get aptly version run: | make version go generate - name: golangci-lint uses: golangci/golangci-lint-action@v3 with: version: v1.50.1 - name: Setup Python uses: actions/setup-python@v2 with: python-version: 3.9 - name: Install O/S packages run: | sudo apt-get update sudo apt-get install -y graphviz gnupg1 gnupg2 gpgv1 gpgv2 git gcc make - name: Install Python packages run: | pip install six packaging appdirs virtualenv pip install -U pip setuptools pip install -r system/requirements.txt - name: Install Azurite id: azuright uses: potatoqualitee/azuright@v1.1 with: directory: ${{ runner.temp }} - name: Make env: RUN_LONG_TESTS: ${{ matrix.run_long_tests }} AZURE_STORAGE_ENDPOINT: "127.0.0.1:10000" AZURE_STORAGE_ACCOUNT: "devstoreaccount1" AZURE_STORAGE_ACCESS_KEY: "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==" run: | COVERAGE_DIR=${{ runner.temp }} make - name: Merge code coverage if: matrix.run_long_tests == 'yes' run: | go install github.com/wadey/gocovmerge@latest ~/go/bin/gocovmerge unit.out ${{ runner.temp }}/*.out > coverage.txt - name: Upload code coverage if: matrix.run_long_tests == 'yes' uses: codecov/codecov-action@v2 with: token: ${{ secrets.CODECOV_TOKEN }} files: coverage.txt release: name: release needs: build runs-on: ubuntu-20.04 steps: - name: Checkout repository uses: actions/checkout@v3 with: # fetch the whole repot for `git describe` to # work and get the nightly verion fetch-depth: 0 - name: Setup Go uses: actions/setup-go@v2 - name: Make Release env: GOBIN: /usr/local/bin run: | make release - name: Publish nightly release to aptly if: github.ref == 'refs/heads/master' env: APTLY_USER: ${{ secrets.APTLY_USER }} APTLY_PASSWORD: ${{ secrets.APTLY_PASSWORD }} run: | ./upload-artifacts.sh nightly - name: Publish release to aptly if: startsWith(github.event.ref, 'refs/tags') env: APTLY_USER: ${{ secrets.APTLY_USER }} APTLY_PASSWORD: ${{ secrets.APTLY_PASSWORD }} run: | ./upload-artifacts.sh release - name: Upload artifacts to GitHub Release if: startsWith(github.event.ref, 'refs/tags') uses: softprops/action-gh-release@v1 with: body: Release ${{ github.ref }} generated by the CI. files: build/*