diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ac257c9..49f1541 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,8 +14,8 @@ on: env: # Common versions - GO_VERSION: '1.23.3' - GOLANGCI_VERSION: 'v1.62.2' + GO_VERSION: '1.23.6' + GOLANGCI_VERSION: 'v1.62.0' DOCKER_BUILDX_VERSION: 'v0.23.0' # These environment variables are important to the Crossplane CLI install.sh @@ -29,8 +29,9 @@ env: XPKG_ACCESS_ID: ${{ secrets.XPKG_ACCESS_ID }} # The package to push, without a version tag. The default matches GitHub. For - # example xpkg.upbound.io/crossplane/function-environment-configs. - XPKG: xpkg.upbound.io/crossplane-contrib/function-environment-configs + # example xpkg.upbound.io/crossplane/function-template-go. + XPKG: xpkg.upbound.io/${{ github.repository}} + CROSSPLANE_REGORG: ghcr.io/${{ github.repository}} # xpkg.crossplane.io/crossplane-contrib # The package version to push. The default is 0.0.0-gitsha. XPKG_VERSION: ${{ inputs.version }} @@ -48,6 +49,9 @@ jobs: go-version: ${{ env.GO_VERSION }} cache: false # The golangci-lint action does its own caching. + - name: Check go mod tidy + run: go mod tidy && git diff --exit-code go.mod go.sum + - name: Lint uses: golangci/golangci-lint-action@v6 with: @@ -70,7 +74,7 @@ jobs: # We want to build most packages for the amd64 and arm64 architectures. To # speed this up we build single-platform packages in parallel. We then upload # those packages to GitHub as a build artifact. The push job downloads those - # artifacts and pushes them as a single multi-platform package. + # artifacts and pushes them as a single multi-platform package. build: runs-on: ubuntu-24.04 strategy: @@ -108,13 +112,13 @@ jobs: build-args: GO_VERSION=${{ env.GO_VERSION }} outputs: type=docker,dest=runtime-${{ matrix.arch }}.tar - + - name: Setup the Crossplane CLI run: "curl -sL https://raw.githubusercontent.com/crossplane/crossplane/master/install.sh | sh" - name: Build Package run: ./crossplane xpkg build --package-file=${{ matrix.arch }}.xpkg --package-root=package/ --embed-runtime-image-tarball=runtime-${{ matrix.arch }}.tar - + - name: Upload Single-Platform Package uses: actions/upload-artifact@v4 with: @@ -139,6 +143,7 @@ jobs: with: path: . merge-multiple: true + pattern: "!*.dockerbuild" # This gets uploaded by docker/build-push-action but must be skipped: https://github.com/actions/toolkit/pull/1874 - name: Setup the Crossplane CLI run: "curl -sL https://raw.githubusercontent.com/crossplane/crossplane/master/install.sh | sh" @@ -162,3 +167,14 @@ jobs: - name: Push Multi-Platform Package to Upbound if: env.XPKG_ACCESS_ID != '' run: "./crossplane --verbose xpkg push --package-files $(echo *.xpkg|tr ' ' ,) ${{ env.XPKG }}:${{ env.XPKG_VERSION }}" + + - name: Login to GHCR + uses: docker/login-action@v3.3.0 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Push Multi-Platform Package to GHCR + if: env.XPKG_ACCESS_ID != '' + run: "./crossplane --verbose xpkg push --package-files $(echo *.xpkg|tr ' ' ,) ${{ env.CROSSPLANE_REGORG }}:${{ env.XPKG_VERSION }}" diff --git a/.github/workflows/tag.yml b/.github/workflows/tag.yml new file mode 100644 index 0000000..f2aca68 --- /dev/null +++ b/.github/workflows/tag.yml @@ -0,0 +1,26 @@ +name: Tag + +on: + workflow_dispatch: + inputs: + version: + description: 'Release version (e.g. v0.1.0)' + required: true + message: + description: 'Tag message' + required: true + +jobs: + create-tag: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Create Tag + uses: negz/create-tag@39bae1e0932567a58c20dea5a1a0d18358503320 # v1 + with: + version: ${{ github.event.inputs.version }} + message: ${{ github.event.inputs.message }} + token: ${{ secrets.GITHUB_TOKEN }}