Просмотр исходного кода

upgrade earthly to 0.6.13, build and push +devcontainer in CI

Andy Li 3 лет назад
Родитель
Сommit
8380defd07
4 измененных файлов с 86 добавлено и 18 удалено
  1. 1 1
      .devcontainer/docker-compose.yml
  2. 32 7
      .github/workflows/main.yml
  3. 21 3
      Earthfile
  4. 32 7
      extra/github-actions/workflows/main.yml

+ 1 - 1
.devcontainer/docker-compose.yml

@@ -14,7 +14,7 @@ services:
     entrypoint: /usr/local/share/docker-init.sh
     command: sleep infinity
   earthly:
-    image: earthly/buildkitd:v0.6.5
+    image: earthly/buildkitd:v0.6.13
     privileged: true
     environment:
       - BUILDKIT_TCP_TRANSPORT_ENABLED=true

+ 32 - 7
.github/workflows/main.yml

@@ -199,8 +199,9 @@ jobs:
 
   linux-amd64:
     runs-on: ubuntu-18.04
+    permissions:
+      packages: write
     env:
-      EARTHLY_PLATFORMS: linux/amd64
       FORCE_COLOR: 1
     steps:
       - name: Login to GitHub Container Registry
@@ -211,7 +212,7 @@ jobs:
           password: ${{ secrets.GITHUB_TOKEN }}
 
       - name: Install Earthly
-        run: sudo /bin/sh -c 'wget https://github.com/earthly/earthly/releases/download/v0.6.5/earthly-linux-amd64 -O /usr/local/bin/earthly && chmod +x /usr/local/bin/earthly && /usr/local/bin/earthly bootstrap --with-autocomplete'
+        run: sudo /bin/sh -c 'wget https://github.com/earthly/earthly/releases/download/v0.6.13/earthly-linux-amd64 -O /usr/local/bin/earthly && chmod +x /usr/local/bin/earthly && /usr/local/bin/earthly bootstrap --with-autocomplete'
 
       - uses: actions/checkout@main
         with:
@@ -221,10 +222,21 @@ jobs:
         if: ${{ !startsWith(github.ref, 'refs/tags/') }}
         run: echo "ADD_REVISION=1" >> $GITHUB_ENV
 
+      - name: Set CONTAINER_REG
+        run: echo "CONTAINER_REG=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
+
+      - name: Build devcontainer
+        run: earthly +devcontainer --ADD_REVISION="$ADD_REVISION" --IMAGE_NAME="ghcr.io/${CONTAINER_REG}_devcontainer" --IMAGE_TAG="${{github.ref_name}}-amd64" --IMAGE_CACHE="ghcr.io/haxefoundation/haxe_devcontainer:development-amd64"
+        env:
+          EARTHLY_PUSH: "${{ github.event_name == 'push' }}"
+          EARTHLY_USE_INLINE_CACHE: true
+          EARTHLY_SAVE_INLINE_CACHE: true
+
       - name: Build
-        run: earthly --remote-cache=ghcr.io/$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')_cache:build-${{github.ref_name}}-amd64 +build --ADD_REVISION=$ADD_REVISION
+        run: earthly +build --ADD_REVISION="$ADD_REVISION"
         env:
           EARTHLY_PUSH: "${{ github.event_name == 'push' }}"
+          EARTHLY_REMOTE_CACHE: "ghcr.io/${{env.CONTAINER_REG}}_cache:build-${{github.ref_name}}-amd64"
 
       - name: Build xmldoc
         run: earthly +xmldoc --COMMIT="${{ github.sha }}" --BRANCH="${{ github.ref_name }}"
@@ -242,14 +254,16 @@ jobs:
           path: out/linux/amd64
 
       - name: Test
-        run: earthly --remote-cache=ghcr.io/$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')_cache:test-${{github.ref_name}}-amd64 +test-all --GITHUB_ACTIONS="$GITHUB_ACTIONS"
+        run: earthly +test-all --GITHUB_ACTIONS="$GITHUB_ACTIONS"
         env:
           EARTHLY_PUSH: "${{ github.event_name == 'push' }}"
