name: ci on: pull_request: branches: [ master ] push: branches: [ master ] jobs: # post a comment linking to codesandbox with the current branch # meta-demo-comment: # name: meta/demo-comment # runs-on: ubuntu-latest # if: ${{ github.event_name == 'pull_request' }} # steps: # - uses: unsplash/comment-on-pr@v1.2.0 # env: # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # with: # msg: "Demo: " build-docker: name: build/docker runs-on: ${{ matrix.os }} if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' }} strategy: fail-fast: false matrix: os: [ubuntu-latest] steps: - uses: actions/checkout@v2 - run: docker build -t docker.pkg.github.com/maputnik/editor/editor:master . # build the editor build-node: name: "build/node@${{ matrix.node-version }} (${{ 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] node-version: [12.x, 14.x, 16.x] steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - 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 (${{ matrix.os }})" runs-on: ${{ matrix.os }} env: GOPATH: ${{ github.workspace }} GO111MODULE: off if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' }} strategy: fail-fast: false matrix: os: [ubuntu-latest] node-version: [16.x] steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - 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: build/build - run: npm run profiling-build - name: artifacts/editor-profiling uses: actions/upload-artifact@v1 with: name: editor-profiling path: build/profiling - 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@v2 with: go-version: ^1.14.x id: go - name: Check out code into the Go module directory uses: actions/checkout@v2 with: repository: maputnik/desktop ref: v1.0.7 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/ # build and test the editor test_selenium_standalone: name: "test/standalone-${{ matrix.browser }} (${{ matrix.os }})" runs-on: ${{ matrix.os }} if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' }} strategy: fail-fast: false matrix: os: [ubuntu-latest] node-version: [16] browser: [chrome, firefox] container: image: node:${{ matrix.node-version }} options: --network-alias testhost services: selenium: # geckodriver-0.31 seems to have problems as of 2022 May 1 image: selenium/standalone-${{ matrix.browser == 'firefox' && 'firefox:99.0-geckodriver-0.30-20220427' || matrix.browser }} ports: - 4444:4444 options: --shm-size=2gb steps: - uses: actions/checkout@v2 - uses: actions/cache@v1 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - run: npm ci - run: BROWSER=${{ matrix.browser }} TEST_NETWORK=testhost DOCKER_HOST=selenium npm run test - if: ${{ matrix.browser == 'chrome' }} run: ./node_modules/.bin/istanbul report --include build/coverage/coverage.json --dir build/coverage html lcov - if: ${{ matrix.browser == 'chrome' }} name: artifacts/coverage uses: actions/upload-artifact@v1 with: name: coverage path: build/coverage - name: artifacts/screenshots uses: actions/upload-artifact@v1 with: name: screenshots-${{ matrix.browser }} path: build/screenshots