Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
187 changes: 6 additions & 181 deletions .github/workflows/dotnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,192 +11,17 @@ on:
- "features/dotnet/config.json"
workflow_dispatch:

permissions:
contents: read
packages: write

concurrency:
group: "dotnet-${{ github.ref }}"
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
plan:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.plan.outputs.matrix }}
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v7

- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ github.token }}

- name: Plan the publishes
id: plan
uses: devcontainers/ci@v0.3
with:
cacheFrom: ghcr.io/${{ github.repository }}/devcontainer
push: never
runCmd: pnpm tsx scripts/tasks/features/dotnet/planPublish.ts --channel "$CHANNEL"
env: |
CHANNEL=${{ github.head_ref || github.ref_name }}
GH_TOKEN=${{ github.token }}

install-binaries:
needs: plan
if: needs.plan.outputs.matrix != ''
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- rid: linux-x64
runner: ubuntu-latest
arm64: false
- rid: linux-arm64
runner: ubuntu-24.04-arm
arm64: true
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v7

- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ github.token }}

- name: Pack the Feature binary
uses: devcontainers/ci@v0.3
with:
imageName: ${{ matrix.arm64 && format('ghcr.io/{0}/devcontainer', github.repository) || '' }}
cacheFrom: ghcr.io/${{ github.repository }}/devcontainer
push: ${{ matrix.arm64 && 'filter' || 'never' }}
refFilterForPush: ${{ matrix.arm64 && 'refs/heads/main' || '' }}
useNativeRunner: ${{ matrix.arm64 }}
platform: ${{ matrix.arm64 && 'linux/arm64' || '' }}
runCmd: pnpm tsx scripts/tasks/features/dotnet/packFeature.ts --rid "$RID" --out .ci/feature
env: |
RID=${{ matrix.rid }}

- name: Upload the Feature archive
uses: actions/upload-artifact@v7
with:
name: feature-${{ matrix.rid }}
path: .ci/feature/${{ matrix.rid }}.tar

image:
needs:
- plan
- install-binaries
if: needs.plan.outputs.matrix != ''
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.plan.outputs.matrix) }}
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v7

- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ github.token }}

- name: Download the x64 Feature archive
uses: actions/download-artifact@v7
with:
name: feature-linux-x64
path: .ci/feature

- name: Download the arm64 Feature archive
uses: actions/download-artifact@v7
with:
name: feature-linux-arm64
path: .ci/feature

- name: Publish the image
uses: devcontainers/ci@v0.3
with:
cacheFrom: ghcr.io/${{ github.repository }}/devcontainer
push: never
runCmd: pnpm tsx scripts/tasks/features/dotnet/publishImage.ts --component ${{ matrix.component }} --version ${{ matrix.key }} --channel "$CHANNEL" --install-dir .ci/feature
env: |
CHANNEL=${{ github.head_ref || github.ref_name }}
GH_TOKEN=${{ github.token }}

release-tags:
needs:
- plan
- image
- verify
if: ${{ !cancelled() && needs.plan.result == 'success' && (needs.image.result == 'success' || needs.image.result == 'skipped') && needs.verify.result == 'success' }}
verify:
uses: ./.github/workflows/verify.yml
permissions:
contents: write
packages: write
runs-on: ubuntu-latest
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v7

- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ github.token }}

- name: Apply the release tags
uses: devcontainers/ci@v0.3
with:
cacheFrom: ghcr.io/${{ github.repository }}/devcontainer
push: never
runCmd: pnpm tsx scripts/tasks/features/dotnet/releaseTags.ts --channel "$CHANNEL" ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && '--git-tags' || '' }}
env: |
CHANNEL=${{ github.head_ref || github.ref_name }}
GH_TOKEN=${{ github.token }}

verify:
needs:
- plan
- image
if: ${{ !cancelled() && needs.plan.result == 'success' && (needs.image.result == 'success' || needs.image.result == 'skipped') }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
runner:
- ubuntu-latest
- ubuntu-24.04-arm
scenario:
- sdk
- runtime
- aspnet
- multi
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v7

- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ github.token }}

- name: Verify the images
uses: devcontainers/ci@v0.3
with:
cacheFrom: ghcr.io/${{ github.repository }}/devcontainer
push: never
runCmd: pnpm verify dotnet --scenario ${{ matrix.scenario }} --images pull --channel "$CHANNEL"
env: |
CHANNEL=${{ github.head_ref || github.ref_name }}
GH_TOKEN=${{ github.token }}
with:
feature: dotnet
binaries: true
scenarios: '["sdk", "runtime", "aspnet", "multi"]'
16 changes: 14 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,15 @@ permissions:

jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- label: ubuntu-latest
arm64: false
- label: ubuntu-24.04-arm
arm64: true
runs-on: ${{ matrix.label }}
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v7
Expand All @@ -29,18 +37,22 @@ jobs:
uses: devcontainers/ci@v0.3
with:
imageName: ghcr.io/${{ github.repository }}/devcontainer
cacheFrom: ghcr.io/${{ github.repository }}/devcontainer
cacheFrom: ghcr.io/${{ github.repository }}/devcontainer${{ matrix.arm64 && ':latest-linux-arm64' || '' }}
push: filter
refFilterForPush: refs/heads/main
platform: ${{ matrix.arm64 && 'linux/arm64' || '' }}
useNativeRunner: ${{ matrix.arm64 }}

- name: Lint
if: ${{ !matrix.arm64 }}
uses: devcontainers/ci@v0.3
with:
cacheFrom: ghcr.io/${{ github.repository }}/devcontainer
push: never
runCmd: pnpm lint

- name: Test
if: ${{ !matrix.arm64 }}
uses: devcontainers/ci@v0.3
with:
cacheFrom: ghcr.io/${{ github.repository }}/devcontainer
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/renovate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,6 @@ jobs:
with:
cacheFrom: ghcr.io/${{ github.repository }}/devcontainer
push: never
runCmd: pnpm tsx scripts/tasks/features/${{ matrix.feature }}/renovate.ts
runCmd: pnpm tsx scripts/tasks/features/pipeline.ts renovate --feature ${{ matrix.feature }}
env: |
GH_TOKEN=${{ secrets.RENOVATE_TOKEN }}
124 changes: 6 additions & 118 deletions .github/workflows/ripgrep.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,129 +11,17 @@ on:
- "features/ripgrep/config.json"
workflow_dispatch:

permissions:
contents: read
packages: write

concurrency:
group: "ripgrep-${{ github.ref }}"
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
plan:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.plan.outputs.matrix }}
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v7

- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ github.token }}

- name: Plan the publishes
id: plan
uses: devcontainers/ci@v0.3
with:
cacheFrom: ghcr.io/${{ github.repository }}/devcontainer
push: never
runCmd: pnpm tsx scripts/tasks/features/ripgrep/planPublish.ts --channel "$CHANNEL"
env: |
CHANNEL=${{ github.head_ref || github.ref_name }}
GH_TOKEN=${{ github.token }}

image:
needs: plan
if: needs.plan.outputs.matrix != ''
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.plan.outputs.matrix) }}
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v7

- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ github.token }}

- name: Publish the image
uses: devcontainers/ci@v0.3
with:
cacheFrom: ghcr.io/${{ github.repository }}/devcontainer
push: never
runCmd: pnpm tsx scripts/tasks/features/ripgrep/publishImage.ts --version ${{ matrix.key }} --channel "$CHANNEL"
env: |
CHANNEL=${{ github.head_ref || github.ref_name }}
GH_TOKEN=${{ github.token }}

release-tags:
needs:
- plan
- image
- verify
if: ${{ !cancelled() && needs.plan.result == 'success' && (needs.image.result == 'success' || needs.image.result == 'skipped') && needs.verify.result == 'success' }}
verify:
uses: ./.github/workflows/verify.yml
permissions:
contents: write
packages: write
runs-on: ubuntu-latest
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v7

- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ github.token }}

- name: Apply the release tags
uses: devcontainers/ci@v0.3
with:
cacheFrom: ghcr.io/${{ github.repository }}/devcontainer
push: never
runCmd: pnpm tsx scripts/tasks/features/ripgrep/releaseTags.ts --channel "$CHANNEL" ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && '--git-tags' || '' }}
env: |
CHANNEL=${{ github.head_ref || github.ref_name }}
GH_TOKEN=${{ github.token }}

verify:
needs:
- plan
- image
if: ${{ !cancelled() && needs.plan.result == 'success' && (needs.image.result == 'success' || needs.image.result == 'skipped') }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
runner:
- ubuntu-latest
- ubuntu-24.04-arm
steps:
- name: Checkout (GitHub)
uses: actions/checkout@v7

- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ github.token }}

- name: Verify the image
uses: devcontainers/ci@v0.3
with:
cacheFrom: ghcr.io/${{ github.repository }}/devcontainer
push: never
runCmd: pnpm verify ripgrep --images pull --channel "$CHANNEL"
env: |
CHANNEL=${{ github.head_ref || github.ref_name }}
GH_TOKEN=${{ github.token }}
with:
feature: ripgrep
binaries: false
scenarios: '["default"]'
Loading
Loading