diff options
Diffstat (limited to '.github/workflows/docker.yaml')
| -rw-r--r-- | .github/workflows/docker.yaml | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml new file mode 100644 index 00000000..e7b3da6a --- /dev/null +++ b/.github/workflows/docker.yaml @@ -0,0 +1,133 @@ +name: build-docker + +on: + push: + branches: [main] + +jobs: + publish_x86: + concurrency: + group: ${{ github.ref }}-x86 + cancel-in-progress: true + permissions: + packages: write + + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + with: + repository: atuinsh/atuin + path: "./" + + - name: Get Repo Owner + id: get_repo_owner + run: echo "REPO_OWNER=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" > $GITHUB_ENV + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to container Registry + uses: docker/login-action@v3 + with: + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + registry: ghcr.io + + - name: Get short sha + id: shortsha + run: echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + + - name: Release build + id: release_build + uses: docker/build-push-action@v6 + with: + outputs: "type=registry,push=true" + platforms: linux/amd64 + file: ./Dockerfile + context: . + provenance: false + build-args: | + Version=dev + GitCommit=${{ steps.shortsha.outputs.short_sha }} + tags: | + ghcr.io/${{ env.REPO_OWNER }}/atuin:${{ steps.shortsha.outputs.short_sha }}-amd64 + + publish_aarch64: + concurrency: + group: ${{ github.ref }}-aarch64 + cancel-in-progress: true + permissions: + packages: write + + runs-on: ubuntu-24.04-arm + steps: + - uses: actions/checkout@v6 + with: + repository: atuinsh/atuin + path: "./" + + - name: Get Repo Owner + id: get_repo_owner + run: echo "REPO_OWNER=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" > $GITHUB_ENV + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to container Registry + uses: docker/login-action@v3 + with: + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + registry: ghcr.io + + - name: Get short sha + id: shortsha + run: echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + + - name: Release build + id: release_build + uses: docker/build-push-action@v6 + with: + outputs: "type=registry,push=true" + platforms: linux/arm64 + file: ./Dockerfile + context: . + provenance: false + build-args: | + Version=dev + GitCommit=${{ steps.shortsha.outputs.short_sha }} + tags: | + ghcr.io/${{ env.REPO_OWNER }}/atuin:${{ steps.shortsha.outputs.short_sha }}-aarch64 + + publish_manifest: + runs-on: ubuntu-latest + needs: [publish_x86, publish_aarch64] + steps: + - uses: actions/checkout@v6 + with: + repository: atuinsh/atuin + path: "./" + + - name: Get Repo Owner + id: get_repo_owner + run: echo "REPO_OWNER=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" > $GITHUB_ENV + + - name: Login to container Registry + uses: docker/login-action@v3 + with: + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + registry: ghcr.io + + - name: Get short sha + id: shortsha + run: echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + + - name: Create manifest + run: | + docker manifest create ghcr.io/${{ env.REPO_OWNER }}/atuin:${{ steps.shortsha.outputs.short_sha }} \ + --amend ghcr.io/${{ env.REPO_OWNER }}/atuin:${{ steps.shortsha.outputs.short_sha }}-amd64 \ + --amend ghcr.io/${{ env.REPO_OWNER }}/atuin:${{ steps.shortsha.outputs.short_sha }}-aarch64 + docker manifest annotate --arch amd64 --os linux ghcr.io/${{ env.REPO_OWNER }}/atuin:${{ steps.shortsha.outputs.short_sha }} ghcr.io/${{ env.REPO_OWNER }}/atuin:${{ steps.shortsha.outputs.short_sha }}-amd64 + docker manifest annotate --arch arm64 --os linux ghcr.io/${{ env.REPO_OWNER }}/atuin:${{ steps.shortsha.outputs.short_sha }} ghcr.io/${{ env.REPO_OWNER }}/atuin:${{ steps.shortsha.outputs.short_sha }}-aarch64 + docker manifest inspect ghcr.io/${{ env.REPO_OWNER }}/atuin:${{ steps.shortsha.outputs.short_sha }} + + docker manifest push ghcr.io/${{ env.REPO_OWNER }}/atuin:${{ steps.shortsha.outputs.short_sha }} |
