diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 05dd981..b54158e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -3,17 +3,63 @@ name: default push: branches: - main + - release-* tags: - v* - pull_request: {} -env: - CI_ARGS: --cache-from=type=registry,ref=registry.dev.siderolabs.io/${GITHUB_REPOSITORY}:buildcache --cache-to=type=registry,ref=registry.dev.siderolabs.io/${GITHUB_REPOSITORY}:buildcache,mode=max + pull_request: + types: [opened, synchronize, reopened, labeled] + branches: + - main + - release-* + schedule: + - cron: '30 1 * * 1' jobs: default: + if: ${{ !startsWith(github.head_ref, 'renovate/') permissions: - contents: write packages: write - runs-on: self-hosted + runs-on: + - self-hosted + - pkgs + services: + buildkitd: + image: moby/buildkit:buildx-stable-1 + ports: + - 1234:1234 + options: --privileged + volumes: + - /var/lib/buildkit/${{ github.repository }}:/var/lib/buildkit + - /usr/etc/buildkit/buildkitd.toml:/etc/buildkit/buildkitd.toml steps: - name: checkout uses: actions/checkout@v3 + - name: Unshallow + run: | + git fetch --prune --unshallow + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + with: + driver: remote + endpoint: tcp://localhost:1234 + append: | + - endpoint: tcp://buildkit-arm64.ci.svc.cluster.local:1234 + platforms: linux/arm64 + - name: build + if: github.event_name != 'schedule' }} + run: | + make + - name: reproducibility + if: contains(github.event.pull_request.labels.*.name, 'integration/reproducibility') + run: | + make reproducibility-test + - name: Login to registry + if: github.event_name != 'schedule' }} && github.event_name != 'pull_request' + uses: docker/login-action@v2 + with: + password: ${{ secrets.GITHUB_TOKEN }} + registry: ghcr.io + username: ${{ github.repository_owner }} + - name: Push to registry + if: github.event_name != 'schedule' }} && github.event_name != 'pull_request' + run: | + make PUSH=true diff --git a/.github/workflows/slack-notify.yaml b/.github/workflows/slack-notify.yaml new file mode 100644 index 0000000..6d3ca1e --- /dev/null +++ b/.github/workflows/slack-notify.yaml @@ -0,0 +1,86 @@ +name: slack-notify +"on": + workflow_run: + workflows: + - default + types: + - completed +jobs: + slack-notify: + runs-on: + - self-hosted + if: ${{ github.event.workflow_run.conclusion != 'skipped' }} + steps: + - name: Retrieve Workflow Run Info + id: retrieve-workflow-run-info + uses: potiuk/get-workflow-origin@v1_5 + with: + sourceRunId: ${{ github.event.workflow_run.id }} + token: ${{ secrets.GITHUB_TOKEN }} + - name: Slack Notify + uses: slackapi/slack-github-action@v1 + with: + channel-id: proj-talos-maintainers + payload: | + { + "attachments": [ + { + "color": "${{ github.event.workflow_run.conclusion == 'success' && '#2EB886' || github.event.workflow_run.conclusion == 'failure' && '#A30002' || '#FFCC00' }}", + "fallback": "test", + "blocks": [ + { + "type": "section", + "fields": [ + { + "type": "mrkdwn", + "text": "${{ github.event.workflow_run.event == 'pull_request' && format('*Pull Request:* {0} (`{1}`)\n<{2}/pull/{3}|{4}>', github.repository, github.ref_name, github.event.repository.html_url, steps.retrieve-workflow-run-info.outputs.pullRequestNumber, github.event.workflow_run.display_title) || format('*Build:* {0}#{1} (`{2}`)', github.repository, github.sha, github.ref_name) }}" + }, + { + "type": "mrkdwn", + "text": "*Status:*\n`${{ github.event.workflow_run.conclusion }}`" + } + ] + }, + { + "type": "section", + "fields": [ + { + "type": "mrkdwn", + "text": "*Author:*\n`${{ github.actor }}`" + }, + { + "type": "mrkdwn", + "text": "*Event:*\n`${{ github.event.workflow_run.event }}`" + } + ] + }, + { + "type": "divider" + }, + { + "type": "actions", + "elements": [ + { + "type": "button", + "text": { + "type": "plain_text", + "text": "Logs" + }, + "url": "${{ github.event.workflow_run.html_url }}" + }, + { + "type": "button", + "text": { + "type": "plain_text", + "text": "Commit" + }, + "url": "${{ github.event.repository.html_url }}/commit/${{ github.sha }}" + } + ] + } + ] + } + ] + } + env: + SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} diff --git a/Makefile b/Makefile index 2f12e18..e7d8634 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ REGISTRY_AND_USERNAME := $(REGISTRY)/$(USERNAME) SOURCE_DATE_EPOCH ?= "1559497065" # Sync bldr image with Pkgfile -BLDR_IMAGE := ghcr.io/siderolabs/bldr:v0.2.0 +BLDR_IMAGE := ghcr.io/siderolabs/bldr:v0.2.2 BLDR ?= docker run --rm --volume $(PWD):/toolchain --entrypoint=/bldr \ $(BLDR_IMAGE) graph --root=/toolchain @@ -34,7 +34,7 @@ help: ## This help menu. @grep -E '^[a-zA-Z0-9\.%_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' target-%: ## Builds the specified target defined in the Pkgfile. The build result will only remain in the build cache. - @$(BUILD) \ + $(BUILD) \ --target=$* \ $(COMMON_ARGS) \ $(TARGET_ARGS) . diff --git a/Pkgfile b/Pkgfile index 22a604b..eeebfcc 100644 --- a/Pkgfile +++ b/Pkgfile @@ -1,4 +1,4 @@ -# syntax = ghcr.io/siderolabs/bldr:v0.2.0 +# syntax = ghcr.io/siderolabs/bldr:v0.2.2 format: v1alpha2