diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml new file mode 100644 index 0000000..9cd29e6 --- /dev/null +++ b/.forgejo/workflows/build.yml @@ -0,0 +1,43 @@ +on: + workflow_call: + inputs: + tag: + required: true + type: string + goos: + required: true + type: string + goarch: + required: true + type: string + binari: + required: true + type: string + +jobs: + build: + runs-on: docker + env: + RELEASE_CIBLE: ${{ inputs.tag }} + GOOS: ${{ inputs.goos }} + GOARCH: ${{ inputs.goarch }} + BINARI: ${{ inputs.binari }} + CGO_ENABLED: 0 + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-go@v5 + with: + go-version: "1.21" + - name: Build du projet + run: | + echo "Building for ${BINARI}/${GOOS}/${GOARCH} (release: ${RELEASE_CIBLE})" + go env GOOS GOARCH + mkdir -p dist/ + go build -o dist/${BINARI}_${GOOS}_${GOARCH} ./cmd/${BINARI} + echo "artifact pour ${RELEASE_CIBLE} ${BINARI} ${GOOS} ${GOARCH}" > dist/${BINARI}-${GOOS}-${GOARCH}.txt + ls -l ./dist + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: ${{ env.BINARI }}-${{ env.RELEASE_CIBLE }}-${{ env.GOOS }}-${{ env.GOARCH }} + path: dist/${{ env.BINARI }}_${{ env.GOOS }}_${{ env.GOARCH }} \ No newline at end of file diff --git a/.forgejo/workflows/prerelease.yml b/.forgejo/workflows/prerelease.yml new file mode 100644 index 0000000..0ced880 --- /dev/null +++ b/.forgejo/workflows/prerelease.yml @@ -0,0 +1,55 @@ +name: Pre Release Workflow + +on: + push: + tags: + - '*' + branches: + - main + pull_request: + types: [closed] + branches: + - main + +jobs: + set-release-target: + runs-on: docker + outputs: + release_cible: ${{ steps.setvar.outputs.release_cible }} + steps: + - name: Déterminer la release cible + id: setvar + run: | + if [[ "${GITHUB_REF}" == refs/tags/* ]]; then + TAG="${GITHUB_REF#refs/tags/}" + echo "release_cible=$TAG" >> $GITHUB_OUTPUT + elif [[ "${GITHUB_REF}" == "refs/heads/main" ]]; then + echo "release_cible=latest" >> $GITHUB_OUTPUT + else + echo "release_cible=unknown" >> $GITHUB_OUTPUT + fi + + - name: Afficher la variable + run: echo "Release cible = ${{ steps.setvar.outputs.release_cible }}" + build: + runs-on: docker + needs: [set-release-target] + strategy: + matrix: + goos: [linux] + goarch: [amd64] + binaries: [db, metadata] + uses: ./.forgejo/workflows/build.yml + with: + tag: ${{ needs.set-release-target.outputs.release_cible }} + goos: ${{ matrix.goos }} + goarch: ${{ matrix.goarch }} + binari: ${{ matrix.binaries }} + secrets: inherit + prerelease: + runs-on: docker + needs: [set-release-target, build] + uses: ./.forgejo/workflows/release.yml + with: + tag: ${{ needs.set-release-target.outputs.release_cible }} + secrets: inherit \ No newline at end of file diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml new file mode 100644 index 0000000..efc7694 --- /dev/null +++ b/.forgejo/workflows/release.yml @@ -0,0 +1,56 @@ +on: + workflow_call: + inputs: + tag: + required: true + type: string + +jobs: + release: + runs-on: docker + env: + TOKEN: ${{ secrets.RELEASE }} + TAG: ${{ inputs.tag }} + steps: + - name: Download all build artifacts + uses: actions/download-artifact@v3 + with: + path: dist/ + - name: Publier tous les binaires + run: ls -lR dist/ + - name: Install jq + run: | + apt-get update + apt-get install -y jq + - name: Create prerelease + run: | + curl -X POST \ + -H "Authorization: token $TOKEN" \ + -H "Content-Type: application/json" \ + "https://git.g3e.fr/api/v1/repos/${{ github.repository }}/releases" \ + -d @- <