+          EARTHLY_REMOTE_CACHE: "ghcr.io/${{env.CONTAINER_REG}}_cache:test-${{github.ref_name}}-amd64"
 
   linux-arm64:
     runs-on: ubuntu-18.04
+    permissions:
+      packages: write
     env:
-      EARTHLY_PLATFORMS: linux/arm64
       FORCE_COLOR: 1
     steps:
       - name: Login to GitHub Container Registry
@@ -260,7 +274,7 @@ jobs:
           password: ${{ secrets.GITHUB_TOKEN }}
 
       - name: Install Earthly
-        run: sudo /bin/sh -c 'wget https://github.com/earthly/earthly/releases/download/v0.6.5/earthly-linux-amd64 -O /usr/local/bin/earthly && chmod +x /usr/local/bin/earthly && /usr/local/bin/earthly bootstrap --with-autocomplete'
+        run: sudo /bin/sh -c 'wget https://github.com/earthly/earthly/releases/download/v0.6.13/earthly-linux-amd64 -O /usr/local/bin/earthly && chmod +x /usr/local/bin/earthly && /usr/local/bin/earthly bootstrap --with-autocomplete'
 
       - name: Set up QEMU
         id: qemu
@@ -277,10 +291,21 @@ jobs:
         if: ${{ !startsWith(github.ref, 'refs/tags/') }}
         run: echo "ADD_REVISION=1" >> $GITHUB_ENV
 
+      - name: Set CONTAINER_REG
+        run: echo "CONTAINER_REG=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
+
+      - name: Build devcontainer
+        run: earthly --platform=linux/arm64 +devcontainer --ADD_REVISION="$ADD_REVISION" --IMAGE_NAME="ghcr.io/${CONTAINER_REG}_devcontainer" --IMAGE_TAG="${{github.ref_name}}-arm64" --IMAGE_CACHE="ghcr.io/haxefoundation/haxe_devcontainer:development-arm64"
+        env:
+          EARTHLY_PUSH: "${{ github.event_name == 'push' }}"
+          EARTHLY_USE_INLINE_CACHE: true
+          EARTHLY_SAVE_INLINE_CACHE: true
+
       - name: Build
-        run: earthly --remote-cache=ghcr.io/$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')_cache:build-${{github.ref_name}}-arm64 +build --ADD_REVISION=$ADD_REVISION
+        run: earthly --platform=linux/arm64 +build --ADD_REVISION="$ADD_REVISION"
         env:
           EARTHLY_PUSH: "${{ github.event_name == 'push' }}"
+          EARTHLY_REMOTE_CACHE: "ghcr.io/${{env.CONTAINER_REG}}_cache:build-${{github.ref_name}}-arm64"
 
       - name: Upload artifact
         uses: actions/[email protected]

+ 21 - 3
Earthfile

@@ -99,19 +99,33 @@ devcontainer:
 
     USER root
 
-    ARG GIT_SHA
-    ENV GIT_SHA="$GIT_SHA"
     ARG IMAGE_NAME="$DEVCONTAINER_IMAGE_NAME_DEFAULT"
     ARG IMAGE_TAG="development"
     ARG IMAGE_CACHE="$IMAGE_NAME:$IMAGE_TAG"
     SAVE IMAGE --cache-from="$IMAGE_CACHE" --push "$IMAGE_NAME:$IMAGE_TAG"
 
+devcontainer-multiarch-amd64:
+    ARG IMAGE_NAME="$DEVCONTAINER_IMAGE_NAME_DEFAULT"
+    ARG IMAGE_TAG="development"
+    FROM --platform=linux/amd64 +devcontainer --IMAGE_NAME="$IMAGE_NAME" --IMAGE_TAG="$IMAGE_TAG-amd64"
+    SAVE IMAGE --push "$IMAGE_NAME:$IMAGE_TAG"
+
+devcontainer-multiarch-arm64:
+    ARG IMAGE_NAME="$DEVCONTAINER_IMAGE_NAME_DEFAULT"
+    ARG IMAGE_TAG="development"
+    FROM --platform=linux/arm64 +devcontainer --IMAGE_NAME="$IMAGE_NAME" --IMAGE_TAG="$IMAGE_TAG-arm64"
+    SAVE IMAGE --push "$IMAGE_NAME:$IMAGE_TAG"
+
+devcontainer-multiarch:
+    BUILD +devcontainer-multiarch-amd64
+    BUILD +devcontainer-multiarch-arm64
+
 # Usage:
 # COPY +earthly/earthly /usr/local/bin/
 # RUN earthly bootstrap --no-buildkit --with-autocomplete
 earthly:
     ARG --required TARGETARCH
-    RUN curl -fsSL https://github.com/earthly/earthly/releases/download/v0.6.5/earthly-linux-${TARGETARCH} -o /usr/local/bin/earthly \
+    RUN curl -fsSL https://github.com/earthly/earthly/releases/download/v0.6.13/earthly-linux-${TARGETARCH} -o /usr/local/bin/earthly \
         && chmod +x /usr/local/bin/earthly
     SAVE ARTIFACT /usr/local/bin/earthly
 
@@ -394,3 +408,7 @@ github-actions:
     WORKDIR extra/github-actions
     RUN haxe build.hxml
     SAVE ARTIFACT --keep-ts "$WORKDIR"/.github/workflows AS LOCAL .github/workflows
+
+ghcr-login:
+    LOCALLY
+    RUN echo "$GITHUB_CR_PAT" | docker login ghcr.io -u "$GITHUB_USERNAME" --password-stdin

+ 32 - 7
extra/github-actions/workflows/main.yml

@@ -54,8 +54,9 @@ jobs:
 
   linux-amd64:
     runs-on: ubuntu-18.04
+    permissions:
+      packages: write
     env:
-      EARTHLY_PLATFORMS: linux/amd64
       FORCE_COLOR: 1
     steps:
       - name: Login to GitHub Container Registry
@@ -66,7 +67,7 @@ jobs:
           password: ${{ secrets.GITHUB_TOKEN }}
 
       - name: Install Earthly
-        run: sudo /bin/sh -c 'wget https://github.com/earthly/earthly/releases/download/v0.6.5/earthly-linux-amd64 -O /usr/local/bin/earthly && chmod +x /usr/local/bin/earthly && /usr/local/bin/earthly bootstrap --with-autocomplete'
+        run: sudo /bin/sh -c 'wget https://github.com/earthly/earthly/releases/download/v0.6.13/earthly-linux-amd64 -O /usr/local/bin/earthly && chmod +x /usr/local/bin/earthly && /usr/local/bin/earthly bootstrap --with-autocomplete'
 
       - uses: actions/checkout@main
         with:
@@ -76,10 +77,21 @@ jobs:
         if: ${{ !startsWith(github.ref, 'refs/tags/') }}
         run: echo "ADD_REVISION=1" >> $GITHUB_ENV
 
+      - name: Set CONTAINER_REG
+        run: echo "CONTAINER_REG=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
+
+      - name: Build devcontainer
+        run: earthly +devcontainer --ADD_REVISION="$ADD_REVISION" --IMAGE_NAME="ghcr.io/${CONTAINER_REG}_devcontainer" --IMAGE_TAG="${{github.ref_name}}-amd64" --IMAGE_CACHE="ghcr.io/haxefoundation/haxe_devcontainer:development-amd64"
+        env:
+          EARTHLY_PUSH: "${{ github.event_name == 'push' }}"
+          EARTHLY_USE_INLINE_CACHE: true
+          EARTHLY_SAVE_INLINE_CACHE: true
+
       - name: Build
