feat: add workspace files to chat from Files and Changes #1512
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Docker | |
| on: | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - "docker/**" | |
| - ".dockerignore" | |
| - ".github/workflows/docker.yml" | |
| - "package.json" | |
| - "package-lock.json" | |
| - "patches/**" | |
| - "scripts/**" | |
| - "tsconfig.json" | |
| - "tsconfig.base.json" | |
| - "packages/app/**" | |
| - "packages/cli/**" | |
| - "packages/client/**" | |
| - "packages/expo-two-way-audio/**" | |
| - "packages/highlight/**" | |
| - "packages/protocol/**" | |
| - "packages/relay/**" | |
| - "packages/server/**" | |
| push: | |
| branches: [main] | |
| tags: | |
| - "v*" | |
| workflow_dispatch: | |
| inputs: | |
| paseo_version: | |
| description: "Expected source version to build. Required when publish is true." | |
| required: false | |
| default: "" | |
| publish: | |
| description: "Publish the image to GHCR. Manual publishes require paseo_version." | |
| required: false | |
| default: "false" | |
| type: choice | |
| options: | |
| - "false" | |
| - "true" | |
| publish_latest: | |
| description: "Also publish ghcr.io/getpaseo/paseo:latest. Ignored for prereleases." | |
| required: false | |
| default: "false" | |
| type: choice | |
| options: | |
| - "false" | |
| - "true" | |
| concurrency: | |
| group: docker-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| env: | |
| REGISTRY: ghcr.io | |
| PLATFORMS: linux/amd64,linux/arm64 | |
| jobs: | |
| setup: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| image: ${{ steps.values.outputs.image }} | |
| install_version: ${{ steps.values.outputs.install_version }} | |
| publish: ${{ steps.values.outputs.publish }} | |
| check_tag: ${{ steps.values.outputs.check_tag }} | |
| publish_tags: ${{ steps.values.outputs.publish_tags }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - id: values | |
| env: | |
| INPUT_PASEO_VERSION: ${{ inputs.paseo_version }} | |
| INPUT_PUBLISH: ${{ inputs.publish }} | |
| INPUT_PUBLISH_LATEST: ${{ inputs.publish_latest }} | |
| REPO_OWNER: ${{ github.repository_owner }} | |
| REF_NAME: ${{ github.ref_name }} | |
| run: | | |
| set -euo pipefail | |
| owner="$(printf '%s' "${REPO_OWNER}" | tr '[:upper:]' '[:lower:]')" | |
| image="ghcr.io/${owner}/paseo" | |
| package_version="$(node -p "require('./package.json').version")" | |
| install_version="${INPUT_PASEO_VERSION:-${package_version}}" | |
| publish=false | |
| publish_latest=false | |
| prerelease=false | |
| if [[ "${GITHUB_REF}" == refs/tags/v* ]]; then | |
| install_version="${REF_NAME#v}" | |
| publish=true | |
| if [[ "${REF_NAME}" == *-* ]]; then | |
| prerelease=true | |
| else | |
| publish_latest=true | |
| fi | |
| elif [[ "${GITHUB_EVENT_NAME}" == "workflow_dispatch" ]]; then | |
| if [[ "${INPUT_PUBLISH:-false}" == "true" ]]; then | |
| if [[ -z "${INPUT_PASEO_VERSION}" || "${INPUT_PASEO_VERSION}" == "latest" ]]; then | |
| echo "::error::paseo_version is required for manual Docker publishes." | |
| exit 1 | |
| fi | |
| publish=true | |
| fi | |
| if [[ "${install_version}" == *-* ]]; then | |
| prerelease=true | |
| fi | |
| if [[ "${INPUT_PUBLISH_LATEST:-false}" == "true" && "${prerelease}" != "true" ]]; then | |
| publish_latest=true | |
| fi | |
| fi | |
| check_tag="${image}:check-${GITHUB_SHA::12}" | |
| publish_tags="${image}:${install_version}" | |
| if [[ "${publish_latest}" == "true" ]]; then | |
| publish_tags="${publish_tags}"$'\n'"${image}:latest" | |
| fi | |
| { | |
| echo "image=${image}" | |
| echo "install_version=${install_version}" | |
| echo "publish=${publish}" | |
| echo "check_tag=${check_tag}" | |
| echo "publish_tags<<EOF" | |
| echo "${publish_tags}" | |
| echo "EOF" | |
| } >> "$GITHUB_OUTPUT" | |
| echo "Resolved image=${image} install_version=${install_version} publish=${publish}" | |
| build: | |
| needs: setup | |
| if: needs.setup.outputs.publish != 'true' | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: docker/setup-qemu-action@v4 | |
| - uses: docker/setup-buildx-action@v4 | |
| - uses: docker/build-push-action@v7 | |
| with: | |
| context: . | |
| file: docker/base/Dockerfile | |
| platforms: ${{ env.PLATFORMS }} | |
| build-args: | | |
| PASEO_VERSION=${{ needs.setup.outputs.install_version }} | |
| tags: ${{ needs.setup.outputs.check_tag }} | |
| push: false | |
| provenance: false | |
| cache-from: type=gha,scope=paseo | |
| cache-to: type=gha,scope=paseo,mode=max | |
| publish: | |
| needs: setup | |
| if: needs.setup.outputs.publish == 'true' | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: docker/setup-qemu-action@v4 | |
| - uses: docker/setup-buildx-action@v4 | |
| - name: Log in to GHCR | |
| uses: docker/login-action@v4 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - uses: docker/build-push-action@v7 | |
| with: | |
| context: . | |
| file: docker/base/Dockerfile | |
| platforms: ${{ env.PLATFORMS }} | |
| build-args: | | |
| PASEO_VERSION=${{ needs.setup.outputs.install_version }} | |
| tags: ${{ needs.setup.outputs.publish_tags }} | |
| push: true | |
| provenance: false | |
| cache-from: type=gha,scope=paseo | |
| cache-to: type=gha,scope=paseo,mode=max |