diff --git a/.github/NEW_VERSION_ISSUE_TEMPLATE.md b/.github/NEW_VERSION_ISSUE_TEMPLATE.md new file mode 100644 index 00000000..1b2a0f96 --- /dev/null +++ b/.github/NEW_VERSION_ISSUE_TEMPLATE.md @@ -0,0 +1,7 @@ +--- +title: "new release: {{env.PACKAGE}} failed" +assignees: jhheider +labels: bug +--- +A new-version run for the {{env.PACKAGE}} release. Review the failure +here and mitigate. diff --git a/.github/deno.jsonc b/.github/deno.jsonc new file mode 100644 index 00000000..a2fac0a3 --- /dev/null +++ b/.github/deno.jsonc @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "allowJs": false, + "strict": true + }, + "tasks": { + "typecheck": "deno check --unstable scripts/*.ts" + // ^^ doesn't work yet due to lack of glob support + }, + "fmt": { + "files": { + "exclude": [ + "./" + ] + } + }, + "tea": { + "dependencies": { + "deno.land": "^1.30" + } + }, + "importMap": "https://raw.githubusercontent.com/teaxyz/cli/v0.23/import-map.json" +} diff --git a/.github/scripts/index-packages.ts b/.github/scripts/index-packages.ts new file mode 100755 index 00000000..a4f8d395 --- /dev/null +++ b/.github/scripts/index-packages.ts @@ -0,0 +1,33 @@ +#!/usr/bin/env -S tea -E deno run --allow-read --allow-env --allow-net --allow-sys + +import { usePantry } from "hooks" +import * as ARGV from "./utils/args.ts" +import { SQSClient, SendMessageCommand } from "npm:@aws-sdk/client-sqs@^3" +import { panic } from "utils" + +const sqsClient = new SQSClient({ region: Deno.env.get("AWS_REGION") ?? panic("No region specified") }) +const pantry = usePantry() + +const pkgs = await ARGV.toArray(ARGV.pkgs()) +for(const pkg of pkgs) { + try { + const yml = await pantry.getYAML(pkg).parse() + + const project = pkg.project + + const taskMessage = { + project, + github: yml?.versions?.github || "", + // TODO: add other useable data here eventually + } + const res = await sqsClient.send(new SendMessageCommand({ + MessageGroupId: 'project', + MessageDeduplicationId: project, + MessageBody: JSON.stringify(taskMessage), + QueueUrl: Deno.env.get("SQS_GENERATE_PACKAGE_DETAILS_URL")!, + })) + console.log(`SQS task for pkg:${project} messageId:${res.MessageId}`) + } catch (error) { + console.error(error); + } +} diff --git a/.github/scripts/map-projects-to-githubs.ts b/.github/scripts/map-projects-to-githubs.ts new file mode 100755 index 00000000..c756625f --- /dev/null +++ b/.github/scripts/map-projects-to-githubs.ts @@ -0,0 +1,41 @@ +#!/usr/bin/env tea + +/*--- +args: + - deno + - run + - --allow-read + - --allow-env + - --allow-net +---*/ + +import { usePantry } from "hooks" +import { panic } from "utils" +import * as semver from "semver" + +const url = Deno.env.get("WATCHER_URL") ?? panic("missing $WATCHER_URL") +const token = Deno.env.get("TEA_API_TOKEN") ?? panic("missing $TEA_API_TOKEN") + +const pantry = usePantry() + +const rv: Set<{project: string, github: string}> = new Set() + +for await (const {project} of pantry.ls()) { + const yml = await pantry.getYAML({project, constraint: new semver.Range('*') }).parse() + if (yml?.versions?.github) { + const github = yml.versions.github.split('/').slice(0, 2).join('/') + rv.add({ project, github }) + } +} + +const options = { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `bearer ${token}`, + }, + body: JSON.stringify([...rv]), +} + +console.log(rv) +await fetch(url, options) \ No newline at end of file diff --git a/.github/scripts/utils/args.ts b/.github/scripts/utils/args.ts new file mode 100644 index 00000000..938e782d --- /dev/null +++ b/.github/scripts/utils/args.ts @@ -0,0 +1,59 @@ +import { Installation, Package, PackageRequirement } from "types" +import { useCellar } from "hooks" +import { parse } from "utils/pkg.ts" + +/// processes Deno.args unless STDIN is not a TTY and has input +export async function *args(): AsyncGenerator { + if (Deno.isatty(Deno.stdin.rid)) { + for (const arg of Deno.args) { + if (arg[0] != '-') yield arg + } + } else { + let yielded_something = false + const buf = new Uint8Array(10) + const decode = (() => { const d = new TextDecoder(); return d.decode.bind(d) })() + let n: number | null + let txt = '' + const rx = /\s*(.*?)\s+/ + while ((n = await Deno.stdin.read(buf)) !== null) { + txt += decode(buf.subarray(0, n)) + while (true) { + const match = txt.match(rx) + if (!match) break + yield match[1] + txt = txt.slice(match[0].length) + yielded_something = true + } + } + if (txt) { + yield txt + } else if (!yielded_something) { + for (const arg of Deno.args) { + yield arg + } + } + } +} + +export async function *pkgs(): AsyncGenerator { + for await (const arg of args()) { + const match = arg.match(/projects\/(.*)\/package.yml/) + const project = match ? match[1] : arg + yield parse(project) + } +} + +export async function *installs(): AsyncGenerator { + const cellar = useCellar() + for await (const pkg of pkgs()) { + yield await cellar.resolve(pkg) + } +} + +export async function toArray(input: AsyncGenerator) { + const rv: T[] = [] + for await (const i of input) { + rv.push(i) + } + return rv +} diff --git a/.github/workflows/bottle.yml b/.github/workflows/bottle.yml new file mode 100644 index 00000000..9948fc96 --- /dev/null +++ b/.github/workflows/bottle.yml @@ -0,0 +1,166 @@ +name: bottle + +on: + workflow_call: + inputs: + new-version: + type: boolean + required: false + default: false + platform: + required: true + type: string + outputs: + pr: + description: 'The PR number' + value: ${{ jobs.bottle.outputs.pr }} + +jobs: + get-platform: + runs-on: ubuntu-latest + outputs: + os: ${{ steps.platform.outputs.os }} + cache-set: ${{ steps.platform.outputs.cache-set }} + steps: + - uses: teaxyz/brewkit/actions/get-platform@v0 + id: platform + with: + platform: ${{ inputs.platform }} + + bottle: + needs: [get-platform] + runs-on: ${{ fromJson(needs.get-platform.outputs.os) }} + outputs: + srcs: ${{ env.srcs }} + built: ${{ env.built }} + pr: ${{ env.PR }} + steps: + - uses: teaxyz/brewkit/actions/setup-brewkit@v0 + id: tea + + - uses: actions/download-artifact@v3 + if: ${{ inputs.new-version }} + with: + name: ${{ inputs.platform }} + + - uses: teaxyz/brewkit/actions/fetch-pr-artifacts@v0 + if: ${{ !inputs.new-version }} + with: + platform: ${{ inputs.platform }} + token: ${{ github.token }} + AWS_S3_BUCKET: ${{ secrets.AWS_S3_CACHE }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + + - name: clean destination + # Note: needed when changing a directory to a symlink, for example in + # https://github.com/teaxyz/pantry.extra/pull/435 + run: | + tar tzf $GITHUB_WORKSPACE/artifacts.tgz | \ + awk '{ print length, $0 }' | \ + sort -n -s -r | \ + cut -d" " -f2- | \ + xargs rm -rf + working-directory: ${{ steps.tea.outputs.prefix }} + + - run: tar xzvf $GITHUB_WORKSPACE/artifacts.tgz + working-directory: ${{ steps.tea.outputs.prefix }} + + - run: | + for file in built srcs; do + echo "$file=$(cat $file)" >>$GITHUB_ENV + done + working-directory: ${{ steps.tea.outputs.prefix }} + + - run: | + tea +gnupg.org gpg-agent --daemon || true + echo $GPG_PRIVATE_KEY | \ + base64 -d | \ + tea +gnupg.org gpg --import --batch --yes + env: + GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} + + - uses: teaxyz/brewkit/actions/bottle@v0 + id: bottle-xz + with: + built: ${{ env.built }} + compression: xz + gpg-key-id: ${{ secrets.GPG_KEY_ID }} + gpg-key-passphrase: ${{ secrets.GPG_PASSPHRASE }} + + - uses: teaxyz/brewkit/actions/bottle@v0 + id: bottle-gz + with: + built: ${{ env.built }} + compression: gz + gpg-key-id: ${{ secrets.GPG_KEY_ID }} + gpg-key-passphrase: ${{ secrets.GPG_PASSPHRASE }} + + - run: | + echo ${{ steps.bottle-gz.outputs.bottles }} ${{ steps.bottle-xz.outputs.bottles }} >bottles + echo ${{ steps.bottle-gz.outputs.checksums }} ${{ steps.bottle-xz.outputs.checksums }} >checksums + echo ${{ steps.bottle-gz.outputs.signatures }} ${{ steps.bottle-xz.outputs.signatures }} >signatures + + SRCS=$(echo $srcs | tr -d '~') + + tar cf $GITHUB_WORKSPACE/artifacts.tar \ + $SRCS \ + ${{ steps.bottle-gz.outputs.bottles }} \ + ${{ steps.bottle-xz.outputs.bottles }} \ + bottles checksums signatures + working-directory: ${{ steps.tea.outputs.prefix }} + + - name: upload artifacts + uses: actions/upload-artifact@v3 + with: + name: ${{ inputs.platform }}-bottles + path: artifacts.tar + if-no-files-found: error + + upload: + needs: [bottle] + runs-on: ubuntu-latest + steps: + - uses: teaxyz/brewkit/actions/setup-brewkit@v0 + with: + prefix: ${{ github.workspace }} + + - uses: actions/download-artifact@v3 + with: + name: ${{ inputs.platform }}-bottles + + - run: | + tar xvf artifacts.tar + + for file in bottles checksums signatures; do + echo "$file=$(cat $file)" >>$GITHUB_ENV + done + + - uses: teaxyz/brewkit/actions/upload@v0 + id: upload + with: + pkgs: ${{ needs.bottle.outputs.built }} ${{ needs.bottle.outputs.built }} + srcs: ${{ needs.bottle.outputs.srcs }} ${{ needs.bottle.outputs.srcs }} + bottles: ${{ env.bottles }} + checksums: ${{ env.checksums }} + signatures: ${{ env.signatures }} + AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + + - uses: chetan/invalidate-cloudfront-action@v2 + env: + PATHS: ${{ steps.upload.outputs.cf-invalidation-paths }} + DISTRIBUTION: ${{ secrets.AWS_CF_DISTRIBUTION_ID }} + AWS_REGION: us-east-1 + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + + complain: + needs: [upload] + if: inputs.new-version == 'true' && failure() + uses: ./.github/workflows/complain.yml + with: + projects: ${{ inputs.projects }} + platform: ${{ inputs.platform }} + secrets: inherit \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..9865062e --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,177 @@ +name: build + +on: + workflow_call: + inputs: + projects: + required: true + type: string + platform: + required: true + type: string + new-version: + type: boolean + required: false + default: false + +jobs: + get-platform: + runs-on: ubuntu-latest + outputs: + os: ${{ steps.platform.outputs.os }} + build-os: ${{ steps.platform.outputs.build-os }} + container: ${{ steps.platform.outputs.container }} + test-matrix: ${{ steps.platform.outputs.test-matrix }} + cache-set: ${{ steps.platform.outputs.cache-set }} + steps: + - uses: teaxyz/brewkit/actions/get-platform@v0 + id: platform + with: + platform: ${{ inputs.platform }} + + build: + runs-on: ${{ fromJson(needs.get-platform.outputs.build-os) }} + container: ${{ fromJson(needs.get-platform.outputs.container) }} + needs: [get-platform] + steps: + - uses: actions/checkout@v3 + + - uses: teaxyz/brewkit/actions/setup-brewkit@v0 + id: tea + with: + prefix: /opt + + - name: sanitize macOS runners + if: fromJson(needs.get-platform.outputs.build-os) == 'macos-11' + run: sudo mv /usr/local/bin/* /tmp/ + + - run: pkg build ${{ inputs.projects }} + id: build + env: + GITHUB_TOKEN: ${{ github.token }} + FORCE_UNSAFE_CONFIGURE: 1 # some configure scripts refuse to run as root + + - run: | + ABS_PATHS=$(echo $PATHS | tr ' ' '\n' | sed -e "s_^_$TEA_PREFIX/_" | tr '\n' ' ') + echo "paths=$ABS_PATHS" >> $GITHUB_OUTPUT + if: startsWith(inputs.platform, 'darwin+') + id: absolute-paths + env: + PATHS: ${{ steps.build.outputs.relative-paths }} + TEA_PREFIX: ${{ steps.tea.outputs.prefix }} + + # sign macOS binaries + - uses: teaxyz/brewkit/actions/codesign@v0 + if: startsWith(inputs.platform, 'darwin+') && github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name + with: + p12-file-base64: ${{ secrets.APPLE_CERTIFICATE_P12 }} + p12-password: ${{ secrets.APPLE_CERTIFICATE_P12_PASSWORD }} + identity: "Developer ID Application: Tea Inc. (7WV56FL599)" + paths: ${{ steps.absolute-paths.outputs.paths }} + + # cache data we'll need in the bottling job + - name: assemble artifact metadata + run: | + echo ${{ steps.build.outputs.pkgs }} >built + echo ${{ steps.build.outputs.srcs-relative-paths }} >srcs + working-directory: ${{ steps.tea.outputs.prefix }} + + # tarring ourselves ∵ GHA-artifacts (ludicrously) lose permissions + # /ref https://github.com/actions/upload-artifact/issues/38 + - name: create artifacts.tgz + run: + tar czvf $GITHUB_WORKSPACE/artifacts.tgz + ${{ steps.build.outputs.relative-paths }} + ${{ steps.build.outputs.srcs-relative-paths }} + built srcs + working-directory: ${{ steps.tea.outputs.prefix }} + + - name: upload artifacts + uses: actions/upload-artifact@v3 + with: + name: ${{ inputs.platform }} + path: artifacts.tgz + if-no-files-found: error + + test: + needs: [get-platform, build] + runs-on: ${{ matrix.platform.os }} + strategy: + matrix: + platform: ${{ fromJson(needs.get-platform.outputs.test-matrix) }} + outputs: + HAS_SECRETS: ${{ env.HAS_SECRETS }} + container: ${{ matrix.platform.container }} + steps: + - uses: actions/checkout@v3 + - uses: teaxyz/brewkit/actions/setup-brewkit@v0 + + - uses: teaxyz/setup@v0 + with: + srcroot: null + + - uses: actions/download-artifact@v3 + with: + name: ${{ inputs.platform }} + + - name: clean destination + # Note: needed when changing a directory to a symlink, for example in + # https://github.com/teaxyz/pantry/pull/435 + run: | + tar tzf $GITHUB_WORKSPACE/artifacts.tgz | \ + awk '{ print length, $0 }' | \ + sort -n -s -r | \ + cut -d" " -f2- | \ + xargs rm -rf + working-directory: ${{ env.TEA_PREFIX }} + + - name: extract bottles + run: tar xzvf artifacts.tgz -C $TEA_PREFIX + + - run: pkg test ${{ inputs.projects }} + env: + GITHUB_TOKEN: ${{ github.token }} + # FIXME: this shouldn't be necessary, but it currently is for the + # ubuntu+container test matrix entries. :/ + TEA_PANTRY_PATH: ${{ github.workspace }} + + - name: '[post]' + run: + echo "HAS_SECRETS=$HAS_SECRETS" >>$GITHUB_ENV + env: + HAS_SECRETS: ${{ secrets.AWS_S3_CACHE != null }} + + bottle: + needs: [test] + if: inputs.new-version == true + uses: ./.github/workflows/bottle.yml + with: + new-version: ${{ inputs.new-version }} + platform: ${{ inputs.platform }} + secrets: inherit + + complain: + needs: [test] + if: inputs.new-version == true && failure() + uses: ./.github/workflows/complain.yml + with: + projects: ${{ inputs.projects }} + platform: ${{ inputs.platform }} + secrets: inherit + + stage: + needs: [test] + # this only works for PRs from our team to our repo (security! :( ) + if: startsWith(github.ref, 'refs/pull/') && github.repository_owner == 'teaxyz' && needs.test.outputs.HAS_SECRETS == 'true' + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v3 + with: + name: ${{ inputs.platform }} + + - uses: teaxyz/brewkit/actions/stage-build-artifacts@v0 + with: + platform: ${{ inputs.platform }} + AWS_S3_BUCKET: ${{ secrets.AWS_S3_CACHE }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 7d0f236e..057a6325 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -1,8 +1,8 @@ name: cd + on: push: - branches: - - main + branches: [main] jobs: cd: @@ -11,11 +11,10 @@ jobs: has-artifacts: ${{ steps.has-artifacts.outputs.has-artifacts }} steps: - uses: actions/checkout@v3 - with: - repository: teaxyz/pantry.core - uses: teaxyz/brewkit/actions/setup-brewkit@v0 + # TODO: convert to teaxyz/brewkit/actions/map-projects-to-githubs - run: .github/scripts/map-projects-to-githubs.ts env: WATCHER_URL: ${{ secrets.WATCHER_URL }} @@ -42,7 +41,7 @@ jobs: - linux+aarch64 needs: [cd] if: ${{ needs.cd.outputs.has-artifacts == 'true' }} - uses: teaxyz/pantry.core/.github/workflows/bottle.yml@main + uses: ./.github/workflows/bottle.yml with: platform: ${{ matrix.platform }} secrets: inherit @@ -76,6 +75,9 @@ jobs: bottle-standalone: runs-on: ubuntu-latest needs: [cd] + permissions: + contents: read + actions: write if: ${{ needs.cd.outputs.has-artifacts == 'false' }} steps: - uses: actions/checkout@v3 @@ -85,10 +87,12 @@ jobs: PATTERNS: projects/**/package.yml - id: diff run: | - RESULT=$(echo ${{ steps.get-diff.outputs.diff }} | sed 's#projects/\(.*\)/.*#\1#') + for x in ${{ steps.get-diff.outputs.diff }}; do + y=$(echo $x | sed 's#projects/\(.*\)/package.yml#\1#') + RESULT="$RESULT $y" + done echo "diff=$RESULT" >> $GITHUB_OUTPUT - - run: gh workflow run new-version.yml -R teaxyz/pantry.core -f "projects=$PROJECTS" + - run: gh workflow run new-version.yml -f "projects=$PROJECTS" if: ${{ steps.diff.outputs.diff != '' }} env: - GITHUB_TOKEN: ${{ secrets.TEMP_JACOBS_GITHUB_PAT }} PROJECTS: ${{ steps.diff.outputs.diff }} diff --git a/.github/workflows/ci-scripts.yml b/.github/workflows/ci-scripts.yml new file mode 100644 index 00000000..907ec601 --- /dev/null +++ b/.github/workflows/ci-scripts.yml @@ -0,0 +1,20 @@ +name: ci·scripts + +on: + pull_request: + paths: + - .github/**.ts + +jobs: + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: teaxyz/setup@v0 + with: + srcroot: .github + - uses: teaxyz/brewkit/actions/cache@v0 + with: + cache-name: ci-scripts + - run: deno check --unstable **/*.ts + working-directory: .github diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3c927912..fb66d0e2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,5 @@ name: ci + on: pull_request jobs: @@ -29,7 +30,7 @@ jobs: - darwin+aarch64 - linux+aarch64 needs: [get-diff] - uses: teaxyz/pantry.core/.github/workflows/build.yml@main + uses: ./.github/workflows/build.yml with: projects: ${{ needs.get-diff.outputs.diff || 'zlib.net^1.2' }} platform: ${{ matrix.platform }} diff --git a/.github/workflows/cleanup.yml b/.github/workflows/cleanup.yml index 3597def2..69a9208f 100644 --- a/.github/workflows/cleanup.yml +++ b/.github/workflows/cleanup.yml @@ -24,6 +24,6 @@ jobs: PR=$(echo ${{github.ref}} | sed -e 's_refs/pull/\(.*\)/merge_\1_') aws s3 rm --recursive s3://$AWS_S3_CACHE/pull-request/$REPO/$PR - if: startsWith(github.ref, 'refs/pull/') && startsWith(github.repository, 'teaxyz/pantry.') + if: startsWith(github.ref, 'refs/pull/') && github.repository_owner == 'teaxyz' env: AWS_S3_CACHE: ${{ secrets.AWS_S3_CACHE }} \ No newline at end of file diff --git a/.github/workflows/complain.yml b/.github/workflows/complain.yml new file mode 100644 index 00000000..ef9100c9 --- /dev/null +++ b/.github/workflows/complain.yml @@ -0,0 +1,41 @@ +name: complain + +on: + workflow_call: + inputs: + projects: + required: true + type: string + platform: + required: true + type: string + +permissions: + issues: write + +jobs: + complain: + runs-on: ubuntu-latest + steps: + - uses: martialonline/workflow-status@v3 + id: status + + - uses: rtCamp/action-slack-notify@v2 + if: ${{ env.SLACK_WEBHOOK != '' }} + env: + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} + SLACK_CHANNEL: ${{ secrets.SLACK_CHANNEL }} + SLACK_MESSAGE: new-version:${{ inputs.projects }} (${{ inputs.platform }}) ${{ steps.status.outputs.status }} + SLACK_COLOR: ${{ steps.status.outputs.status }} + + - uses: actions/checkout@v3 + if: github.ref_name == 'main' + + - uses: JasonEtco/create-an-issue@v2 + if: github.ref_name == 'main' + with: + filename: ./.github/NEW_VERSION_ISSUE_TEMPLATE.md + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PACKAGE: ${{ inputs.projects }} (${{ inputs.platform }}) + URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} diff --git a/.github/workflows/index-data.yml b/.github/workflows/index-data.yml new file mode 100644 index 00000000..593b2b3f --- /dev/null +++ b/.github/workflows/index-data.yml @@ -0,0 +1,26 @@ +name: index-data + +on: + workflow_call: + inputs: + projects: + required: true + type: string + +jobs: + queue-detail-ingestion: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: teaxyz/setup@v0 + with: + srcroot: null + - uses: teaxyz/brewkit/actions/cache@v0 + # TODO: convert to teaxyz/brewkit/actions/index-packages + - run: ./.github/scripts/index-packages.ts ${{ inputs.projects }} + env: + TEA_PANTRY_PATH: ${{ github.workspace }} + AWS_REGION: us-east-1 + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + SQS_GENERATE_PACKAGE_DETAILS_URL: ${{ secrets.SQS_GENERATE_PACKAGE_DETAILS_URL }} diff --git a/.github/workflows/new-version.yml b/.github/workflows/new-version.yml new file mode 100644 index 00000000..78a097be --- /dev/null +++ b/.github/workflows/new-version.yml @@ -0,0 +1,34 @@ +name: new-version +run-name: new-version (${{ inputs.projects }}) +on: + workflow_dispatch: + inputs: + projects: + description: eg. `foo.com=1.2.3 bar.com^2.3.4` + required: true + type: string + +jobs: + build: + strategy: + fail-fast: false + matrix: + platform: + - darwin+x86-64 + - linux+x86-64 + - darwin+aarch64 + - linux+aarch64 + uses: ./.github/workflows/build.yml + with: + new-version: true + projects: ${{ inputs.projects }} + platform: ${{ matrix.platform }} + secrets: inherit + + index_data: + needs: [build] + if: success() + uses: ./.github/workflows/index-data.yml + with: + projects: ${{ inputs.projects }} + secrets: inherit diff --git a/.gitignore b/.gitignore index 3f1874f6..19dbfdd5 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,6 @@ /builds /testbeds .DS_Store + +#TODO commit after v1 +/deno.lock diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..89c517a3 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "deno.enable": true, + "deno.lint": true, + "deno.unstable": true, + "deno.config": ".github/deno.jsonc", + "deno.importMap": "../cli/import-map.json" +} \ No newline at end of file diff --git a/README.md b/README.md index 0cebef7a..88aed46e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ ![tea](https://tea.xyz/banner.png) -This pantry is the complement to [pantry.core]. - # What is a Pantry? @@ -29,9 +27,9 @@ other sources as much as possible, eg. versions are taken from the Assuming you have tea (/w magic) installed: ```sh -$ git clone https://github.com/teaxyz/pantry.extra +$ git clone https://github.com/teaxyz/pantry -$ cd pantry.extra +$ cd pantry # all the following commands operate in `./tea.out` # your tea installation remains untouched @@ -88,16 +86,13 @@ with their pull request then you can use GitHub’s CLI: $ gh pr checkout 123 # or you can copy paste the URL: -$ gh pr checkout https://github.com/teaxyz/pantry.extra/pull/123 +$ gh pr checkout https://github.com/teaxyz/pantry/pull/123 # then open for editing: $ pkg edit ``` -[pantry.core]: https://github.com/teaxyz/pantry.core -[wiki]: https://github.com/teaxyz/pantry.extra/wiki -[tea/cli]: https://github.com/teaxyz/cli +[wiki]: https://github.com/teaxyz/pantry/wiki [discussion]: https://github.com/orgs/teaxyz/discussions -[PAT]: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token [IPFS]: https://ipfs.tech diff --git a/projects/github.com/clever/microplane/package.yml b/projects/github.com/clever/microplane/package.yml index 95ccf899..c2569910 100644 --- a/projects/github.com/clever/microplane/package.yml +++ b/projects/github.com/clever/microplane/package.yml @@ -29,7 +29,7 @@ build: - -buildmode=pie test: | - echo "teaxyz/pantry.extra" > repos.txt + echo "teaxyz/pantry" > repos.txt mp init -f repos.txt # mp clone # ^^ FIXME fails with exit code 128 diff --git a/projects/gnu.org/gcc/package.yml b/projects/gnu.org/gcc/package.yml index c0e1adc5..8dcbcdbe 100644 --- a/projects/gnu.org/gcc/package.yml +++ b/projects/gnu.org/gcc/package.yml @@ -61,7 +61,7 @@ build: - --prefix={{ prefix }} - --libdir={{ prefix }}/lib - --enable-languages=c,c++,objc,obj-c++ - - --with-bugurl="https://github.com/teaxyz/pantry.extra/issues" + - --with-bugurl="https://github.com/teaxyz/pantry/issues" - --disable-bootstrap - --disable-nls linux: