From c2518b99575870424870e5b2b27db4554b82ec95 Mon Sep 17 00:00:00 2001 From: Cyril Rohr Date: Thu, 30 May 2024 20:33:39 +0200 Subject: [PATCH] Add action to publish package (#1) --- .github/workflows/test.yml | 12 +++++++-- publish/action.yml | 50 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 publish/action.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3ba4192..63f2bd4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -33,12 +33,20 @@ jobs: - uses: ./action/package id: package with: - name: blank-sinatra-app target: ${{ matrix.target }} + name: blank-sinatra-app version: '1.0.0' path: app - name: Upload uses: actions/upload-artifact@v4 with: name: ${{ steps.package.outputs.package_name }} - path: ${{ steps.package.outputs.package_path }} \ No newline at end of file + path: ${{ steps.package.outputs.package_path }} + - name: Publish + uses: ./action/publish + with: + target: ${{ matrix.target }} + token: ${{ secrets.PUBLISH_TOKEN }} + repository: crohr/blank-sinatra-app + channel: master + artefact: ${{ steps.package.outputs.package_path }} \ No newline at end of file diff --git a/publish/action.yml b/publish/action.yml new file mode 100644 index 0000000..0884c57 --- /dev/null +++ b/publish/action.yml @@ -0,0 +1,50 @@ +name: 'pkgr/action/publish' +description: 'Publish your package to the packagehall' +inputs: + artefact: + description: 'Artefact to publish' + required: true + target: + description: 'Distribution' + required: true + repository: + description: 'Repository to publish to' + required: true + default: '${{ github.repository }}' + channel: + description: 'Channel to publish to' + required: true + default: 'master' + token: + description: 'Token to use for authentication' + required: true + force: + description: 'Publish even if the artefact already exists, and auto-create the channel if it does not exist' + required: false + default: "true" + +outputs: + id: + description: "Package identifier" + value: ${{ steps.upload.outputs.id }} + +runs: + using: "composite" + steps: + - name: Upload + id: upload + shell: bash + env: + REPO_FULL_NAME: ${{ inputs.repository }} + TARGET: ${{ inputs.target }} + CHANNEL: ${{ inputs.channel }} + run: | + org="${REPO_FULL_NAME%%/*}" + repo="${REPO_FULL_NAME##*/}" + url="https://dl.packager.io/api/orgs/${org}/repos/${repo}/packages" + echo "Pushing to ${url}..." + curl --fail-with-body -u "${{ inputs.token }}" -i -X POST "${url}" \ + -F "artefact=@${{ inputs.artefact }}" \ + -F "targets[]=${TARGET/://}" \ + -F "channels[]=$CHANNEL" \ + -F "force=${{ inputs.force }}" \ No newline at end of file