aboutsummaryrefslogtreecommitdiffstats
path: root/.github/workflows/docker.yaml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/docker.yaml')
-rw-r--r--.github/workflows/docker.yaml133
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 }}