Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: use config from meta #57

Merged
merged 11 commits into from
Jan 17, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
124 changes: 5 additions & 119 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@ name: build

on: [push, pull_request]

permissions:
packages: write

jobs:
build:
strategy:
Expand Down Expand Up @@ -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 }}
11 changes: 5 additions & 6 deletions .github/workflows/goreleaser.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}
63 changes: 5 additions & 58 deletions .github/workflows/pr-comment.yml
Original file line number Diff line number Diff line change
@@ -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 = `<!-- bot: ${purpose} -->`;
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);
}
jobs:
pr-comment:
uses: charmbracelet/meta/.github/workflows/pr-comment.yml@main