diff --git a/.github/workflows/package_specific.yaml b/.github/workflows/package_specific.yaml new file mode 100644 index 000000000..6181524db --- /dev/null +++ b/.github/workflows/package_specific.yaml @@ -0,0 +1,315 @@ +name: Package Specific + +# TODO(gitbuda): Cleanup docker container if GHA job was canceled. + +on: + workflow_dispatch: + inputs: + memgraph_version: + description: "Memgraph version to upload as. Leave this field empty if you don't want to upload binaries to S3. Format: 'X.Y.Z'" + required: false + build_type: + type: choice + description: "Memgraph Build type. Default value is Release." + default: 'Release' + options: + - Release + - RelWithDebInfo + build_amzn_2: + type: boolean + default: false + build_centos_7: + type: boolean + default: false + build_centos_9: + type: boolean + default: false + build_debian_10: + type: boolean + default: false + build_debian_11: + type: boolean + default: false + build_debian_11_arm: + type: boolean + default: false + build_debian_11_platform: + type: boolean + default: false + build_docker: + type: boolean + default: false + build_fedora_36: + type: boolean + default: false + build_ubuntu_18_04: + type: boolean + default: false + build_ubuntu_20_04: + type: boolean + default: false + build_ubuntu_22_04: + type: boolean + default: false + build_ubuntu_22_04_arm: + type: boolean + default: false + +jobs: + amzn-2: + if: ${{ github.event.inputs.build_amzn_2 }} + runs-on: [self-hosted, DockerMgBuild, X64] + timeout-minutes: 60 + steps: + - name: "Set up repository" + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Required because of release/get_version.py + - name: "Build package" + run: | + ./release/package/run.sh package amzn-2 ${{ github.event.inputs.build_type }} + - name: "Upload package" + uses: actions/upload-artifact@v3 + with: + name: amzn-2 + path: build/output/amzn-2/memgraph*.rpm + + centos-7: + if: ${{ github.event.inputs.build_centos_7 }} + runs-on: [self-hosted, DockerMgBuild, X64] + timeout-minutes: 60 + steps: + - name: "Set up repository" + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Required because of release/get_version.py + - name: "Build package" + run: | + ./release/package/run.sh package centos-7 ${{ github.event.inputs.build_type }} + - name: "Upload package" + uses: actions/upload-artifact@v3 + with: + name: centos-7 + path: build/output/centos-7/memgraph*.rpm + + centos-9: + if: ${{ github.event.inputs.build_centos_9 }} + runs-on: [self-hosted, DockerMgBuild, X64] + timeout-minutes: 60 + steps: + - name: "Set up repository" + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Required because of release/get_version.py + - name: "Build package" + run: | + ./release/package/run.sh package centos-9 ${{ github.event.inputs.build_type }} + - name: "Upload package" + uses: actions/upload-artifact@v3 + with: + name: centos-9 + path: build/output/centos-9/memgraph*.rpm + + debian-10: + if: ${{ github.event.inputs.build_debian_10 }} + runs-on: [self-hosted, DockerMgBuild, X64] + timeout-minutes: 60 + steps: + - name: "Set up repository" + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Required because of release/get_version.py + - name: "Build package" + run: | + ./release/package/run.sh package debian-10 ${{ github.event.inputs.build_type }} + - name: "Upload package" + uses: actions/upload-artifact@v3 + with: + name: debian-10 + path: build/output/debian-10/memgraph*.deb + + debian-11: + if: ${{ github.event.inputs.build_debian_11 }} + runs-on: [self-hosted, DockerMgBuild, X64] + timeout-minutes: 60 + steps: + - name: "Set up repository" + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Required because of release/get_version.py + - name: "Build package" + run: | + ./release/package/run.sh package debian-11 ${{ github.event.inputs.build_type }} + - name: "Upload package" + uses: actions/upload-artifact@v3 + with: + name: debian-11 + path: build/output/debian-11/memgraph*.deb + + debian-11-arm: + if: ${{ github.event.inputs.build_debian_11_arm }} + runs-on: [self-hosted, DockerMgBuild, ARM64, strange] + timeout-minutes: 120 + steps: + - name: "Set up repository" + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Required because of release/get_version.py + - name: "Build package" + run: | + ./release/package/run.sh package debian-11-arm ${{ github.event.inputs.build_type }} + - name: "Upload package" + uses: actions/upload-artifact@v3 + with: + name: debian-11-aarch64 + path: build/output/debian-11-arm/memgraph*.deb + + debian-11-platform: + if: ${{ github.event.inputs.build_debian_11_platform }} + runs-on: [self-hosted, DockerMgBuild, X64] + timeout-minutes: 60 + steps: + - name: "Set up repository" + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Required because of release/get_version.py + - name: "Build package" + run: | + ./release/package/run.sh package debian-11 ${{ github.event.inputs.build_type }} --for-platform + - name: "Upload package" + uses: actions/upload-artifact@v3 + with: + name: debian-11-platform + path: build/output/debian-11/memgraph*.deb + + docker: + if: ${{ github.event.inputs.build_docker }} + runs-on: [self-hosted, DockerMgBuild, X64] + timeout-minutes: 60 + steps: + - name: "Set up repository" + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Required because of release/get_version.py + - name: "Build package" + run: | + cd release/package + ./run.sh package debian-11 ${{ github.event.inputs.build_type }} --for-docker + ./run.sh docker + - name: "Upload package" + uses: actions/upload-artifact@v3 + with: + name: docker + path: build/output/docker/memgraph*.tar.gz + + fedora-36: + if: ${{ github.event.inputs.build_fedora_36 }} + runs-on: [self-hosted, DockerMgBuild, X64] + timeout-minutes: 60 + steps: + - name: "Set up repository" + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Required because of release/get_version.py + - name: "Build package" + run: | + ./release/package/run.sh package fedora-36 ${{ github.event.inputs.build_type }} + - name: "Upload package" + uses: actions/upload-artifact@v3 + with: + name: fedora-36 + path: build/output/fedora-36/memgraph*.rpm + + ubuntu-18_04: + if: ${{ github.event.inputs.build_ubuntu_18_04 }} + runs-on: [self-hosted, DockerMgBuild, X64] + timeout-minutes: 60 + steps: + - name: "Set up repository" + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Required because of release/get_version.py + - name: "Build package" + run: | + ./release/package/run.sh package ubuntu-18.04 ${{ github.event.inputs.build_type }} + - name: "Upload package" + uses: actions/upload-artifact@v3 + with: + name: ubuntu-18.04 + path: build/output/ubuntu-18.04/memgraph*.deb + + ubuntu-20_04: + if: ${{ github.event.inputs.build_ubuntu_20_04 }} + runs-on: [self-hosted, DockerMgBuild, X64] + timeout-minutes: 60 + steps: + - name: "Set up repository" + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Required because of release/get_version.py + - name: "Build package" + run: | + ./release/package/run.sh package ubuntu-20.04 ${{ github.event.inputs.build_type }} + - name: "Upload package" + uses: actions/upload-artifact@v3 + with: + name: ubuntu-20.04 + path: build/output/ubuntu-20.04/memgraph*.deb + + ubuntu-22_04: + if: ${{ github.event.inputs.build_ubuntu_22_04 }} + runs-on: [self-hosted, DockerMgBuild, X64] + timeout-minutes: 60 + steps: + - name: "Set up repository" + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Required because of release/get_version.py + - name: "Build package" + run: | + ./release/package/run.sh package ubuntu-22.04 ${{ github.event.inputs.build_type }} + - name: "Upload package" + uses: actions/upload-artifact@v3 + with: + name: ubuntu-22.04 + path: build/output/ubuntu-22.04/memgraph*.deb + + ubuntu-22_04-arm: + if: ${{ github.event.inputs.build_ubuntu_22_04_arm }} + runs-on: [self-hosted, DockerMgBuild, ARM64, strange] + timeout-minutes: 120 + steps: + - name: "Set up repository" + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Required because of release/get_version.py + - name: "Build package" + run: | + ./release/package/run.sh package ubuntu-22.04-arm ${{ github.event.inputs.build_type }} + - name: "Upload package" + uses: actions/upload-artifact@v3 + with: + name: ubuntu-22.04-aarch64 + path: build/output/ubuntu-22.04-arm/memgraph*.deb + + upload-to-s3: + # only run upload if we specified version. Allows for runs without upload + if: "${{ github.event.inputs.memgraph_version != '' }}" + needs: [centos-7, centos-9, debian-10, debian-11, docker, ubuntu-1804, ubuntu-2004, ubuntu-2204, debian-11-platform, fedora-36, amzn-2, debian-11-arm, ubuntu-2204-arm] + runs-on: ubuntu-latest + steps: + - name: Download artifacts + uses: actions/download-artifact@v3 + with: + # name: # if name input parameter is not provided, all artifacts are downloaded + # and put in directories named after each one. + path: build/output/release + - name: Upload to S3 + uses: jakejarvis/s3-sync-action@v0.5.1 + env: + AWS_S3_BUCKET: "download.memgraph.com" + AWS_ACCESS_KEY_ID: ${{ secrets.S3_AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_AWS_SECRET_ACCESS_KEY }} + AWS_REGION: "eu-west-1" + SOURCE_DIR: "build/output/release" + DEST_DIR: "memgraph/v${{ github.event.inputs.memgraph_version }}/"