From a92f16b3562c52e3e9e421f282ac63ae89f78c7e Mon Sep 17 00:00:00 2001 From: Qbandev Date: Tue, 10 Jun 2025 11:42:42 +0200 Subject: [PATCH 1/5] feat: add upload-yarn-binary workflow --- .github/workflows/upload-yarn-binary.yml | 54 ++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 .github/workflows/upload-yarn-binary.yml diff --git a/.github/workflows/upload-yarn-binary.yml b/.github/workflows/upload-yarn-binary.yml new file mode 100644 index 00000000..a20b3877 --- /dev/null +++ b/.github/workflows/upload-yarn-binary.yml @@ -0,0 +1,54 @@ +name: Upload Yarn Binary to GitHub Release + +on: + workflow_dispatch: + inputs: + yarn_version: + description: 'Yarn version to upload (e.g., 4.9.1)' + required: true + type: string + +jobs: + upload-yarn-binary: + runs-on: ubuntu-latest + permissions: + contents: write + packages: write + steps: + - name: Set up variables + id: vars + run: | + echo "YARN_VERSION=${{ github.event.inputs.yarn_version }}" >> $GITHUB_ENV + echo "YARN_FILENAME=yarn-${{ github.event.inputs.yarn_version }}.js" >> $GITHUB_ENV + echo "RELEASE_TAG=v${{ github.event.inputs.yarn_version }}" >> $GITHUB_ENV + + - name: Download yarn.js binary + run: | + curl -L -o "$YARN_FILENAME" "https://repo.yarnpkg.com/${YARN_VERSION}/packages/yarnpkg-cli/bin/yarn.js" + ls -lh "$YARN_FILENAME" + + - name: Display SHA256 checksum + run: | + sha256sum "$YARN_FILENAME" + + - name: Install GitHub CLI + run: | + sudo apt-get update + sudo apt-get install gh -y + + - name: Create or update GitHub Release + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + # Create the release if it doesn't exist + gh release view "$RELEASE_TAG" || gh release create "$RELEASE_TAG" --title "Yarn $YARN_VERSION" --notes "Yarn CLI $YARN_VERSION binary." + + - name: Upload yarn.js to GitHub Release + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release upload "$RELEASE_TAG" "$YARN_FILENAME" --clobber + + - name: Output download URL + run: | + echo "Download URL: https://github.com/${{ github.repository }}/releases/download/${RELEASE_TAG}/${YARN_FILENAME}" \ No newline at end of file From b20a5e9f44988bc603c20c8b793d54b57b90b439 Mon Sep 17 00:00:00 2001 From: Qbandev Date: Tue, 10 Jun 2025 11:55:08 +0200 Subject: [PATCH 2/5] fix: add lint and remove gh installation --- .github/workflows/upload-yarn-binary.yml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/upload-yarn-binary.yml b/.github/workflows/upload-yarn-binary.yml index a20b3877..dd23fe4b 100644 --- a/.github/workflows/upload-yarn-binary.yml +++ b/.github/workflows/upload-yarn-binary.yml @@ -18,9 +18,11 @@ jobs: - name: Set up variables id: vars run: | - echo "YARN_VERSION=${{ github.event.inputs.yarn_version }}" >> $GITHUB_ENV - echo "YARN_FILENAME=yarn-${{ github.event.inputs.yarn_version }}.js" >> $GITHUB_ENV - echo "RELEASE_TAG=v${{ github.event.inputs.yarn_version }}" >> $GITHUB_ENV + { + echo "YARN_VERSION=${{ github.event.inputs.yarn_version }}" + echo "YARN_FILENAME=yarn-${{ github.event.inputs.yarn_version }}.js" + echo "RELEASE_TAG=v${{ github.event.inputs.yarn_version }}" + } >> "$GITHUB_ENV" - name: Download yarn.js binary run: | @@ -31,11 +33,6 @@ jobs: run: | sha256sum "$YARN_FILENAME" - - name: Install GitHub CLI - run: | - sudo apt-get update - sudo apt-get install gh -y - - name: Create or update GitHub Release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 5936b7b422f5c621aaf39397dc441cc588b5b02b Mon Sep 17 00:00:00 2001 From: Qbandev Date: Tue, 10 Jun 2025 12:03:40 +0200 Subject: [PATCH 3/5] fix: add yarn url to output --- .github/workflows/upload-yarn-binary.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/upload-yarn-binary.yml b/.github/workflows/upload-yarn-binary.yml index dd23fe4b..74387546 100644 --- a/.github/workflows/upload-yarn-binary.yml +++ b/.github/workflows/upload-yarn-binary.yml @@ -47,5 +47,11 @@ jobs: gh release upload "$RELEASE_TAG" "$YARN_FILENAME" --clobber - name: Output download URL + id: output-url run: | - echo "Download URL: https://github.com/${{ github.repository }}/releases/download/${RELEASE_TAG}/${YARN_FILENAME}" \ No newline at end of file + url="https://github.com/${{ github.repository }}/releases/download/${RELEASE_TAG}/${YARN_FILENAME}" + echo "Download URL: $url" + echo "download_url=$url" >> "$GITHUB_OUTPUT" + + outputs: + download_url: ${{ steps.output-url.outputs.download_url }} From df7148d59f01aebdb1c9375b8e3b59aeebde6cab Mon Sep 17 00:00:00 2001 From: Qbandev Date: Tue, 10 Jun 2025 15:11:09 +0200 Subject: [PATCH 4/5] fix: add checkout step --- .github/workflows/upload-yarn-binary.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/upload-yarn-binary.yml b/.github/workflows/upload-yarn-binary.yml index 74387546..f753d331 100644 --- a/.github/workflows/upload-yarn-binary.yml +++ b/.github/workflows/upload-yarn-binary.yml @@ -15,6 +15,9 @@ jobs: contents: write packages: write steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Set up variables id: vars run: | From 2ef74084c80f05d8cf7d76bf86208d4aa32abdde Mon Sep 17 00:00:00 2001 From: Qbandev Date: Tue, 10 Jun 2025 20:57:57 +0200 Subject: [PATCH 5/5] fix: apply changes suggested --- .github/workflows/upload-yarn-binary.yml | 35 ++++++++++-------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/.github/workflows/upload-yarn-binary.yml b/.github/workflows/upload-yarn-binary.yml index f753d331..45fdae21 100644 --- a/.github/workflows/upload-yarn-binary.yml +++ b/.github/workflows/upload-yarn-binary.yml @@ -14,47 +14,40 @@ jobs: permissions: contents: write packages: write + env: + YARN_VERSION: ${{ github.event.inputs.yarn_version }} + YARN_FILENAME: yarn-${{ github.event.inputs.yarn_version }}.js + RELEASE_TAG: v${{ github.event.inputs.yarn_version }} + outputs: + download_url: ${{ steps.output-url.outputs.download_url }} steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Set up variables - id: vars - run: | - { - echo "YARN_VERSION=${{ github.event.inputs.yarn_version }}" - echo "YARN_FILENAME=yarn-${{ github.event.inputs.yarn_version }}.js" - echo "RELEASE_TAG=v${{ github.event.inputs.yarn_version }}" - } >> "$GITHUB_ENV" - - name: Download yarn.js binary run: | - curl -L -o "$YARN_FILENAME" "https://repo.yarnpkg.com/${YARN_VERSION}/packages/yarnpkg-cli/bin/yarn.js" - ls -lh "$YARN_FILENAME" + curl -L -o "${YARN_FILENAME}" "https://repo.yarnpkg.com/${YARN_VERSION}/packages/yarnpkg-cli/bin/yarn.js" + ls -lh "${YARN_FILENAME}" - name: Display SHA256 checksum run: | - sha256sum "$YARN_FILENAME" + sha256sum "${YARN_FILENAME}" - name: Create or update GitHub Release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - # Create the release if it doesn't exist - gh release view "$RELEASE_TAG" || gh release create "$RELEASE_TAG" --title "Yarn $YARN_VERSION" --notes "Yarn CLI $YARN_VERSION binary." + gh release view "${RELEASE_TAG}" || gh release create "${RELEASE_TAG}" --title "Yarn ${YARN_VERSION}" --notes "Yarn CLI ${YARN_VERSION} binary." - name: Upload yarn.js to GitHub Release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - gh release upload "$RELEASE_TAG" "$YARN_FILENAME" --clobber + gh release upload "${RELEASE_TAG}" "${YARN_FILENAME}" --clobber - name: Output download URL id: output-url run: | - url="https://github.com/${{ github.repository }}/releases/download/${RELEASE_TAG}/${YARN_FILENAME}" - echo "Download URL: $url" - echo "download_url=$url" >> "$GITHUB_OUTPUT" - - outputs: - download_url: ${{ steps.output-url.outputs.download_url }} + url="https://github.com/${GITHUB_REPOSITORY}/releases/download/${RELEASE_TAG}/${YARN_FILENAME}" + echo "Download URL: ${url}" + echo "download_url=${url}" >> "${GITHUB_OUTPUT}"