name: ci on: push: branches: - main pull_request: branches: - main jobs: fmt: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Run ./ci/steps/fmt.sh uses: ./ci/images/debian10 with: args: ./ci/steps/fmt.sh lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Run ./ci/steps/lint.sh uses: ./ci/images/debian10 with: args: ./ci/steps/lint.sh audit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Audit for vulnerabilities uses: ./ci/images/debian10 with: args: ./ci/steps/audit.sh test-unit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Run unit tests uses: ./ci/images/debian10 with: args: ./ci/steps/test-unit.sh test-e2e: needs: linux-amd64 runs-on: ubuntu-latest env: PASSWORD: e45432jklfdsab CODE_SERVER_ADDRESS: http://localhost:8080 steps: - uses: actions/checkout@v2 - name: Download release packages uses: actions/download-artifact@v2 with: name: release-packages path: ./release-packages - name: Untar code-server file run: | cd release-packages && tar -xzf code-server*-linux-amd64.tar.gz - uses: microsoft/playwright-github-action@v1 - name: Install dependencies and run end-to-end tests run: | ./release-packages/code-server*-linux-amd64/bin/code-server --log trace & yarn --frozen-lockfile yarn test:e2e - name: Upload test artifacts if: always() uses: actions/upload-artifact@v2 with: name: test-videos path: ./test/e2e/videos - name: Remove release packages and test artifacts run: rm -rf ./release-packages ./test/e2e/videos release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Run ./ci/steps/release.sh uses: ./ci/images/debian10 with: args: ./ci/steps/release.sh - name: Upload npm package artifact uses: actions/upload-artifact@v2 with: name: npm-package path: ./release-npm-package linux-amd64: needs: release runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Download npm package uses: actions/download-artifact@v2 with: name: npm-package path: ./release-npm-package - name: Run ./ci/steps/release-packages.sh uses: ./ci/images/centos7 with: args: ./ci/steps/release-packages.sh - name: Upload release artifacts uses: actions/upload-artifact@v2 with: name: release-packages path: ./release-packages linux-arm64: needs: release runs-on: ubuntu-arm64-latest steps: - uses: actions/checkout@v2 - name: Download npm package uses: actions/download-artifact@v2 with: name: npm-package path: ./release-npm-package - name: Run ./ci/steps/release-packages.sh uses: ./ci/images/centos7 with: args: ./ci/steps/release-packages.sh - name: Upload release artifacts uses: actions/upload-artifact@v2 with: name: release-packages path: ./release-packages - name: Remove docker images run: docker system prune -af macos-amd64: needs: release runs-on: macos-latest # This job requires secrets, so can only run on the default branch if: github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v2 - name: Download npm package uses: actions/download-artifact@v2 with: name: npm-package path: ./release-npm-package - run: ./ci/steps/release-packages.sh env: # Otherwise we get rate limited when fetching the ripgrep binary. # For whatever reason only MacOS needs it. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload release artifacts uses: actions/upload-artifact@v2 with: name: release-packages path: ./release-packages docker-amd64: runs-on: ubuntu-latest needs: linux-amd64 steps: - uses: actions/checkout@v2 - name: Download release package uses: actions/download-artifact@v2 with: name: release-packages path: ./release-packages - name: Run ./ci/steps/build-docker-image.sh uses: ./ci/images/debian10 with: args: ./ci/steps/build-docker-image.sh - name: Upload release image uses: actions/upload-artifact@v2 with: name: release-images path: ./release-images docker-arm64: runs-on: ubuntu-arm64-latest needs: linux-arm64 steps: - uses: actions/checkout@v2 - name: Download release package uses: actions/download-artifact@v2 with: name: release-packages path: ./release-packages - name: Run ./ci/steps/build-docker-image.sh uses: ./ci/images/centos7 with: args: ./ci/steps/build-docker-image.sh - name: Upload release image uses: actions/upload-artifact@v2 with: name: release-images path: ./release-images