From a00cdecd20d6b7513f94d6e1ef2f276e662998a8 Mon Sep 17 00:00:00 2001 From: "Mikhail f. Shiryaev" Date: Thu, 19 Dec 2024 17:44:50 +0100 Subject: [PATCH] Make release and docker workflows --- .github/workflows/docker.yml | 47 ++++++++++++++++++ .github/workflows/upload-assets.yml | 77 ++++++++++------------------- 2 files changed, 72 insertions(+), 52 deletions(-) create mode 100644 .github/workflows/docker.yml diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..aa99738 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,47 @@ +name: Upload Docker images to ghcr.io +on: + release: + types: [published] + workflow_dispatch: + inputs: + ref: + description: 'Git tag to push the image' + required: true + type: string +jobs: + docker: + name: Build image + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref }} + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + context: ${{ inputs.ref && 'git' || 'workflow' }} + images: ghcr.io/${{ github.repository }} + # create latest tag for branch events + flavor: | + latest=${{ inputs.ref && 'false' || 'auto' }} + tags: | + type=semver,pattern={{version}},value=${{inputs.ref}} + type=semver,pattern={{major}}.{{minor}},value=${{inputs.ref}} + type=semver,pattern={{major}}.{{minor}}.{{patch}},value=${{inputs.ref}} + - name: Login to ghcr.io + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push + id: docker_build + uses: docker/build-push-action@v5 + with: + # push for non-pr events + push: ${{ github.event_name != 'pull_request' }} + context: . + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/upload-assets.yml b/.github/workflows/upload-assets.yml index f6849a0..da8633e 100644 --- a/.github/workflows/upload-assets.yml +++ b/.github/workflows/upload-assets.yml @@ -5,74 +5,47 @@ name: Upload Packages to new release release: types: - published + workflow_dispatch: + inputs: + ref: + description: 'Git tag to push the image' + required: true + type: string jobs: build: name: Build runs-on: ubuntu-latest - outputs: - deb: ${{ steps.build.outputs.deb }} - rpm: ${{ steps.build.outputs.rpm }} - sha256sum: ${{ steps.build.outputs.sha256sum }} - md5sum: ${{ steps.build.outputs.md5sum }} - steps: - uses: actions/checkout@v4 name: Checkout with: # Otherwise there's a risk to not get latest tag # We hope, that the current commit at - # least 50 commits close to the latest release - fetch-depth: 50 + # least 100 commits close to the latest release + fetch-depth: 100 + fetch-tags: ${{ inputs.ref != '' }} + ref: ${{ inputs.ref }} + - name: Set up Go 1 + uses: actions/setup-go@v5 + with: + go-version: ^1 - name: Build packages id: build run: | - # Checkout action doesn't fetch tags - git fetch --tags + go install github.com/goreleaser/nfpm/v2/cmd/nfpm@v2.40.0 make -e CGO_ENABLED=0 packages - make github_artifact - - name: Upload rpm - id: upload-rpm - uses: actions/upload-release-asset@v1 + - name: Upload release assets env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - ASSET: ${{ steps.build.outputs.rpm }} - with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: artifact/${{ env.ASSET }} - asset_name: ${{ env.ASSET }} - asset_content_type: application/octet-stream - - name: Upload sha256sum - id: upload-sha256sum - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - ASSET: ${{ steps.build.outputs.sha256sum }} - with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: artifact/${{ env.ASSET }} - asset_name: ${{ env.ASSET }} - asset_content_type: application/octet-stream - - name: Upload md5sum - id: upload-md5sum - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - ASSET: ${{ steps.build.outputs.md5sum }} - with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: artifact/${{ env.ASSET }} - asset_name: ${{ env.ASSET }} - asset_content_type: application/octet-stream - - name: Upload deb - id: upload-deb - uses: actions/upload-release-asset@v1 + run: | + TAG="${{ inputs.ref && inputs.ref || github.event.release.tag_name }}" + gh release upload --repo ${{ github.repository }} "$TAG" \ + out/*.deb out/*.rpm out/*sum + - name: Upload packages to packagecloud.com env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - ASSET: ${{ steps.build.outputs.deb }} - with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: artifact/${{ env.ASSET }} - asset_name: ${{ env.ASSET }} - asset_content_type: application/octet-stream + PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }} + run: | + go install github.com/mlafeldt/pkgcloud/cmd/pkgcloud-push + make packagecloud-stable