diff --git a/.github/workflows/dev-release-slim-cli.yml b/.github/workflows/dev-release-slim-cli.yml deleted file mode 100644 index ae542911e..000000000 --- a/.github/workflows/dev-release-slim-cli.yml +++ /dev/null @@ -1,173 +0,0 @@ -name: Create Slim CLI Dev Releases - -on: - push: - branches: - - main - - 'preview-**' - -jobs: - package: - runs-on: ${{ matrix.runner }} - env: - TERM: xterm - strategy: - fail-fast: false - matrix: - runner: - - macos-14 - - ubuntu-24.04 - node-version: - - '20' - os: - - linux - - macos - - win - - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Install node ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - cache: npm - - name: Install dependencies - run: npm clean-install --prefer-offline --frozen-lockfile --production - - name: Switch to edge channel - run: | - sed -i.bak "s/^channel: stable/channel: edge/" config.yml - rm -rf config.yml.bak - - name: Prepare Release - uses: lando/prepare-release-action@v3 - with: - version: dev - sync: false - - name: Ensure version - run: node ./bin/lando version - - name: Package into node binary - uses: lando/pkg-action@v5 - with: - entrypoint: bin/lando - node-version: ${{ matrix.node-version }} - os: ${{ matrix.os }} - options: --options dns-result-order=ipv4first - pkg: "@yao-pkg/pkg@5.16.1" - - name: Ensure slimcore - if: matrix.os == 'linux' && runner.os == 'Linux' && runner.arch == 'X64' - run: ./dist/@lando/core config --path fatcore | grep false - - name: Ensure ipv4first - if: matrix.os == 'linux' && runner.os == 'Linux' && runner.arch == 'X64' - run: ./dist/@lando/core config --path cli.args | grep dns-result-order=ipv4first - - name: Ensure edge channel - if: matrix.os == 'linux' && runner.os == 'Linux' && runner.arch == 'X64' - run: ./dist/@lando/core config --path channel | grep edge - - sign-n-deploy: - runs-on: ${{ matrix.os }} - needs: - - package - env: - TERM: xterm - strategy: - fail-fast: false - matrix: - include: - - os: windows-2022 - key: core-node20-win-x64-${{ github.sha }} - file: lando/core.exe - certificate-data: KEYLOCKER_CLIENT_CERT - certificate-password: KEYLOCKER_CLIENT_CERT_PASSWORD - result: lando-win-x64-${{ github.ref_name }}-slim.exe - - os: windows-2022 - key: core-node20-win-arm64-${{ github.sha }} - file: lando/core.exe - certificate-data: KEYLOCKER_CLIENT_CERT - certificate-password: KEYLOCKER_CLIENT_CERT_PASSWORD - result: lando-win-arm64-${{ github.ref_name }}-slim.exe - - os: macos-14 - key: core-node20-macos-x64-${{ github.sha }} - file: lando/core - certificate-data: APPLE_CERT_DATA - certificate-password: APPLE_CERT_PASSWORD - apple-product-id: dev.lando.cli - apple-team-id: FY8GAUX282 - apple-notary-user: APPLE_NOTARY_USER - apple-notary-password: APPLE_NOTARY_PASSWORD - options: --options runtime --entitlements entitlements.xml - result: lando-macos-x64-${{ github.ref_name }}-slim - - os: macos-14 - key: core-node20-macos-arm64-${{ github.sha }} - file: lando/core - certificate-data: APPLE_CERT_DATA - certificate-password: APPLE_CERT_PASSWORD - apple-product-id: dev.lando.cli - apple-team-id: FY8GAUX282 - apple-notary-user: APPLE_NOTARY_USER - apple-notary-password: APPLE_NOTARY_PASSWORD - options: --options runtime --entitlements entitlements.xml - result: lando-macos-arm64-${{ github.ref_name }}-slim - - os: ubuntu-24.04 - key: core-node20-linux-x64-${{ github.sha }} - file: lando/core - certificate-data: KEYLOCKER_CLIENT_CERT - certificate-password: KEYLOCKER_CLIENT_CERT_PASSWORD - result: lando-linux-x64-${{ github.ref_name }}-slim - - os: ubuntu-24.04 - key: core-node20-linux-arm64-${{ github.sha }} - file: lando/core - certificate-data: KEYLOCKER_CLIENT_CERT - certificate-password: KEYLOCKER_CLIENT_CERT_PASSWORD - result: lando-linux-arm64-${{ github.ref_name }}-slim - steps: - - name: Checkout code - uses: actions/checkout@v4 - - name: Download ${{ matrix.key }} - uses: actions/download-artifact@v3 - with: - name: ${{ matrix.key }} - path: lando - - name: Sign and Notarize - uses: lando/code-sign-action@v2 - id: code-sign-action - with: - file: ${{ matrix.file }} - certificate-data: ${{ secrets[matrix.certificate-data] }} - certificate-password: ${{ secrets[matrix.certificate-password] }} - apple-notary-user: ${{ secrets[matrix.apple-notary-user] }} - apple-notary-password: ${{ secrets[matrix.apple-notary-password] }} - apple-product-id: ${{ matrix.apple-product-id }} - apple-team-id: ${{ matrix.apple-team-id }} - keylocker-host: https://clientauth.one.digicert.com - keylocker-api-key: ${{ secrets.KEYLOCKER_API_KEY }} - keylocker-cert-sha1-hash: ${{ secrets.KEYLOCKER_CERT_SHA1_HASH }} - keylocker-keypair-alias: ${{ secrets.KEYLOCKER_KEYPAIR_ALIAS }} - options: ${{ matrix.options }} - - name: Rename as needed - shell: bash - run: | - # create releases - mkdir -p releases - cp ${{ steps.code-sign-action.outputs.file }} releases/${{ matrix.result }} - cp releases/${{ matrix.result }} "releases/$(echo ${{ matrix.result }} | sed 's/${{ github.ref_name }}/latest/;')" - cp releases/${{ matrix.result }} "releases/$(echo ${{ matrix.result }} | sed 's/${{ github.ref_name }}/dev/;')" - chmod +x releases/* - - # create checksums - ./scripts/generate-checksums.sh --directory releases --output checksums-dev-slim.txt - # cat the data - cat checksums-dev-slim.txt - # move the checksums so it is uploaded as well - cp checksums-dev-slim.txt releases/checksums-dev-slim.txt - - name: Configure S3 Credentials - uses: aws-actions/configure-aws-credentials@v2 - with: - aws-access-key-id: ${{ secrets.S3_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.S3_SECRET_ACCESS_KEY }} - aws-region: us-east-1 - - name: Upload dev releases to S3 - shell: bash - run: aws s3 sync releases s3://files.lando.dev/core - diff --git a/.github/workflows/dev-release-cli.yml b/.github/workflows/dev-release.yml similarity index 63% rename from .github/workflows/dev-release-cli.yml rename to .github/workflows/dev-release.yml index 0f87cb5a2..36b330340 100644 --- a/.github/workflows/dev-release-cli.yml +++ b/.github/workflows/dev-release.yml @@ -25,6 +25,7 @@ jobs: - ubuntu-24.04 type: - '-slim' + - '' steps: - name: Checkout code @@ -58,6 +59,7 @@ jobs: os: ${{ matrix.os }} options: --options dns-result-order=ipv4first pkg: "@yao-pkg/pkg@5.16.1" + upload-key: "lando-${{ matrix.os }}-${{ matrix.runner == 'macos-14' && 'arm64' || 'x64' }}${{ matrix.type }}-${{ github.sha }}" - name: Ensure version if: (matrix.os == 'linux' && runner.os == 'Linux') || (matrix.os == 'macos' && runner.os == 'macOS') run: ./dist/@lando/core version --all @@ -68,11 +70,11 @@ jobs: if: (matrix.os == 'linux' && runner.os == 'Linux') || (matrix.os == 'macos' && runner.os == 'macOS') run: ./dist/@lando/core config --path channel | grep edge - name: Ensure slimcore - if: (matrix.os == 'linux' && runner.os == 'Linux') || (matrix.os == 'macos' && runner.os == 'macOS') && matrix.type == '-slim' + if: ((matrix.os == 'linux' && runner.os == 'Linux') || (matrix.os == 'macos' && runner.os == 'macOS')) && matrix.type == '-slim' run: ./dist/@lando/core config --path fatcore | grep false - name: Ensure fatcore - if: (matrix.os == 'linux' && runner.os == 'Linux') || (matrix.os == 'macos' && runner.os == 'macOS') && matrix.type != '-slim' - run: + if: ((matrix.os == 'linux' && runner.os == 'Linux') || (matrix.os == 'macos' && runner.os == 'macOS')) && matrix.type == '' + run: | ./dist/@lando/core config --path fatcore | grep true ./dist/@lando/core config | grep -q "node_modules/@lando/wordpress" @@ -87,19 +89,32 @@ jobs: matrix: include: - os: windows-2022 - key: core-node20-win-x64-${{ github.sha }} + key: lando-win-x64-${{ github.sha }} file: lando/core.exe certificate-data: KEYLOCKER_CLIENT_CERT certificate-password: KEYLOCKER_CLIENT_CERT_PASSWORD result: lando-win-x64-${{ github.ref_name }}.exe - os: windows-2022 - key: core-node20-win-arm64-${{ github.sha }} + key: lando-win-arm64-${{ github.sha }} file: lando/core.exe certificate-data: KEYLOCKER_CLIENT_CERT certificate-password: KEYLOCKER_CLIENT_CERT_PASSWORD result: lando-win-arm64-${{ github.ref_name }}.exe + - os: windows-2022 + key: lando-win-x64-slim-${{ github.sha }} + file: lando/core.exe + certificate-data: KEYLOCKER_CLIENT_CERT + certificate-password: KEYLOCKER_CLIENT_CERT_PASSWORD + result: lando-win-x64-${{ github.ref_name }}-slim.exe + - os: windows-2022 + key: lando-win-arm64-slim-${{ github.sha }} + file: lando/core.exe + certificate-data: KEYLOCKER_CLIENT_CERT + certificate-password: KEYLOCKER_CLIENT_CERT_PASSWORD + result: lando-win-arm64-${{ github.ref_name }}-slim.exe + - os: macos-14 - key: core-node20-macos-x64-${{ github.sha }} + key: lando-macos-x64-${{ github.sha }} file: lando/core certificate-data: APPLE_CERT_DATA certificate-password: APPLE_CERT_PASSWORD @@ -110,7 +125,7 @@ jobs: options: --options runtime --entitlements entitlements.xml result: lando-macos-x64-${{ github.ref_name }} - os: macos-14 - key: core-node20-macos-arm64-${{ github.sha }} + key: lando-macos-arm64-${{ github.sha }} file: lando/core certificate-data: APPLE_CERT_DATA certificate-password: APPLE_CERT_PASSWORD @@ -120,18 +135,54 @@ jobs: apple-notary-password: APPLE_NOTARY_PASSWORD options: --options runtime --entitlements entitlements.xml result: lando-macos-arm64-${{ github.ref_name }} + - os: macos-14 + key: lando-macos-x64-slim-${{ github.sha }} + file: lando/core + certificate-data: APPLE_CERT_DATA + certificate-password: APPLE_CERT_PASSWORD + apple-product-id: dev.lando.cli + apple-team-id: FY8GAUX282 + apple-notary-user: APPLE_NOTARY_USER + apple-notary-password: APPLE_NOTARY_PASSWORD + options: --options runtime --entitlements entitlements.xml + result: lando-macos-x64-${{ github.ref_name }}-slim + - os: macos-14 + key: lando-macos-arm64-slim-${{ github.sha }} + file: lando/core + certificate-data: APPLE_CERT_DATA + certificate-password: APPLE_CERT_PASSWORD + apple-product-id: dev.lando.cli + apple-team-id: FY8GAUX282 + apple-notary-user: APPLE_NOTARY_USER + apple-notary-password: APPLE_NOTARY_PASSWORD + options: --options runtime --entitlements entitlements.xml + result: lando-macos-arm64-${{ github.ref_name }}-slim + - os: ubuntu-24.04 - key: core-node20-linux-x64-${{ github.sha }} + key: lando-linux-x64-${{ github.sha }} file: lando/core certificate-data: KEYLOCKER_CLIENT_CERT certificate-password: KEYLOCKER_CLIENT_CERT_PASSWORD result: lando-linux-x64-${{ github.ref_name }} - os: ubuntu-24.04 - key: core-node20-linux-arm64-${{ github.sha }} + key: lando-linux-arm64-${{ github.sha }} file: lando/core certificate-data: KEYLOCKER_CLIENT_CERT certificate-password: KEYLOCKER_CLIENT_CERT_PASSWORD result: lando-linux-arm64-${{ github.ref_name }} + - os: ubuntu-24.04 + key: lando-linux-x64-slim-${{ github.sha }} + file: lando/core + certificate-data: KEYLOCKER_CLIENT_CERT + certificate-password: KEYLOCKER_CLIENT_CERT_PASSWORD + result: lando-linux-x64-${{ github.ref_name }}-slim + - os: ubuntu-24.04 + key: lando-linux-arm64-slim-${{ github.sha }} + file: lando/core + certificate-data: KEYLOCKER_CLIENT_CERT + certificate-password: KEYLOCKER_CLIENT_CERT_PASSWORD + result: lando-linux-arm64-${{ github.ref_name }}-slim + steps: - name: Checkout code uses: actions/checkout@v4 @@ -166,13 +217,6 @@ jobs: cp releases/${{ matrix.result }} "releases/$(echo ${{ matrix.result }} | sed 's/${{ github.ref_name }}/dev/;')" chmod +x releases/* - # create checksums - ./scripts/generate-checksums.sh --directory releases --output checksums-dev.txt --depth 2 - # cat the data - cat checksums-dev.txt - # move the checksums so it is uploaded as well - cp checksums-dev.txt releases/checksums-dev.txt - - name: Configure S3 Credentials uses: aws-actions/configure-aws-credentials@v2 with: @@ -183,3 +227,29 @@ jobs: shell: bash run: aws s3 sync releases s3://files.lando.dev/core + - name: Upload to artifacts + uses: actions/upload-artifact@v4 + with: + retention-days: 1 + name: ${{ matrix.key }} + overwrite: true + path: releases/* + + verify: + runs-on: ubuntu-24.04 + needs: + - sign-n-deploy + env: + TERM: xterm + steps: + - name: Download for checksumming + uses: actions/download-artifact@v4 + with: + path: artifacts + - name: Combine artifacts + run: | + mkdir -p dist + find "artifacts" -mindepth 2 -maxdepth 2 -type f -exec mv {} "dist" \; + ls -lsa dist + cd dist + ./scripts/generate-checksums.sh --show --debug