name: build env: GO_VERSION: 1.14 NODE_VERSION: 13 on: push: branches: - '*' tags: - v* pull_request: jobs: test: runs-on: ${{ matrix.os }} env: GO111MODULE: on GOPROXY: https://goproxy.io strategy: fail-fast: false matrix: os: - ubuntu-latest - macOS-latest - windows-latest steps: - name: Checkout uses: actions/checkout@v2 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@v2 with: go-version: ${{ env.GO_VERSION }} - name: Set up Node uses: actions/setup-node@v1 with: node-version: ${{ env.NODE_VERSION }} - name: Set up Go modules cache uses: actions/cache@v2 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('go.sum') }} restore-keys: | ${{ runner.os }}-go- - name: Get npm cache directory id: npm-cache run: | echo "::set-output name=dir::$(npm config get cache)" - name: Set up npm cache uses: actions/cache@v2 with: path: ${{ steps.npm-cache.outputs.dir }} key: ${{ runner.os }}-node-${{ hashFiles('client/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Run make ci shell: bash run: | make ci - name: Upload coverage uses: codecov/codecov-action@v1 if: success() && matrix.os == 'ubuntu-latest' with: token: ${{ secrets.CODECOV_TOKEN }} file: ./coverage.txt app: runs-on: ubuntu-latest needs: test steps: - name: Checkout uses: actions/checkout@v2 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@v2 with: go-version: ${{ env.GO_VERSION }} - name: Set up Node uses: actions/setup-node@v1 with: node-version: ${{ env.NODE_VERSION }} - name: Set up Go modules cache uses: actions/cache@v2 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('go.sum') }} restore-keys: | ${{ runner.os }}-go- - name: Get npm cache directory id: npm-cache run: | echo "::set-output name=dir::$(npm config get cache)" - name: Set up node_modules cache uses: actions/cache@v2 with: path: ${{ steps.npm-cache.outputs.dir }} key: ${{ runner.os }}-node-${{ hashFiles('client/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Set up Snapcraft run: | sudo apt-get -yq --no-install-suggests --no-install-recommends install snapcraft - name: Set up GoReleaser run: | curl -sfL https://install.goreleaser.com/github.com/goreleaser/goreleaser.sh | BINDIR="$(go env GOPATH)/bin" sh - name: Run snapshot build run: | make release docker: runs-on: ubuntu-latest needs: test steps: - name: Set up Docker Buildx uses: crazy-max/ghaction-docker-buildx@v1 - name: Checkout uses: actions/checkout@v2 with: fetch-depth: 0 - name: Docker Buildx (build) run: | make docker-multi-arch - name: Clear if: always() && startsWith(github.ref, 'refs/tags/v') run: | rm -f ${HOME}/.docker/config.json notify: needs: [app, docker] # Secrets are not passed to workflows that are triggered by a pull request from a fork if: ${{ github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository }} runs-on: ubuntu-latest steps: - name: Conclusion uses: technote-space/workflow-conclusion-action@v1 - name: Send Slack notif uses: 8398a7/action-slack@v3 with: status: ${{ env.WORKFLOW_CONCLUSION }} fields: repo,message,commit,author env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}