diff --git a/.github/workflows/artifact.yml b/.github/workflows/artifact.yml deleted file mode 100644 index 490b4d127..000000000 --- a/.github/workflows/artifact.yml +++ /dev/null @@ -1,250 +0,0 @@ -name: Build and Upload Artifacts - -on: - workflow_dispatch: - inputs: - partner_chains_sha: - description: "partner-chains commit SHA or branch to build from" - partner-chains-tag: - description: "partner-chains release tag to append to artifact name" - required: true - create_draft_release_page: - description: "Create a draft release page" - required: false - default: "false" - -jobs: - partner-chains-linux: - runs-on: ubuntu-latest - steps: - - name: Set filename variables - id: set-filenames - run: | - echo "PARTNER_CHAINS_CLI_X86_64_LINUX=partner-chains-cli-${{ github.event.inputs.partner-chains-tag }}-x86_64-linux" >> $GITHUB_ENV - echo "PARTNER_CHAINS_NODE_X86_64_LINUX=partner-chains-node-${{ github.event.inputs.partner-chains-tag }}-x86_64-linux" >> $GITHUB_ENV - - - name: Checkout code - uses: actions/checkout@v4 - with: - ref: ${{ github.event.inputs.partner_chains_sha }} - - - name: Install protoc - run: sudo apt-get install -y protobuf-compiler - - - name: Build partner-chains-node - run: | - rustup target add x86_64-unknown-linux-gnu - cargo build -p partner-chains-node --locked --release --target x86_64-unknown-linux-gnu - cp target/x86_64-unknown-linux-gnu/release/partner-chains-node $PARTNER_CHAINS_NODE_X86_64_LINUX - chmod +x $PARTNER_CHAINS_NODE_X86_64_LINUX - - - name: Build partner-chains-cli - run: | - rustup target add x86_64-unknown-linux-gnu - cargo build -p partner-chains-cli --locked --release --target x86_64-unknown-linux-gnu - cp target/x86_64-unknown-linux-gnu/release/partner-chains-cli $PARTNER_CHAINS_CLI_X86_64_LINUX - chmod +x $PARTNER_CHAINS_CLI_X86_64_LINUX - - - name: Upload partner-chains-cli-x86_64-linux - uses: actions/upload-artifact@v4 - with: - name: ${{ env.PARTNER_CHAINS_CLI_X86_64_LINUX }} - path: ${{ env.PARTNER_CHAINS_CLI_X86_64_LINUX }} - - - name: Upload partner-chains-node-x86_64-linux - uses: actions/upload-artifact@v4 - with: - name: ${{ env.PARTNER_CHAINS_NODE_X86_64_LINUX }} - path: ${{ env.PARTNER_CHAINS_NODE_X86_64_LINUX }} - - partner-chains-macos-x86_64: - runs-on: macos-latest - steps: - - name: Set filename variables - id: set-filenames - run: | - echo "PARTNER_CHAINS_CLI_X86_64_APPLE_DARWIN=partner-chains-cli-${{ github.event.inputs.partner-chains-tag }}-x86_64-apple-darwin" >> $GITHUB_ENV - echo "PARTNER_CHAINS_NODE_X86_64_APPLE_DARWIN=partner-chains-node-${{ github.event.inputs.partner-chains-tag }}-x86_64-apple-darwin" >> $GITHUB_ENV - - - name: Checkout code - uses: actions/checkout@v4 - with: - ref: ${{ github.event.inputs.partner_chains_sha }} - - - name: Install protoc - run: | - curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v21.3/protoc-21.3-osx-x86_64.zip - unzip protoc-21.3-osx-x86_64.zip -d $HOME/protoc - sudo mv $HOME/protoc/bin/protoc /usr/local/bin/protoc - - - name: Build partner-chains-node - run: | - rustup target add x86_64-apple-darwin - cargo build -p partner-chains-node --locked --release --target x86_64-apple-darwin - cp target/x86_64-apple-darwin/release/partner-chains-node $PARTNER_CHAINS_NODE_X86_64_APPLE_DARWIN - chmod +x $PARTNER_CHAINS_NODE_X86_64_APPLE_DARWIN - - - name: Build partner-chains-cli - run: | - rustup target add x86_64-apple-darwin - cargo build -p partner-chains-cli --locked --release --target x86_64-apple-darwin - cp target/x86_64-apple-darwin/release/partner-chains-cli $PARTNER_CHAINS_CLI_X86_64_APPLE_DARWIN - chmod +x $PARTNER_CHAINS_CLI_X86_64_APPLE_DARWIN - - - name: Upload partner-chains-cli-x86_64-apple-darwin - uses: actions/upload-artifact@v4 - with: - name: ${{ env.PARTNER_CHAINS_CLI_X86_64_APPLE_DARWIN }} - path: ${{ env.PARTNER_CHAINS_CLI_X86_64_APPLE_DARWIN }} - - - name: Upload partner-chains-node-x86_64-apple-darwin - uses: actions/upload-artifact@v4 - with: - name: ${{ env.PARTNER_CHAINS_NODE_X86_64_APPLE_DARWIN }} - path: ${{ env.PARTNER_CHAINS_NODE_X86_64_APPLE_DARWIN }} - - partner-chains-macos-arm64: - runs-on: macos-latest - steps: - - name: Set filename variables - id: set-filenames - run: | - echo "PARTNER_CHAINS_CLI_AARCH64_APPLE_DARWIN=partner-chains-cli-${{ github.event.inputs.partner-chains-tag }}-aarch64-apple-darwin" >> $GITHUB_ENV - echo "PARTNER_CHAINS_NODE_AARCH64_APPLE_DARWIN=partner-chains-node-${{ github.event.inputs.partner-chains-tag }}-aarch64-apple-darwin" >> $GITHUB_ENV - - - name: Checkout code - uses: actions/checkout@v4 - with: - ref: ${{ github.event.inputs.partner_chains_sha }} - - - name: Install protoc - run: | - curl -LO https://github.com/protocolbuffers/protobuf/releases/download/v21.3/protoc-21.3-osx-aarch_64.zip - unzip protoc-21.3-osx-aarch_64.zip -d $HOME/protoc - sudo mv $HOME/protoc/bin/protoc /usr/local/bin/protoc - - - name: Build partner-chains-node - run: | - rustup target add aarch64-apple-darwin - cargo build -p partner-chains-node --locked --release --target aarch64-apple-darwin - cp target/aarch64-apple-darwin/release/partner-chains-node $PARTNER_CHAINS_NODE_AARCH64_APPLE_DARWIN - chmod +x $PARTNER_CHAINS_NODE_AARCH64_APPLE_DARWIN - - - name: Build partner-chains-cli - run: | - rustup target add aarch64-apple-darwin - cargo build -p partner-chains-cli --locked --release --target aarch64-apple-darwin - cp target/aarch64-apple-darwin/release/partner-chains-cli $PARTNER_CHAINS_CLI_AARCH64_APPLE_DARWIN - chmod +x $PARTNER_CHAINS_CLI_AARCH64_APPLE_DARWIN - - - name: Upload partner-chains-cli-aarch64-apple-darwin - uses: actions/upload-artifact@v4 - with: - name: ${{ env.PARTNER_CHAINS_CLI_AARCH64_APPLE_DARWIN }} - path: ${{ env.PARTNER_CHAINS_CLI_AARCH64_APPLE_DARWIN }} - - - name: Upload partner-chains-node-aarch64-apple-darwin - uses: actions/upload-artifact@v4 - with: - name: ${{ env.PARTNER_CHAINS_NODE_AARCH64_APPLE_DARWIN }} - path: ${{ env.PARTNER_CHAINS_NODE_AARCH64_APPLE_DARWIN }} - - release: - runs-on: ubuntu-latest - needs: [partner-chains-linux, partner-chains-macos-x86_64, partner-chains-macos-arm64] - if: ${{ github.event.inputs.create_draft_release_page == 'true' }} - steps: - - name: Set filename variables - id: set-filenames - run: | - echo "PARTNER_CHAINS_CLI_X86_64_LINUX=partner-chains-cli-${{ github.event.inputs.partner-chains-tag }}-x86_64-linux" >> $GITHUB_ENV - echo "PARTNER_CHAINS_NODE_X86_64_LINUX=partner-chains-node-${{ github.event.inputs.partner-chains-tag }}-x86_64-linux" >> $GITHUB_ENV - echo "PARTNER_CHAINS_CLI_X86_64_APPLE_DARWIN=partner-chains-cli-${{ github.event.inputs.partner-chains-tag }}-x86_64-apple-darwin" >> $GITHUB_ENV - echo "PARTNER_CHAINS_NODE_X86_64_APPLE_DARWIN=partner-chains-node-${{ github.event.inputs.partner-chains-tag }}-x86_64-apple-darwin" >> $GITHUB_ENV - echo "PARTNER_CHAINS_CLI_AARCH64_APPLE_DARWIN=partner-chains-cli-${{ github.event.inputs.partner-chains-tag }}-aarch64-apple-darwin" >> $GITHUB_ENV - echo "PARTNER_CHAINS_NODE_AARCH64_APPLE_DARWIN=partner-chains-node-${{ github.event.inputs.partner-chains-tag }}-aarch64-apple-darwin" >> $GITHUB_ENV - - - name: Download Linux CLI artifact - uses: actions/download-artifact@v4 - with: - name: ${{ env.PARTNER_CHAINS_CLI_X86_64_LINUX }} - path: artifact-linux/ - - - name: Download Linux NODE artifact - uses: actions/download-artifact@v4 - with: - name: ${{ env.PARTNER_CHAINS_NODE_X86_64_LINUX }} - path: artifact-linux/ - - - name: Download macOS x86_64 CLI artifact - uses: actions/download-artifact@v4 - with: - name: ${{ env.PARTNER_CHAINS_CLI_X86_64_APPLE_DARWIN }} - path: artifact-macos-x86_64/ - - - name: Download macOS x86_64 NODE artifact - uses: actions/download-artifact@v4 - with: - name: ${{ env.PARTNER_CHAINS_NODE_X86_64_APPLE_DARWIN }} - path: artifact-macos-x86_64/ - - - name: Download macOS ARM64 CLI artifact - uses: actions/download-artifact@v4 - with: - name: ${{ env.PARTNER_CHAINS_CLI_AARCH64_APPLE_DARWIN }} - path: artifact-macos-arm64/ - - - name: Download macOS ARM64 NODE artifact - uses: actions/download-artifact@v4 - with: - name: ${{ env.PARTNER_CHAINS_NODE_AARCH64_APPLE_DARWIN }} - path: artifact-macos-arm64/ - - - name: Check if release already exists - id: check_release - run: | - tag="${{ github.event.inputs.partner-chains-tag }}" - release_response=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ - "https://api.github.com/repos/${{ github.repository }}/releases/tags/$tag") - if echo "$release_response" | grep -q '"message": "Not Found"'; then - echo "release_exists=false" >> $GITHUB_ENV - echo "::set-output name=release_exists::false" - else - echo "release_exists=true" >> $GITHUB_ENV - echo "::set-output name=release_exists::true" - echo "release_id=$(echo $release_response | jq -r .id)" >> $GITHUB_ENV - echo "::set-output name=release_id::$(echo $release_response | jq -r .id)" - fi - - - name: Create draft release - id: create_release - if: ${{ steps.check_release.outputs.release_exists == 'false' }} - run: | - tag="${{ github.event.inputs.partner-chains-tag }}" - release_response=$(curl -s -X POST -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ - -d '{"tag_name": "'$tag'", "name": "'$tag'", "body": "Draft release for '$tag'", "draft": true}' \ - "https://api.github.com/repos/${{ github.repository }}/releases") - echo "release_id=$(echo $release_response | jq -r .id)" >> $GITHUB_ENV - echo "::set-output name=release_id::$(echo $release_response | jq -r .id)" - - - name: Upload artifacts to release - if: ${{ steps.check_release.outputs.release_exists == 'true' || steps.create_release.outputs.release_id != '' }} - run: | - release_id="${{ steps.create_release.outputs.release_id }}" - if [ -z "$release_id" ]; then - release_id="${{ steps.check_release.outputs.release_id }}" - fi - - for artifact in "artifact-linux/${{ env.PARTNER_CHAINS_CLI_X86_64_LINUX }}" \ - "artifact-linux/${{ env.PARTNER_CHAINS_NODE_X86_64_LINUX }}" \ - "artifact-macos-x86_64/${{ env.PARTNER_CHAINS_CLI_X86_64_APPLE_DARWIN }}" \ - "artifact-macos-x86_64/${{ env.PARTNER_CHAINS_NODE_X86_64_APPLE_DARWIN }}" \ - "artifact-macos-arm64/${{ env.PARTNER_CHAINS_CLI_AARCH64_APPLE_DARWIN }}" \ - "artifact-macos-arm64/${{ env.PARTNER_CHAINS_NODE_AARCH64_APPLE_DARWIN }}"; do - chmod +x "$artifact" - curl -s -X POST \ - -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ - -H "Content-Type: application/octet-stream" \ - --data-binary @"$artifact" \ - "https://uploads.github.com/repos/${{ github.repository }}/releases/$release_id/assets?name=$(basename $artifact)" - done diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index 3a75ba768..ed47a3f92 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -39,14 +39,26 @@ jobs: tag: ${{ inputs.tag }} partner-chains-smart-contracts: - uses: ./.github/workflows/modules/download-pcsc-artifact.yml - with: - release: - artifact: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + ref: ${{ inputs.sha }} - #uses: ./.github/workflows/modules/build-pcsc-artifact.yml - #with: - # sha: #TODO + - name: Extract PCSC Release Info from flake.nix + id: extract-release + run: | + echo "Extracting PCSC release version from flake.nix..." + release=$(cat flake.nix | grep -Po 'url = "github:input-output-hk/partner-chains-smart-contracts/v\K[0-9.]+(?=";)') + echo "Release version: $release" + echo "::set-output name=release::$release" + + - name: Call Download Artifact Workflow + uses: ./.github/workflows/modules/download-pcsc-artifact.yml + with: + release: ${{ steps.extract-release.outputs.release }} + artifact: "Specify-your-artifact-name-here" local-environment-tests: needs: [build-pc-artifacts, partner-chains-smart-contracts] diff --git a/.github/workflows/modules/build-pc-artifacts.yml b/.github/workflows/modules/build-pc-artifacts.yml index e742253a2..3aca0ddf1 100644 --- a/.github/workflows/modules/build-pc-artifacts.yml +++ b/.github/workflows/modules/build-pc-artifacts.yml @@ -11,15 +11,11 @@ on: required: true workflow_dispatch: inputs: - partner_chains_sha: + sha: description: "partner-chains commit SHA or branch to build from" - partner-chains-tag: + tag: description: "partner-chains release tag to append to artifact name" required: true - create_draft_release_page: - description: "Create a draft release page" - required: false - default: "false" jobs: partner-chains-linux: @@ -28,13 +24,13 @@ jobs: - name: Set filename variables id: set-filenames run: | - echo "PARTNER_CHAINS_CLI_X86_64_LINUX=partner-chains-cli-${{ github.event.inputs.partner-chains-tag }}-x86_64-linux" >> $GITHUB_ENV - echo "PARTNER_CHAINS_NODE_X86_64_LINUX=partner-chains-node-${{ github.event.inputs.partner-chains-tag }}-x86_64-linux" >> $GITHUB_ENV + echo "PARTNER_CHAINS_CLI_X86_64_LINUX=partner-chains-cli-${{ inputs.tag }}-x86_64-linux" >> $GITHUB_ENV + echo "PARTNER_CHAINS_NODE_X86_64_LINUX=partner-chains-node-${{ inputs.tag }}-x86_64-linux" >> $GITHUB_ENV - name: Checkout code uses: actions/checkout@v4 with: - ref: ${{ github.event.inputs.partner_chains_sha }} + ref: ${{ inputs.sha }} - name: Install protoc run: sudo apt-get install -y protobuf-compiler diff --git a/.github/workflows/partner-chains-node-binary-host.yml b/.github/workflows/partner-chains-node-binary-host.yml deleted file mode 100644 index b6e9acaf2..000000000 --- a/.github/workflows/partner-chains-node-binary-host.yml +++ /dev/null @@ -1,85 +0,0 @@ -name: Build partner-chains-node and partner-chains-cli and push to binary-host - -on: - - workflow_dispatch: - inputs: - push_to_binary_host: - description: "Push to binary-host" - type: boolean - required: true - -env: - SSH_AUTH_SOCK: /tmp/ssh_agent.sock - -jobs: - build-and-upload: - runs-on: ubuntu-latest - permissions: - id-token: write - contents: write - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Earthly - uses: ./.github/earthly-setup - with: - ssh_key: ${{ secrets.SUBSTRATE_REPO_SSH_KEY }} - config_tar: ${{ secrets.EARTHLY_TAR }} - - - name: Run Earthly build - run: | - export EARTHLY_OUTPUT=true - earthly +build - - - name: Extract partner-chains-node and partner-chains-cli - run: | - mkdir -p artifact - cp ./partner-chains-node ./partner-chains-cli-artifact artifact/ - - - name: Upload binaries - uses: actions/upload-artifact@v4 - with: - name: substrate-binaries - path: artifact/ - - - name: Download binaries - uses: actions/download-artifact@v4 - with: - name: substrate-binaries - path: artifact/ - - kubectl-cp-to-binary-host: - runs-on: [self-hosted, eks] - needs: build-and-upload - if: ${{ github.event.inputs.push_to_binary_host == 'true' }} - permissions: - id-token: write - contents: write - steps: - - name: Install kubectl and awscli - run: | - curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" - chmod +x ./kubectl - sudo mv ./kubectl /usr/local/bin/kubectl - sudo apt update && sudo apt install -y awscli - - - name: Configure kubectl - run: | - echo "${{ secrets.kubeconfig_base64 }}" | base64 --decode > ${{ runner.temp }}/kubeconfig.yaml - kubectl config set-cluster my-cluster --server=${{ secrets.K8S_SERVER }} --insecure-skip-tls-verify=true - kubectl config set-credentials github-actions --token=${{ secrets.K8S_SA_TOKEN }} - kubectl config set-context my-context --cluster=my-cluster --user=github-actions --namespace=default - kubectl config use-context my-context - - - name: Download binaries - uses: actions/download-artifact@v4 - with: - name: substrate-binaries - path: artifact/ - - - name: Copy binaries to binary-host - run: | - kubectl cp ./artifact/partner-chains-node binary-host:/tools/partner-chains-node -c binary-host -n sc - kubectl cp ./artifact/partner-chains-cli-artifact binary-host:/tools/partner-chains-cli -c binary-host -n sc diff --git a/.github/workflows/sidechain-main-cli-binary-host.yml b/.github/workflows/sidechain-main-cli-binary-host.yml deleted file mode 100644 index 566b4ae4e..000000000 --- a/.github/workflows/sidechain-main-cli-binary-host.yml +++ /dev/null @@ -1,109 +0,0 @@ -name: Build sidechain-main-cli and Push to EKS binary-host (optional) - -on: - workflow_dispatch: - inputs: - commit_sha: - description: "Commit SHA to build from" - required: true - default: "" - push_to_binary_host: - description: "Push to binary-host" - required: true - type: boolean - -jobs: - build-and-upload: - runs-on: [self-hosted, nixos] - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - repository: input-output-hk/partner-chains-smart-contracts - token: ${{ secrets.ACTIONS_PAT }} - ref: ${{ github.event.inputs.commit_sha }} - path: partner-chains-smart-contracts - - - name: Build - run: nix build ./partner-chains-smart-contracts#sidechain-release-bundle - - - name: Prepare Artifact - run: | - mkdir -p partner-chains-smart-contracts-artifact - cp result/* partner-chains-smart-contracts-artifact - - - name: Upload Directory as Artifact - uses: actions/upload-artifact@v4 - with: - name: partner-chains-smart-contracts-artifact - path: partner-chains-smart-contracts-artifact/ - - - name: Post-build Cleanup - run: rm -rf partner-chains-smart-contracts-artifact - - unzip-and-rename-artifact: - runs-on: ubuntu-latest - needs: build-and-upload - steps: - - name: Download sidechain-main-cli Artifact - uses: actions/download-artifact@v4 - with: - name: partner-chains-smart-contracts-artifact - path: artifact/ - - - name: Unzip Artifact - run: | - mkdir -p artifact/unzipped - unzip artifact/release.zip -d artifact/unzipped - - - name: Rename Binary - run: | - mv artifact/unzipped/sidechain-cli artifact/unzipped/sidechain-main-cli - - - name: Upload Unzipped Artifact - uses: actions/upload-artifact@v4 - with: - name: unzipped - path: artifact/unzipped - - kubectl-cp-to-binary-host: - runs-on: [self-hosted, eks] - needs: unzip-and-rename-artifact - if: ${{ github.event.inputs.push_to_binary_host }} == 'true' - permissions: - id-token: write - contents: write - steps: - - name: Install kubectl and awscli - run: | - curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" - chmod +x ./kubectl - sudo mv ./kubectl /usr/local/bin/kubectl - sudo apt update && sudo apt install -y awscli - - - name: Configure kubectl - run: | - echo "${{ secrets.kubeconfig_base64 }}" | base64 --decode > ${{ runner.temp }}/kubeconfig.yaml - kubectl config set-cluster my-cluster --server=${{ secrets.K8S_SERVER }} --insecure-skip-tls-verify=true - kubectl config set-credentials github-actions --token=${{ secrets.K8S_SA_TOKEN }} - kubectl config set-context my-context --cluster=my-cluster --user=github-actions --namespace=default - kubectl config use-context my-context - - - name: Download Unzipped Artifact - uses: actions/download-artifact@v4 - with: - name: unzipped - path: artifact/unzipped - - - name: Create SHA directory on binary-host - run: | - kubectl exec binary-host -c binary-host -n sc -- mkdir -p /tools/sidechain-main-cli/${{ github.event.inputs.commit_sha }} - - - name: Copy to binary-host - run: | - kubectl cp artifact/unzipped/sidechain-main-cli binary-host:/tools/sidechain-main-cli/${{ github.event.inputs.commit_sha }} -c binary-host -n sc - kubectl cp artifact/unzipped/node_modules binary-host:/tools/sidechain-main-cli/${{ github.event.inputs.commit_sha }} -c binary-host -n sc - - - name: Make binary executable - run: | - kubectl exec binary-host -c binary-host -n sc -- chmod +x /tools/sidechain-main-cli/${{ github.event.inputs.commit_sha }}/sidechain-main-cli