Skip to content

Commit

Permalink
Remove Ubuntu 18.04 support (#7143)
Browse files Browse the repository at this point in the history
Ubuntu 18.04 went out of support in May 2023. This change updates our build/release pipelines so that they won't produce Ubuntu 18.04 packages. It also removes Ubuntu 18.04 references generally.

_Note:_ We can merge this change to main at any point, but we shouldn't make this change in the release/1.4 branch until after November 30, 2023, which is when we documented that we'll stop producing Ubuntu 18.04 packages.

To test, I ran the CI Build pipeline to confirm that 18.04 packages are not built. Then I ran the end-to-end, nested end-to-end, and ISA-95 smoke test pipelines, and confirmed they run and pass.

## Azure IoT Edge PR checklist:
  • Loading branch information
damonbarry authored Nov 22, 2023
1 parent e45807a commit 7b3f617
Show file tree
Hide file tree
Showing 24 changed files with 86 additions and 438 deletions.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Provide a detailed set of steps to reproduce the bug.
</details>

### Device Information
* Host OS [e.g. Ubuntu 18.04, Windows Server IoT 2019]:
* Host OS [e.g. Ubuntu 22.04, Windows Server IoT 2019]:
* Architecture [e.g. amd64, arm32, arm64]:
* Container OS [e.g. Linux containers, Windows containers]:

Expand Down
56 changes: 5 additions & 51 deletions builds/e2e/e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ resources:
variables:
DisableDockerDetector: true
# A 'minimal' pipeline only runs one end-to-end test (TempSensor). This is useful for platforms or
# environments that are very similar to other platforms/environments in our matrix, Ubuntu 18.04
# with the 'docker-ce' package vs. Ubuntu 18.04 with the 'iotedge-moby' package vs. the same
# variations in Ubuntu 20.04. In these instances the platforms/environments are so similar that we
# environments that are very similar to other platforms/environments in our matrix, Ubuntu 20.04
# with the 'docker-ce' package vs. Ubuntu 20.04 with the 'iotedge-moby' package vs. the same
# variations in Ubuntu 22.04. In these instances the platforms/environments are so similar that we
# don't reasonably expect to encounter differences--if we do, it would likely manifest during
# installation, or in running a very basic test. We don't need to repeat the entire test suite.
# The 'minimal' variable defaults to 'false'; we override it in specific jobs as needed.
Expand Down Expand Up @@ -74,52 +74,6 @@ jobs:
- template: templates/e2e-clear-docker-cached-images.yaml
- template: templates/e2e-run.yaml

################################################################################
- job: ubuntu_1804_msmoby
################################################################################
displayName: Ubuntu 18.04 with iotedge-moby

pool:
name: $(pool.linux.name)
demands:
- ImageOverride -equals agent-aziotedge-ubuntu-18.04-msmoby

variables:
os: linux
arch: amd64
artifactName: iotedged-ubuntu18.04-amd64
identityServiceArtifactName: packages_ubuntu-18.04_amd64
identityServicePackageFilter: aziot-identity-service_*_amd64.deb

timeoutInMinutes: 90

steps:
- template: templates/e2e-setup.yaml
- template: templates/e2e-run.yaml

################################################################################
- job: ubuntu_1804_docker
################################################################################

displayName: Ubuntu 18.04 with Docker (minimal)

pool:
name: $(pool.linux.name)
demands:
- ImageOverride -equals agent-aziotedge-ubuntu-18.04-docker

variables:
os: linux
arch: amd64
artifactName: iotedged-ubuntu18.04-amd64
identityServiceArtifactName: packages_ubuntu-18.04_amd64
identityServicePackageFilter: aziot-identity-service_*_amd64.deb
minimal: true

steps:
- template: templates/e2e-setup.yaml
- template: templates/e2e-run.yaml

################################################################################
- job: ubuntu_2004_msmoby
################################################################################
Expand Down Expand Up @@ -315,8 +269,8 @@ jobs:
variables:
os: linux
arch: amd64
artifactName: iotedged-ubuntu18.04-amd64
identityServiceArtifactName: packages_ubuntu-18.04_amd64
artifactName: iotedged-ubuntu20.04-amd64
identityServiceArtifactName: packages_ubuntu-20.04_amd64
identityServicePackageFilter: aziot-identity-service_*_amd64.deb
# workaround, see https://github.com/Microsoft/azure-pipelines-agent/issues/2138#issuecomment-470166671
'agent.disablelogplugin.testfilepublisherplugin': true
Expand Down
16 changes: 8 additions & 8 deletions builds/e2e/isa-95-smoke-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ stages:
displayName: SettingUp level 5
timeoutInMinutes: 180
variables:
artifactName: iotedged-ubuntu18.04-amd64
identityServiceArtifactName: packages_ubuntu-18.04_amd64
artifactName: iotedged-ubuntu20.04-amd64
identityServiceArtifactName: packages_ubuntu-20.04_amd64
identityServicePackageFilter: aziot-identity-service_*_amd64.deb
level: '5'
upstreamProtocol: 'amqp'
Expand Down Expand Up @@ -93,9 +93,9 @@ stages:
condition: succeeded()
timeoutInMinutes: 180
variables:
identityServiceArtifactName: packages_ubuntu-18.04_amd64
identityServiceArtifactName: packages_ubuntu-20.04_amd64
identityServicePackageFilter: aziot-identity-service_*_amd64.deb
artifactName: iotedged-ubuntu18.04-amd64
artifactName: iotedged-ubuntu20.04-amd64
parentName: $[ dependencies.SetupVM_level5.outputs['deployIoTEdge.deviceName'] ]
parentDeviceId: $[ dependencies.SetupVM_level5.outputs['createIdentity.parentDeviceId'] ]
deploymentFile: 'nestededge_middleLayerBaseDeployment_amqp.json'
Expand Down Expand Up @@ -129,9 +129,9 @@ stages:
condition: succeeded()
timeoutInMinutes: 180
variables:
identityServiceArtifactName: packages_ubuntu-18.04_amd64
identityServiceArtifactName: packages_ubuntu-20.04_amd64
identityServicePackageFilter: aziot-identity-service_*_amd64.deb
artifactName: iotedged-ubuntu18.04-amd64
artifactName: iotedged-ubuntu20.04-amd64
parentName: $[ dependencies.SetupVM_level4.outputs['deployIoTEdge.deviceName'] ]
parentDeviceId: $[ dependencies.SetupVM_level4.outputs['createIdentity.parentDeviceId'] ]
deploymentFile: 'nestededge_isa95_smoke_test_BaseDeployment.json'
Expand Down Expand Up @@ -177,8 +177,8 @@ stages:
parentDeviceId: $[ dependencies.SetupVM_level4.outputs['createIdentity.parentDeviceId'] ]
os: linux
arch: amd64
artifactName: iotedged-ubuntu18.04-amd64
identityServiceArtifactName: packages_ubuntu-18.04_amd64
artifactName: iotedged-ubuntu20.04-amd64
identityServiceArtifactName: packages_ubuntu-20.04_amd64
identityServicePackageFilter: aziot-identity-service_*_amd64.deb
nestededge: true
proxyAddress: $(otProxy)
Expand Down
12 changes: 6 additions & 6 deletions builds/e2e/longhaul.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ jobs:
steps:
- template: templates/longhaul-setup.yaml
parameters:
edgelet.artifact.name: 'iotedged-ubuntu18.04-amd64'
edgelet.artifact.name: 'iotedged-ubuntu20.04-amd64'
images.artifact.name: '$(images.artifact.name.linux)'
aziotis.artifact.name: 'packages_ubuntu-18.04_amd64'
aziotis.artifact.name: 'packages_ubuntu-20.04_amd64'
aziotis.package.filter: 'aziot-identity-service_*_amd64.deb'
quickstart.artifactName: 'IotEdgeQuickstart.linux-x64.tar.gz'
- template: templates/longhaul-deploy.yaml
Expand Down Expand Up @@ -238,9 +238,9 @@ jobs:
steps:
- template: templates/longhaul-setup.yaml
parameters:
edgelet.artifact.name: 'iotedged-ubuntu18.04-aarch64'
edgelet.artifact.name: 'iotedged-ubuntu20.04-aarch64'
images.artifact.name: '$(images.artifact.name.linux)'
aziotis.artifact.name: 'packages_ubuntu-18.04_aarch64'
aziotis.artifact.name: 'packages_ubuntu-20.04_aarch64'
aziotis.package.filter: 'aziot-identity-service_*_arm64.deb'
quickstart.artifactName: 'IotEdgeQuickstart.linux-arm64.tar.gz'
- template: templates/longhaul-deploy.yaml
Expand Down Expand Up @@ -300,9 +300,9 @@ jobs:
steps:
- template: templates/longhaul-setup.yaml
parameters:
edgelet.artifact.name: 'iotedged-ubuntu18.04-aarch64'
edgelet.artifact.name: 'iotedged-ubuntu20.04-aarch64'
images.artifact.name: '$(images.artifact.name.linux)'
aziotis.artifact.name: 'packages_ubuntu-18.04_aarch64'
aziotis.artifact.name: 'packages_ubuntu-20.04_aarch64'
aziotis.package.filter: 'aziot-identity-service_*_arm64.deb'
quickstart.artifactName: 'IotEdgeQuickstart.linux-arm64.tar.gz'
- template: templates/longhaul-deploy.yaml
Expand Down
10 changes: 5 additions & 5 deletions builds/e2e/nested-e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ schedules:
variables:
DisableDockerDetector: true
# A 'minimal' pipeline only runs one end-to-end test (TempSensor). This is useful for platforms or
# environments that are very similar to other platforms/environments in our matrix, Ubuntu 18.04
# with the 'docker-ce' package vs. Ubuntu 18.04 with the 'iotedge-moby' package vs. the same
# variations in Ubuntu 20.04. In these instances the platforms/environments are so similar that we
# environments that are very similar to other platforms/environments in our matrix, Ubuntu 20.04
# with the 'docker-ce' package vs. Ubuntu 20.04 with the 'iotedge-moby' package vs. the same
# variations in Ubuntu 22.04. In these instances the platforms/environments are so similar that we
# don't reasonably expect to encounter differences--if we do, it would likely manifest during
# installation, or in running a very basic test. We don't need to repeat the entire test suite.
# The 'minimal' variable defaults to 'false'; we override it in specific jobs as needed.
Expand Down Expand Up @@ -64,8 +64,8 @@ stages:
iotHubName: $[ dependencies.SetupVM_level5_mqtt.outputs['createIdentity.iotHubName'] ]
os: linux
arch: amd64
artifactName: iotedged-ubuntu18.04-amd64
identityServiceArtifactName: packages_ubuntu-18.04_amd64
artifactName: iotedged-ubuntu20.04-amd64
identityServiceArtifactName: packages_ubuntu-20.04_amd64
identityServicePackageFilter: aziot-identity-service_*_amd64.deb
nestededge: true
pool:
Expand Down
21 changes: 5 additions & 16 deletions builds/e2e/proxy/configure_runner.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,15 @@ proxy="http://${1}:3128"
export http_proxy=$proxy
export https_proxy=$proxy

echo 'Installing PowerShell Core and .NET 6.0'
echo 'Installing .NET 6.0, PowerShell Core, and Moby engine'

apt-get update
apt-get install -y curl git wget apt-transport-https
wget -q 'https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb'
apt-get install -y curl git wget apt-transport-https software-properties-common
wget -q 'https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb'
dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
apt-get update
add-apt-repository universe
apt-get install -y powershell dotnet-sdk-6.0

echo 'Installing Moby engine'

curl -x $proxy 'https://packages.microsoft.com/config/ubuntu/18.04/multiarch/prod.list' > microsoft-prod.list
mv microsoft-prod.list /etc/apt/sources.list.d/

curl -x $proxy 'https://packages.microsoft.com/keys/microsoft.asc' | gpg --dearmor > microsoft.gpg
mv microsoft.gpg /etc/apt/trusted.gpg.d/

apt-get update
apt-get install -y moby-engine
apt-get install -y powershell dotnet-sdk-6.0 moby-engine

> ~/proxy-env.override.conf cat <<-EOF
[Service]
Expand Down
4 changes: 2 additions & 2 deletions builds/e2e/proxy/create-linux-vm-template.json
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,8 @@
"storageProfile": {
"imageReference": {
"publisher": "Canonical",
"offer": "UbuntuServer",
"sku": "18.04-LTS",
"offer": "0001-com-ubuntu-server-jammy",
"sku": "22_04-lts",
"version": "latest"
},
"osDisk": {
Expand Down
4 changes: 2 additions & 2 deletions builds/e2e/templates/nested-longhaul-deploy-amd64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ jobs:
variables:
parentName: $[ dependencies.SetupVM_level4_${{ parameters['upstream.protocol'] }}.outputs['deployIoTEdge.deviceName'] ]
parentDeviceId: $[ dependencies.SetupVM_level4_${{ parameters['upstream.protocol'] }}.outputs['createIdentity.parentDeviceId'] ]
edgelet.artifact.name: 'iotedged-ubuntu18.04-amd64'
identityServiceArtifactName: 'packages_ubuntu-18.04_amd64'
edgelet.artifact.name: 'iotedged-ubuntu20.04-amd64'
identityServiceArtifactName: 'packages_ubuntu-20.04_amd64'
identityServicePackageFilter: 'aziot-identity-service_*_amd64.deb'
hostPlatform: 'linux_amd64_moby'
quickstart.package.name: 'IotEdgeQuickstart.linux-x64.tar.gz'
Expand Down
8 changes: 4 additions & 4 deletions builds/e2e/templates/nested-parent-vm-setup.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ jobs:
displayName: SettingUp level 5 for ${{ parameters['upstream.protocol'] }}
timeoutInMinutes: 180
variables:
artifactName: iotedged-ubuntu18.04-amd64
identityServiceArtifactName: packages_ubuntu-18.04_amd64
artifactName: iotedged-ubuntu20.04-amd64
identityServiceArtifactName: packages_ubuntu-20.04_amd64
identityServicePackageFilter: aziot-identity-service_*_amd64.deb
level: 5
deploymentFile: "nestededge_topLayerBaseDeployment_${{ parameters['upstream.protocol'] }}.json"
Expand Down Expand Up @@ -36,9 +36,9 @@ jobs:
condition: succeeded()
timeoutInMinutes: 180
variables:
identityServiceArtifactName: packages_ubuntu-18.04_amd64
identityServiceArtifactName: packages_ubuntu-20.04_amd64
identityServicePackageFilter: aziot-identity-service_*_amd64.deb
artifactName: iotedged-ubuntu18.04-amd64
artifactName: iotedged-ubuntu20.04-amd64
parentName: $[ dependencies.SetupVM_level5_${{ parameters['upstream.protocol'] }}.outputs['deployIoTEdge.deviceName'] ]
parentDeviceId: $[ dependencies.SetupVM_level5_${{ parameters['upstream.protocol'] }}.outputs['createIdentity.parentDeviceId'] ]
deploymentFile: "${{ parameters['test.l4DeploymentFileName'] }}"
Expand Down
Loading

0 comments on commit 7b3f617

Please sign in to comment.