diff --git a/.github/scripts/pack-debian-apt.js b/.github/scripts/pack-debian-apt.js index ad9762022..f341d5f64 100644 --- a/.github/scripts/pack-debian-apt.js +++ b/.github/scripts/pack-debian-apt.js @@ -83,6 +83,22 @@ PATH=$PATH:$PWD/bin eval $(PATH=$PATH:$PWD/bin node -p "require('./package').scr await qq.x(`ln -s "../lib/${config.dirname}/bin/${config.bin}" "${workspace}/usr/bin/${pjson.oclif.bin}"`); await qq.x(`dpkg --build "${workspace}" "${qq.join(dist, debArch(arch), `${versionedDebBase}.deb`)}"`); } + try { + // fetch existing Packages file which needs to be modified for new version + await qq.x(`aws s3 cp s3://${pjson.oclif.update.s3.bucket}/apt/Packages Packages`, {cwd: dist, reject: false}); + const content = readFileSync("Packages"); + fs.readFile('Packages', function (err, data) { + if(err) throw err; + // check if version already exists + if(data.includes(`Version: ${debVersion}`)){ + console.log('the version ${debVersion}` is already available'); + return + } + }); + } + catch(error) { + console.log(`Cannot retrieve Packages file due to error: ${error} `); + } for (const a of arch) { await build(a); await qq.x(`apt-ftparchive packages ${debArch(a)}/ >> Packages`, {cwd: dist}); diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml index a9f0fb974..9a1fd5a40 100644 --- a/.github/workflows/acceptance-tests.yml +++ b/.github/workflows/acceptance-tests.yml @@ -189,6 +189,50 @@ jobs: if: failure() || cancelled() id: failure_debian run: echo '::set-output name=FAILURE_TAG_DEBIAN::true' + test-apt-release: + name: Wait for apt release to complete + runs-on: ubuntu-latest + needs: [ get-branch, get-tag ] + continue-on-error: true + outputs: + ACCEPTANCE_FAILURE_TAG: ${{ steps.apt.outputs.FAILURE_TAG_APT}} + steps: + - name: Checkout cli repo + uses: actions/checkout@v2 + - name: Wait for apt Release + run: source .github/scripts/trigger-and-wait.sh + env: + INPUT_WORKFLOW_FILE_NAME: apt-release.yml + INPUT_REF: ${{ needs.get-branch.outputs.branch }} + - name: Perform acceptance install and test on apt package + id: apt_acceptance_run + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + wget -qO- https://twilio-cli-prod.s3.amazonaws.com/twilio_pub.asc | sudo apt-key add - + sudo touch /etc/apt/sources.list.d/twilio.list + echo 'deb https://twilio-cli-prod.s3.amazonaws.com/apt/ /' | sudo tee /etc/apt/sources.list.d/twilio.list + sudo apt update + sudo apt install -y twilio + + ls + twilio --version + twilio api --help + .github/scripts/cmds-to-test.sh + - name: APT upgrade twilio package + run: | + sudo apt-get install --only-upgrade twilio + .github/scripts/cmds-to-test.sh + - name: APT downgrade twilio package + run: | + sudo apt-get install -y twilio=3.1.0-1 + twilio --version + .github/scripts/cmds-to-test.sh + + - name: setup apt failure output + if: failure() || cancelled() + id: failure_apt + run: echo '::set-output name=FAILURE_TAG_APT::true' test-npm-releases: name: NPM acceptance testing runs-on: ubuntu-latest @@ -262,7 +306,7 @@ jobs: run: echo '::set-output name=FAILURE_TAG_SCOOP::true' notify-complete-fail: - needs: [wait-for-brew-releases, wait-for-windows-releases, wait-for-debian-releases, wait-for-macos-releases, test-scoop-release, test-npm-releases] + needs: [wait-for-brew-releases, wait-for-windows-releases, wait-for-debian-releases, wait-for-macos-releases, test-scoop-release, test-npm-releases, test-apt-release] name: Notify Release Failed runs-on: ubuntu-latest if: ${{ contains( needs.*.outputs.ACCEPTANCE_FAILURE_TAG, 'true' ) }} @@ -278,6 +322,13 @@ jobs: SLACK_TITLE: "Twilio Cli" SLACK_MESSAGE: 'CLI acceptance workflow Failed' - name: Fail in case all jobs failed - if: ${{ ( needs.test-npm-releases.outputs.ACCEPTANCE_FAILURE_TAG == 'true' ) && ( needs.wait-for-brew-releases.outputs.ACCEPTANCE_FAILURE_TAG == 'true' ) && ( needs.wait-for-macos-releases.outputs.ACCEPTANCE_FAILURE_TAG == 'true' ) && ( needs.wait-for-windows-releases.outputs.ACCEPTANCE_FAILURE_TAG == 'true' ) && ( needs.wait-for-debian-releases.outputs.ACCEPTANCE_FAILURE_TAG == 'true') && ( needs.test-scoop-release.outputs.ACCEPTANCE_FAILURE_TAG == 'true')}} + if: | + ${{ ( needs.test-npm-releases.outputs.ACCEPTANCE_FAILURE_TAG == 'true' ) && + ( needs.wait-for-brew-releases.outputs.ACCEPTANCE_FAILURE_TAG == 'true' ) && + ( needs.wait-for-macos-releases.outputs.ACCEPTANCE_FAILURE_TAG == 'true' ) && + ( needs.wait-for-windows-releases.outputs.ACCEPTANCE_FAILURE_TAG == 'true' ) && + ( needs.wait-for-debian-releases.outputs.ACCEPTANCE_FAILURE_TAG == 'true') && + ( needs.test-scoop-release.outputs.ACCEPTANCE_FAILURE_TAG == 'true')}} + ( needs.test-apt-release.outputs.ACCEPTANCE_FAILURE_TAG} == 'true')}} run: exit 1 diff --git a/.github/workflows/apt-release.yml b/.github/workflows/apt-release.yml index 432154d93..f1f5c117b 100644 --- a/.github/workflows/apt-release.yml +++ b/.github/workflows/apt-release.yml @@ -16,7 +16,7 @@ jobs: - name: Check Out Repo uses: actions/checkout@v2 - - name: Configure AWS credentials from Test account + - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}