diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml new file mode 100644 index 0000000..df0d85e --- /dev/null +++ b/.github/workflows/build_release.yml @@ -0,0 +1,90 @@ +name: Build and release + +on: + push: + branches: + - main + tags: + - 'v*.*' + pull_request: + branches: + - main + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + container: + name: Containerfile + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-22.04 + include: + - os: ubuntu-22.04 + platform: linux + arch: amd64 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata + uses: docker/metadata-action@v5 + id: metadata + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + - name: Build image + uses: docker/build-push-action@v5 + with: + context: . + file: Containerfile + push: ${{ github.event_name != 'pull_request' }} + platforms: ${{ matrix.platform }}/${{ matrix.arch }} + tags: ${{ steps.metadata.outputs.tags }} + labels: ${{ steps.metadata.outputs.labels }} + + release: + runs-on: ubuntu-22.04 + needs: + - container + if: startsWith(github.ref, 'refs/tags/') + steps: + - name: Download artifacts + uses: actions/download-artifact@v3 + + - name: Package + run: | + for folder in ./*; do + if [ -d "$folder" ]; then + echo "Processing folder: $folder" + cd $folder + tar -czf ../$folder.tar.gz -T <(\ls -1) + cd .. + sha256sum $folder.tar.gz > $folder.tar.gz.sha256 + fi + done + + - name: Release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: '*.tar.gz*' + tag: ${{ github.ref }} + file_glob: true diff --git a/Dockerfile b/Containerfile similarity index 100% rename from Dockerfile rename to Containerfile