name: 'Release: Push to Channel' on: workflow_dispatch: inputs: version: description: 'n8n Release version to push to a channel' required: true release-channel: description: 'Release channel' required: true type: choice default: 'next' options: - next - latest jobs: release-to-npm: name: Release to NPM runs-on: ubuntu-latest timeout-minutes: 5 steps: - uses: actions/setup-node@v4.0.2 with: node-version: 20.x - run: | echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc npm dist-tag add n8n@${{ github.event.inputs.version }} ${{ github.event.inputs.release-channel }} release-to-docker-hub: name: Release to DockerHub runs-on: ubuntu-latest timeout-minutes: 5 steps: - uses: docker/login-action@v3.0.0 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - run: docker buildx imagetools create -t ${{ secrets.DOCKER_USERNAME }}/n8n:${{ github.event.inputs.release-channel }} ${{ secrets.DOCKER_USERNAME }}/n8n:${{ github.event.inputs.version }} release-to-github-container-registry: name: Release to GitHub Container Registry runs-on: ubuntu-latest timeout-minutes: 5 steps: - uses: docker/login-action@v3.0.0 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - run: docker buildx imagetools create -t ghcr.io/${{ github.repository_owner }}/n8n:${{ github.event.inputs.release-channel }} ghcr.io/${{ github.repository_owner }}/n8n:${{ github.event.inputs.version }} update-docs: name: Update latest and next in the docs runs-on: ubuntu-latest needs: [release-to-npm, release-to-docker-hub] steps: - continue-on-error: true run: curl -u docsWorkflows:${{ secrets.N8N_WEBHOOK_DOCS_PASSWORD }} --request GET 'https://internal.users.n8n.cloud/webhook/update-latest-next'