diff --git a/.github/workflows/release-please.yaml b/.github/workflows/release-please.yaml new file mode 100644 index 00000000..547a83a8 --- /dev/null +++ b/.github/workflows/release-please.yaml @@ -0,0 +1,104 @@ +# ############################################################################# +# Copyright (c) 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0. +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################# + +on: + push: + branches: + - main +permissions: + contents: write + pull-requests: write +name: Create release-automation GitHub Release +env: + APP_NAME: 'release-automation' + +jobs: + prepare-release: + runs-on: ubuntu-latest + outputs: + upload_url: ${{ steps.release.outputs[format('{0}--upload_url', env.APP_NAME)] }} + release_created: ${{ steps.release.outputs[format('{0}--release_created', env.APP_NAME)] }} + version: ${{ steps.release.outputs[format('{0}--major',env.APP_NAME)] }}.${{ steps.release.outputs[format('{0}--minor', env.APP_NAME)] }}.${{ steps.release.outputs[format('{0}--patch', env.APP_NAME)] }} + steps: + - uses: google-github-actions/release-please-action@v4 + name: Prepare release + id: release + with: + path: ${{ env.APP_NAME }} + release-type: go + - uses: actions/checkout@v4 + - name: Tag major and minor versions + if: ${{ steps.release.outputs.release-automation--release_created }} + run: | + git config user.name github-actions[bot] + git config user.email 41898282+github-actions[bot]@users.noreply.github.com + git remote add gh-token "https://${{ secrets.GITHUB_TOKEN }}@github.com/eclipse-tractusx/sig-release.git" + git tag -d v${{ steps.release.outputs[format('{0}--major',env.APP_NAME)] }} || true + git tag -d v${{ steps.release.outputs[format('{0}--major',env.APP_NAME)] }}.${{ steps.release.outputs[format('{0}--minor', env.APP_NAME)] }} || true + git push origin :v${{ steps.release.outputs[format('{0}--major',env.APP_NAME)] }} || true + git push origin :v${{ steps.release.outputs[format('{0}--major',env.APP_NAME)] }}.${{ steps.release.outputs[format('{0}--minor', env.APP_NAME)] }} || true + git tag -a v${{ steps.release.outputs[format('{0}--major',env.APP_NAME)] }} -m "Release v${{ steps.release.outputs.release-automation--major }}" + git tag -a v${{ steps.release.outputs[format('{0}--major',env.APP_NAME)]}}.${{ steps.release.outputs[format('{0}--minor', env.APP_NAME)] }} -m "Release v${{ steps.release.outputs[format('{0}--major',env.APP_NAME)] }}.${{ steps.release.outputs[format('{0}--minor', env.APP_NAME)] }}" + git push origin v${{ steps.release.outputs[format('{0}--major',env.APP_NAME)]}} + git push origin v${{ steps.release.outputs[format('{0}--major',env.APP_NAME)] }}.${{ steps.release.outputs[format('{0}--minor', env.APP_NAME)] }} + build-assets: + if: ${{ needs.prepare-release.outputs.release_created }} + runs-on: ubuntu-latest + needs: prepare-release + strategy: + matrix: + goos: [linux, windows, darwin] + goarch: [amd64] + include: + - goos: darwin + goarch: arm64 + steps: + - uses: actions/checkout@v4 + - name: Set up Go + uses: actions/setup-go@v4 + with: + go-version-file: 'release-automation/go.mod' + - name: Build windows binary + if: ${{ matrix.goos == 'windows' }} + run: env GOOS=${{ matrix.goos }} GOARCH=${{ matrix.goarch }} go build -o ${{ github.workspace }}/bin/${{ env.APP_NAME }}-${{ needs.prepare-release.outputs.version }}-${{ matrix.goos }}-${{ matrix.goarch }}.exe + working-directory: ${{ github.workspace }}/${{ env.APP_NAME }} + - name: Upload windows release assets + if: ${{ matrix.goos == 'windows' }} + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.prepare-release.outputs.upload_url }} + asset_path: ${{ github.workspace }}/bin/${{ env.APP_NAME }}-${{ needs.prepare-release.outputs.version }}-${{ matrix.goos }}-${{ matrix.goarch }}.exe + asset_name: ${{ env.APP_NAME }}-${{ needs.prepare-release.outputs.version }}-${{ matrix.goos }}-${{ matrix.goarch }}.exe + asset_content_type: application/octet-stream + - name: Build other binaries + if: ${{ matrix.goos != 'windows' }} + run: env GOOS=${{ matrix.goos }} GOARCH=${{ matrix.goarch }} go build -o ${{ github.workspace }}/bin/${{ env.APP_NAME }}-${{ needs.prepare-release.outputs.version }}-${{ matrix.goos }}-${{ matrix.goarch }} + working-directory: ${{ github.workspace }}/${{ env.APP_NAME }} + - name: Upload other release assets + if: ${{ matrix.goos != 'windows' }} + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.prepare-release.outputs.upload_url }} + asset_path: ${{ github.workspace }}/bin/${{ env.APP_NAME }}-${{ needs.prepare-release.outputs.version }}-${{ matrix.goos }}-${{ matrix.goarch }} + asset_name: ${{ env.APP_NAME }}-${{ needs.prepare-release.outputs.version }}-${{ matrix.goos }}-${{ matrix.goarch }} + asset_content_type: application/octet-stream diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml deleted file mode 100644 index 38c88fff..00000000 --- a/.github/workflows/release.yaml +++ /dev/null @@ -1,100 +0,0 @@ -# ############################################################################# -# Copyright (c) 2023 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0. -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -# -# SPDX-License-Identifier: Apache-2.0 -# ############################################################################# - -name: Create GitHub Release - -on: - push: - tags: - - "v*.*.*" - -env: - APP_NAME: "tractusx-quality-checks" - -jobs: - release: - runs-on: ubuntu-latest - outputs: - upload_url: ${{ steps.create_release.outputs.upload_url }} - version: ${{ steps.version.outputs.version }} - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Gather version facts - id: version - run: | - tag=${GITHUB_REF/refs\/tags\//} - version=${tag#v} - major=${version%%.*} - major_minor=${version%.*} - echo "tag=${tag}" >> $GITHUB_OUTPUT - echo "version=${version}" >> $GITHUB_OUTPUT - echo "major=${major}" >> $GITHUB_OUTPUT - echo "major_minor=${major_minor}" >> $GITHUB_OUTPUT - - name: Create GitHub release - id: create_release - uses: release-drafter/release-drafter@v5 - with: - config-name: release-drafter.yaml - version: ${{ steps.version.outputs.version }} - publish: true - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Force update major tag - run: | - git tag v${{ steps.version.outputs.major }} ${{ steps.version.outputs.tag }} -f - git push origin refs/tags/v${{ steps.version.outputs.major }} -f - git tag v${{ steps.version.outputs.major_minor }} ${{ steps.version.outputs.tag }} -f - git push origin refs/tags/v${{ steps.version.outputs.major_minor }} -f - - build: - runs-on: ubuntu-latest - needs: release - strategy: - matrix: - goos: [linux, windows, darwin] - goarch: [amd64] - include: - - goos: darwin - goarch: arm64 - - goos: windows - goarch: '386' - - goos: linux - goarch: '386' - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Set up Go - uses: actions/setup-go@v3 - with: - go-version-file: "release-automation/go.mod" - - name: Build binary - run: env GOOS=${{ matrix.goos }} GOARCH=${{ matrix.goarch }} go build -o ${{ github.workspace }}/bin/${{ env.APP_NAME }}-${{ needs.release.outputs.version }}-${{ matrix.goos }}-${{ matrix.goarch }} - working-directory: "${{ github.workspace }}/release-automation" - - name: Upload release assets - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ needs.release.outputs.upload_url }} - asset_path: ${{ github.workspace }}/bin/${{ env.APP_NAME }}-${{ needs.release.outputs.version }}-${{ matrix.goos }}-${{ matrix.goarch }} - asset_name: ${{ env.APP_NAME }}-${{ needs.release.outputs.version }}-${{ matrix.goos }}-${{ matrix.goarch }} - asset_content_type: application/octet-stream diff --git a/action.yaml b/action.yaml new file mode 100644 index 00000000..e25adf19 --- /dev/null +++ b/action.yaml @@ -0,0 +1,45 @@ +# ############################################################################# +# Copyright (c) 2023 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0. +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################# + +name: "eclipse-tractusx-quality-checks" +description: "Run quality checks based on the release guidelines" +inputs: + version: + description: The version of the quality checks release to use + required: true + default: "0.1.0" + platform: + description: The platform architecture where the quality checks runs on + required: true + default: "linux-amd64" + +runs: + using: composite + steps: + - name: Download quality checks binary + run: curl -OL https://github.com/eclipse-tractusx/sig-release/releases/download/v${{ inputs.version }}/release-automation-${{ inputs.version }}-${{ inputs.platform }} + shell: bash + + - name: Make binary executable + run: chmod +x ./release-automation-${{ inputs.version }}-${{ inputs.platform }} + shell: bash + + - name: Run quality checks + run: ./release-automation-${{ inputs.version }}-${{ inputs.platform }} checkLocal + shell: bash