name: bun-release-canary concurrency: release-canary on: schedule: - cron: "0 14 * * *" # every day at 6am PST workflow_dispatch: jobs: sign: name: Sign Release runs-on: ubuntu-latest if: github.repository_owner == 'oven-sh' defaults: run: working-directory: packages/bun-release steps: - id: checkout name: Checkout uses: actions/checkout@v3 - id: setup-gpg name: Setup GPG uses: crazy-max/ghaction-import-gpg@v5 with: gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} passphrase: ${{ secrets.GPG_PASSPHRASE }} - id: setup-bun name: Setup Bun uses: oven-sh/setup-bun@v1 with: bun-version: canary - id: bun-install name: Install Dependencies run: bun install - id: bun-run name: Sign Release run: | echo "$GPG_PASSPHRASE" | bun upload-assets -- "canary" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} npm: name: Release to NPM runs-on: ubuntu-latest needs: sign if: github.repository_owner == 'oven-sh' defaults: run: working-directory: packages/bun-release steps: - id: checkout name: Checkout uses: actions/checkout@v3 - id: setup-bun name: Setup Bun uses: oven-sh/setup-bun@v1 with: bun-version: canary - id: bun-install name: Install Dependencies run: bun install - id: bun-run name: Release run: bun upload-npm -- canary publish env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} # npm-types: # name: Release types to NPM # runs-on: ubuntu-latest # defaults: # run: # working-directory: packages/bun-types # steps: # - id: checkout # name: Checkout # uses: actions/checkout@v3 # - id: setup-node # name: Setup Node.js # uses: actions/setup-node@v3 # with: # node-version: latest # - id: setup-bun # name: Setup Bun # uses: oven-sh/setup-bun@v1 # with: # bun-version: canary # - id: bun-install # name: Install Dependencies # run: bun install # - id: setup-env # name: Setup Environment # run: | # SHA=$(git rev-parse --short "$GITHUB_SHA") # VERSION=$(bun --version) # TAG="${VERSION}-canary.$(date '+%Y%m%d').1+${SHA}" # echo "Setup tag: ${TAG}" # echo "TAG=${TAG}" >> ${GITHUB_ENV} # - id: bun-run # name: Build # run: bun run build # env: # BUN_VERSION: ${{ env.TAG }} # - id: npm-publish # name: Release # uses: JS-DevTools/npm-publish@v1 # with: # package: packages/bun-types/dist/package.json # token: ${{ secrets.NPM_TOKEN }} # tag: canary docker: name: Release to Dockerhub runs-on: ubuntu-latest needs: sign if: github.repository_owner == 'oven-sh' steps: - id: checkout name: Checkout uses: actions/checkout@v3 - id: qemu name: Setup Docker QEMU uses: docker/setup-qemu-action@v2 - id: buildx name: Setup Docker buildx uses: docker/setup-buildx-action@v2 with: platforms: linux/amd64,linux/arm64 - id: metadata name: Setup Docker metadata uses: docker/metadata-action@v4 with: images: oven/bun tags: canary - id: login name: Login to Docker uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - id: push name: Push to Docker uses: docker/build-push-action@v3 with: context: ./dockerhub file: ./dockerhub/Dockerfile-debian platforms: linux/amd64,linux/arm64 builder: ${{ steps.buildx.outputs.name }} push: true tags: ${{ steps.metadata.outputs.tags }} labels: ${{ steps.metadata.outputs.labels }} build-args: | BUN_VERSION=canary s3: name: Upload to S3 runs-on: ubuntu-latest needs: sign if: github.repository_owner == 'oven-sh' defaults: run: working-directory: packages/bun-release steps: - id: checkout name: Checkout uses: actions/checkout@v3 - id: setup-bun name: Setup Bun uses: oven-sh/setup-bun@v1 with: bun-version: canary - id: bun-install name: Install Dependencies run: bun install - id: bun-run name: Release run: bun upload-s3 -- canary env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY}} AWS_ENDPOINT: ${{ secrets.AWS_ENDPOINT }} AWS_BUCKET: bun