diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..f6b22f07 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,100 @@ +name: main + +on: + push: + branches: + - 'master' + tags: + - 'v*' + pull_request: + +jobs: +# linters + lint-frontend: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: '14' + - run: make lint-frontend + lint-backend: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2 + with: + go-version: 1.17 + - run: make lint-backend + lint-commits: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-node@v2 + with: + node-version: '14' + - run: make lint-commits + lint: + runs-on: ubuntu-latest + needs: [lint-frontend, lint-backend, lint-commits] + steps: + - run: echo "done" + +# tests + test-frontend: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: '14' + - run: make test-frontend + test-backend: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2 + with: + go-version: 1.17 + - run: make test-backend + test: + runs-on: ubuntu-latest + needs: [test-frontend, test-backend] + steps: + - run: echo "done" + +# release + release: + runs-on: ubuntu-latest + needs: [lint, test] + if: startsWith(github.event.ref, 'refs/tags/v') + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: actions/setup-go@v2 + with: + go-version: 1.17 + - uses: actions/setup-node@v2 + with: + node-version: '14' + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Build frontend + run: make build-frontend + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + version: latest + args: release --rm-dist + env: + GITHUB_TOKEN: ${{ secrets.GH_PAT }}