Skip to content

ci: publish workflow #15

ci: publish workflow

ci: publish workflow #15

Workflow file for this run

name: publish
on: [push]
env:
PACK_VERSION: 0.33.2
REPO: ghcr.io/${{ github.repository_owner }}
jobs:
publish-buildpack:
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
steps:
- uses: actions/checkout@v4
- id: setup-tools
uses: buildpacks/github-actions/[email protected]
- id: setup-pack
uses: buildpacks/github-actions/[email protected]
- name: get local buildpack details
id: local-version
run: |
BUILDPACK_ID="$(cat buildpack.toml | yj -t | jq -r .buildpack.id)"
VERSION="$(cat buildpack.toml | yj -t | jq -r .buildpack.version)"
PACKAGE="$REPO/$(echo "$BUILDPACK_ID" | sed 's/\//_/g')"
echo "buildpack_id=$BUILDPACK_ID" >> "$GITHUB_OUTPUT"
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "name=$PACKAGE" >> "$GITHUB_OUTPUT"
working-directory: playwright/python
- name: get published version
id: published-version
uses: actions/github-script@v7
with:
result-encoding: string
retries: 3
retry-exempt-status-codes: 400,401
script: |
await github.rest.packages
.getAllPackageVersionsForPackageOwnedByUser({
package_type: "container",
username: "${{ github.repository_owner }}",
package_name: "${{ steps.local-version.outputs.name }}".replace(`${process.env.REPO}/`, ""),
})
.then(({ data }) => {
const version = data[0];
console.log(version.name);
});
- name: debug
run: |
echo "${{ steps.local-version.outputs.version }}"
echo "${{ steps.published-version.outputs.result }}"
- name: login to ghcr
if: steps.local-version.outputs.version > steps.published-version.outputs.result
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.repository_owner }} --password-stdin
- name: package buildpack
id: package
if: steps.local-version.outputs.version > steps.published-version.outputs.result
run: |
#!/usr/bin/env bash
set -euo pipefail
pack buildpack package --publish "${{ steps.local-version.outputs.name }}:${{ steps.local-version.outputs.version }}"
DIGEST="$(crane digest ${PACKAGE}:${VERSION})"
echo "address=${{ steps.local-version.outputs.name }}@${DIGEST}" >> "$GITHUB_OUTPUT"
working-directory: playwright/python
- id: register
if: steps.local-version.outputs.version > steps.published-version.outputs.result
uses: docker://ghcr.io/buildpacks/actions/registry/request-add-entry:5.1.0
with:
token: ${{ secrets.CNB_PUBLISHER_GHTOKEN }}
id: ${{ steps.local-version.outputs.buildpack_id }}
version: ${{ steps.local-version.outputs.version }}
address: ${{ steps.local-version.outputs.address }}