diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9a9af25f4..ca61004fd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,9 +2,6 @@ name: build on: [push, pull_request] -permissions: - packages: write - jobs: build: strategy: @@ -33,119 +30,8 @@ jobs: run: go test ./... nightly: - env: - GO111MODULE: "on" - DOCKER_CLI_EXPERIMENTAL: enabled - runs-on: ubuntu-latest - steps: - - name: Install Go - uses: actions/setup-go@v2 - with: - go-version: "~1.17" - - - name: Checkout code - uses: actions/checkout@v2 - - - name: Login to GitHub Container Registry - uses: docker/login-action@v1 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - - - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v2 - with: - distribution: goreleaser - version: latest - args: release --snapshot --rm-dist --skip-sign --skip-sbom - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} - - - name: Push docker images - run: | - GIT_HASH=$(git rev-parse --short "$GITHUB_SHA") - - docker tag ghcr.io/$GITHUB_REPOSITORY:latest-amd64 ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-amd64 - docker tag ghcr.io/$GITHUB_REPOSITORY:latest-arm64 ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-arm64 - docker tag ghcr.io/$GITHUB_REPOSITORY:latest-armv7 ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-armv7 - docker tag ghcr.io/$GITHUB_REPOSITORY:latest-i386 ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-i386 - - docker push ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-amd64 - docker push ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-arm64 - docker push ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-armv7 - docker push ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-i386 - - docker manifest create ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH \ - ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-amd64 \ - ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-arm64 \ - ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-armv7 \ - ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-i386 - docker manifest push ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH - - if [[ $GITHUB_REF = 'refs/heads/main' && $GITHUB_EVENT_NAME = 'push' ]]; then - docker tag ghcr.io/$GITHUB_REPOSITORY:latest-amd64 ghcr.io/$GITHUB_REPOSITORY:devel-amd64 - docker tag ghcr.io/$GITHUB_REPOSITORY:latest-arm64 ghcr.io/$GITHUB_REPOSITORY:devel-arm64 - docker tag ghcr.io/$GITHUB_REPOSITORY:latest-armv7 ghcr.io/$GITHUB_REPOSITORY:devel-armv7 - docker tag ghcr.io/$GITHUB_REPOSITORY:latest-i386 ghcr.io/$GITHUB_REPOSITORY:devel-i386 - - docker push ghcr.io/$GITHUB_REPOSITORY:devel-amd64 - docker push ghcr.io/$GITHUB_REPOSITORY:devel-arm64 - docker push ghcr.io/$GITHUB_REPOSITORY:devel-armv7 - docker push ghcr.io/$GITHUB_REPOSITORY:devel-i386 - - docker manifest create ghcr.io/$GITHUB_REPOSITORY:devel \ - ghcr.io/$GITHUB_REPOSITORY:devel-amd64 \ - ghcr.io/$GITHUB_REPOSITORY:devel-arm64 \ - ghcr.io/$GITHUB_REPOSITORY:devel-armv7 \ - ghcr.io/$GITHUB_REPOSITORY:devel-i386 - docker manifest push ghcr.io/$GITHUB_REPOSITORY:devel - fi - - - uses: actions/upload-artifact@v2 - with: - name: Linux (x86_64) - path: | - dist/soft-serve_linux_amd64/* - LICENSE - README.md - - - uses: actions/upload-artifact@v2 - with: - name: Linux (arm64) - path: | - dist/soft-serve_linux_arm64/* - LICENSE - README.md - - - uses: actions/upload-artifact@v2 - with: - name: MacOS (x86_64) - path: | - dist/soft-serve_darwin_amd64/* - LICENSE - README.md - - - uses: actions/upload-artifact@v2 - with: - name: MacOS (arm64) - path: | - dist/soft-serve_darwin_arm64/* - LICENSE - README.md - - - uses: actions/upload-artifact@v2 - with: - name: Windows (x86_64) - path: | - dist/soft-serve_windows_amd64/* - LICENSE - README.md + uses: charmbracelet/meta/.github/workflows/nightly.yml@main + secrets: + docker_username: ${{ secrets.DOCKERHUB_USERNAME }} + docker_token: ${{ secrets.DOCKERHUB_TOKEN }} + goreleaser_key: ${{ secrets.GORELEASER_KEY }} diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index 76155d584..55b36628f 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -12,9 +12,8 @@ concurrency: jobs: goreleaser: uses: charmbracelet/meta/.github/workflows/goreleaser.yml@main - with: - secrets: - docker_username: ${{ secrets.DOCKERHUB_USERNAME }} - docker_token: ${{ secrets.DOCKERHUB_TOKEN }} - gh_pat: ${{ secrets.PERSONAL_ACCESS_TOKEN }} - goreleaser_key: ${{ secrets.GORELEASER_KEY }} + secrets: + docker_username: ${{ secrets.DOCKERHUB_USERNAME }} + docker_token: ${{ secrets.DOCKERHUB_TOKEN }} + gh_pat: ${{ secrets.PERSONAL_ACCESS_TOKEN }} + goreleaser_key: ${{ secrets.GORELEASER_KEY }} diff --git a/.github/workflows/pr-comment.yml b/.github/workflows/pr-comment.yml index dd30e6c78..e9356a5af 100644 --- a/.github/workflows/pr-comment.yml +++ b/.github/workflows/pr-comment.yml @@ -1,63 +1,10 @@ -name: Comment on pull request +name: pr-comment + on: workflow_run: workflows: [build] types: [completed] -jobs: - pr_comment: - if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' - runs-on: ubuntu-latest - steps: - - uses: actions/github-script@v5 - with: - # This snippet is public-domain, taken from - # https://github.com/oprypin/nightly.link/blob/master/.github/workflows/pr-comment.yml - script: | - async function upsertComment(owner, repo, issue_number, purpose, body) { - const {data: comments} = await github.rest.issues.listComments( - {owner, repo, issue_number}); - - const marker = ``; - body = marker + "\n" + body; - - const existing = comments.filter((c) => c.body.includes(marker)); - if (existing.length > 0) { - const last = existing[existing.length - 1]; - core.info(`Updating comment ${last.id}`); - await github.rest.issues.updateComment({ - owner, repo, - body, - comment_id: last.id, - }); - } else { - core.info(`Creating a comment in issue / PR #${issue_number}`); - await github.rest.issues.createComment({issue_number, body, owner, repo}); - } - } - - const {owner, repo} = context.repo; - const run_id = ${{github.event.workflow_run.id}}; - const pull_requests = ${{ toJSON(github.event.workflow_run.pull_requests) }}; - if (!pull_requests.length) { - return core.error("This workflow doesn't match any pull requests!"); - } - - const artifacts = await github.paginate( - github.rest.actions.listWorkflowRunArtifacts, {owner, repo, run_id}); - if (!artifacts.length) { - return core.error(`No artifacts found`); - } - const sha = "${{github.event.workflow_run.head_sha}}"; - let body = `Download the artifacts for this pull request:\n`; - for (const art of artifacts) { - body += `\n* [${art.name}.zip](https://nightly.link/${owner}/${repo}/actions/artifacts/${art.id}.zip)`; - } - body += `\n\nOr use the following Docker image \`ghcr.io/${owner}/${repo}:devel-${sha.substr(0,7)}\``; - - core.info("Review thread message body:", body); - - for (const pr of pull_requests) { - await upsertComment(owner, repo, pr.number, - "nightly-link", body); - } \ No newline at end of file +jobs: + pr-comment: + uses: charmbracelet/meta/.github/workflows/pr-comment.yml@main