name: Add new implementation versions on: workflow_dispatch: schedule: # “At minute 36 past every 24th hour.” - https://crontab.guru/#36_*/24_*_*_* - cron: '36 */24 * * *' defaults: run: shell: bash permissions: contents: write pull-requests: write actions: write jobs: go: runs-on: ubuntu-latest env: DIR: perf/impl/go-libp2p REPO: libp2p/go-libp2p BRANCH: perf/go-libp2p steps: - name: Checkout test-plans uses: actions/checkout@v3 - name: Configure git run: | git fetch $BRANCH && git checkout $BRANCH && git rebase $GITHUB_REF -X theirs || git checkout -b $BRANCH git config --global user.email $GITHUB_ACTOR@users.noreply.github.com git config --global user.name $GITHUB_ACTOR - id: go uses: actions/setup-go@v3 with: go-version: stable - name: Get the latest version (local) id: local run: ls -d v* | sort -V | tail -n-1 | xargs -I{} echo "version={}" | tee -a $GITHUB_OUTPUT working-directory: ${{ env.DIR }} - name: Get the latest version (remote) id: remote env: GITHUB_TOKEN: ${{ github.token }} run: gh api repos/$REPO/releases/latest --jq '.tag_name' | xargs -I{} echo "version={}" | tee -a $GITHUB_OUTPUT - name: Add the latest version if: ${{ !startsWith(steps.remote.outputs.version, steps.local.outputs.version) }} env: LOCAL_VERSION: ${{ steps.local.outputs.version }} REMOTE_VERSION: ${{ steps.remote.outputs.version }} GO_VERSION: ${{ steps.go.outputs.go-version }} GITHUB_TOKEN: ${{ github.token }} run: | majorMinorRemoteVersion=$(echo $REMOTE_VERSION | sed 's/\.[0-9]*$//') majorMinorGoVersion=$(echo $GO_VERSION | sed 's/\.[0-9]*$//') cp -r $LOCAL_VERSION $majorMinorRemoteVersion cd $majorMinorRemoteVersion sed -i "1s/$LOCAL_VERSION/$majorMinorRemoteVersion/g" go.mod go mod tidy -go=$majorMinorGoVersion go mod tidy go get github.com/libp2p/go-libp2p@$REMOTE_VERSION git add . git commit -m "chore: add go-libp2p@$REMOTE_VERSION to $DIR" git push origin $BRANCH --force gh pr create --title "chore: add go-libp2p@$REMOTE_VERSION to $DIR" --body "This PR adds go-libp2p@$REMOTE_VERSION to $DIR" --head $BRANCH --base $GITHUB_REF gh workflow run perf.yml --ref $BRANCH working-directory: ${{ env.DIR }}