-        run: earthly --remote-cache=ghcr.io/$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')_cache:build-${{github.ref_name}}-amd64 +build --ADD_REVISION=$ADD_REVISION
+        run: earthly +build --ADD_REVISION="$ADD_REVISION"
         env:
           EARTHLY_PUSH: "${{ github.event_name == 'push' }}"
+          EARTHLY_REMOTE_CACHE: "ghcr.io/${{env.CONTAINER_REG}}_cache:build-${{github.ref_name}}-amd64"
 
       - name: Build xmldoc
         run: earthly +xmldoc --COMMIT="${{ github.sha }}" --BRANCH="${{ github.ref_name }}"
@@ -97,14 +109,16 @@ jobs:
           path: out/linux/amd64
 
       - name: Test
-        run: earthly --remote-cache=ghcr.io/$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')_cache:test-${{github.ref_name}}-amd64 +test-all --GITHUB_ACTIONS="$GITHUB_ACTIONS"
+        run: earthly +test-all --GITHUB_ACTIONS="$GITHUB_ACTIONS"
         env:
           EARTHLY_PUSH: "${{ github.event_name == 'push' }}"
+          EARTHLY_REMOTE_CACHE: "ghcr.io/${{env.CONTAINER_REG}}_cache:test-${{github.ref_name}}-amd64"
 
   linux-arm64:
     runs-on: ubuntu-18.04
+    permissions:
+      packages: write
     env:
-      EARTHLY_PLATFORMS: linux/arm64
       FORCE_COLOR: 1
     steps:
       - name: Login to GitHub Container Registry
@@ -115,7 +129,7 @@ jobs:
           password: ${{ secrets.GITHUB_TOKEN }}
 
       - name: Install Earthly
-        run: sudo /bin/sh -c 'wget https://github.com/earthly/earthly/releases/download/v0.6.5/earthly-linux-amd64 -O /usr/local/bin/earthly && chmod +x /usr/local/bin/earthly && /usr/local/bin/earthly bootstrap --with-autocomplete'
+        run: sudo /bin/sh -c 'wget https://github.com/earthly/earthly/releases/download/v0.6.13/earthly-linux-amd64 -O /usr/local/bin/earthly && chmod +x /usr/local/bin/earthly && /usr/local/bin/earthly bootstrap --with-autocomplete'
 
       - name: Set up QEMU
         id: qemu
@@ -132,10 +146,21 @@ jobs:
         if: ${{ !startsWith(github.ref, 'refs/tags/') }}
         run: echo "ADD_REVISION=1" >> $GITHUB_ENV
 
+      - name: Set CONTAINER_REG
+        run: echo "CONTAINER_REG=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
+
+      - name: Build devcontainer
+        run: earthly --platform=linux/arm64 +devcontainer --ADD_REVISION="$ADD_REVISION" --IMAGE_NAME="ghcr.io/${CONTAINER_REG}_devcontainer" --IMAGE_TAG="${{github.ref_name}}-arm64" --IMAGE_CACHE="ghcr.io/haxefoundation/haxe_devcontainer:development-arm64"
+        env:
+          EARTHLY_PUSH: "${{ github.event_name == 'push' }}"
+          EARTHLY_USE_INLINE_CACHE: true
+          EARTHLY_SAVE_INLINE_CACHE: true
+
       - name: Build
-        run: earthly --remote-cache=ghcr.io/$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')_cache:build-${{github.ref_name}}-arm64 +build --ADD_REVISION=$ADD_REVISION
+        run: earthly --platform=linux/arm64 +build --ADD_REVISION="$ADD_REVISION"
         env:
           EARTHLY_PUSH: "${{ github.event_name == 'push' }}"
+          EARTHLY_REMOTE_CACHE: "ghcr.io/${{env.CONTAINER_REG}}_cache:build-${{github.ref_name}}-arm64"
 
       - name: Upload artifact
         uses: actions/[email protected]