name: ci on: pull_request: branches: [ main ] push: branches: [ main ] jobs: build-docker: name: build docker runs-on: ubuntu-latest if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' }} steps: - uses: actions/checkout@v4 - run: docker build -t docker.pkg.github.com/maputnik/editor/editor:main . # build the editor build-node: name: "build on ${{ matrix.os }}" runs-on: ${{ matrix.os }} if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - uses: actions/cache@v1 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - run: npm ci - run: npm run build build-artifacts: name: "build artifacts" runs-on: ubuntu-latest if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' }} steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' - uses: actions/cache@v1 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - run: npm ci - run: npm run build - run: npm run build-storybook - name: artifacts/editor uses: actions/upload-artifact@v1 with: name: editor path: dist - name: artifacts/storybook uses: actions/upload-artifact@v1 with: name: storybook path: build/storybook # Build and upload desktop CLI artifacts - name: Set up Go uses: actions/setup-go@v3 with: go-version: ^1.19.x id: go - name: Check out code into the Go module directory uses: actions/checkout@v4 with: repository: maputnik/desktop ref: master path: ./src/github.com/maputnik/desktop/ - name: Make run: cd src/github.com/maputnik/desktop/ && make - name: Artifacts/linux uses: actions/upload-artifact@v1 with: name: maputnik-linux path: ./src/github.com/maputnik/desktop/bin/linux/ - name: Artifacts/darwin uses: actions/upload-artifact@v1 with: name: maputnik-darwin path: ./src/github.com/maputnik/desktop/bin/darwin/ - name: Artifacts/windows uses: actions/upload-artifact@v1 with: name: maputnik-windows path: ./src/github.com/maputnik/desktop/bin/windows/ e2e-tests: name: "E2E tests using ${{ matrix.browser }}" strategy: fail-fast: false matrix: browser: [chrome, firefox] runs-on: ubuntu-22.04 steps: - name: Checkout uses: actions/checkout@v4 - run: npm ci - name: Cypress run uses: cypress-io/github-action@v6 with: build: npm run build start: npm run start browser: ${{ matrix.browser }} - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v3 with: files: ${{ github.workspace }}/.nyc_output/out.json verbose: true